亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? strech.c

?? 任意給定三維空間的點集
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * strech.C - *     \*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/#include  <stdlib.h>#include  <stdio.h>#include  <assert.h>#include  <stdlib.h>#include  <stdio.h>#include  <iostream>#include  <ctype.h>#include  <math.h>#include  <time.h>#include  <qapplication.h>#include  <assert.h>#include  <GL/glut.h>//#include  "dmalloc.h"//#include  "scape/vector3d.h"#include  "_generic.h"#include  "sarray.h"#include  "real.h"//#include  "line.h"#include  "point.h"#include  "bbox.h"#include  "ftree.h"//#include  "TreeDiam.h"//#include  "glwindow.h"#include  "glbox.h"#include  "misc.h"//#include  "terrain.h"#include  "distance.h"#include  "algorithm.h"#include  "3dsload.h"#include  "glwindow_geometry.h"#include  "sarray.t"#include  "strech.h"//#include  "bbox.h"/*--- Start of Code ---*/static void   get_line( FILE  * fl, char  * line ){    char  * out;    out = fgets( line, 1024, fl );    assert( out != NULL );}static void  transform_pnt( const H3dsVert   & v,                            Point3d  & pnt ){    pnt.setCoord( 0, v.x );    pnt.setCoord( 1, v.y );    pnt.setCoord( 2, v.z );}void  get_obj_ratio( H3dsMeshObj  & obj, double  & ratio ) {    ratio = 1;}void  get_scene_ratios( H3dsScene * scene ){    //int  verts_num;    //bool   f_first;    double  ratio, max_ratio;    max_ratio = 0;    printf( "\n\n\n\n\nScene objects: %d\n", scene->meshobjs );    for  ( int  ind = 0; ind < scene->meshobjs; ind++ ) {        H3dsMeshObj  & obj( scene->meshobjlist[ ind ] );        printf( "faces: %d\n", obj.faces );        get_obj_ratio( obj, ratio );        if  ( ( ind == 0 )  ||  (ratio > max_ratio ) ) {            max_ratio = ratio;        }    }}int        comp_vertices( const  Point3d  & a,                          const  Point3d  & b ){    if  ( a.coords[ 0 ] < b.coords[ 0 ] )        return  -1;    if  ( a.coords[ 0 ] > b.coords[ 0 ] )        return  1;    if  ( a.coords[ 1 ] < b.coords[ 1 ] )        return  -1;    if  ( a.coords[ 1 ] > b.coords[ 1 ] )        return  1;        if  ( a.coords[ 2 ] < b.coords[ 2 ] )        return  -1;    if  ( a.coords[ 2 ] > b.coords[ 2 ] )        return  1;    //printf( "bogi\n" );    return  0;   }void   get_all_vertices( H3dsScene   * scene,                          ArrPoint3d  & arr_out ){    ArrPoint3d  arr;    Point3d pnt;    arr.init( 100, 324 );        arr_out.init( 100, 366 );    for  ( int  ind = 0; ind < scene->meshobjs; ind++ ) {        H3dsMeshObj  & obj( scene->meshobjlist[ ind ] );        for  ( int  ind = 0; ind < obj.faces; ind++ ) {            H3dsFace   & face( obj.facelist[ ind ] );            H3dsVert   & v0( obj.vertlist[ face.p0 ] );            H3dsVert   & v1( obj.vertlist[ face.p1 ] );            H3dsVert   & v2( obj.vertlist[ face.p2 ] );                        transform_pnt( v0, pnt );                                arr.pushx( pnt );            transform_pnt( v1, pnt );                                arr.pushx( pnt );            transform_pnt( v2, pnt );                                arr.pushx( pnt );        }    }            arr.quickSort( comp_vertices );    for  ( int  ind = 0; ind < (arr.size() - 1); ind++ ) {        if   ( ind == 0 ) {            arr_out.pushx( arr[ ind ] );            continue;        }        if  ( ! arr[ ind ].isEqual( arr[ ind - 1 ] ) )             arr_out.pushx( arr[ ind ] );    }    for  ( int  ind = 0; ind < (arr_out.size() - 1); ind++ ) {        if  ( arr_out[ ind ].isEqual( arr_out[ ind + 1 ] ) ) {            printf( "Vertices are equal!\nBIG ERROR\n" );            printf( "ind : %d\n", ind );            arr_out[ ind ].print();            arr_out[ ind + 1 ].print();            exit( -1 );        }     }    printf( "Array size: %d\n", (int)arr.size() );}class  SceneInfo{public:    ArrPoint3d  * p_arr;    H3dsScene  * scene;    int  size;    BBox3d  bbox;        double  * nn_dist;    double  * longest_edge;       double  snap_dist, global_vertex_ratio;    void  fill_info( H3dsScene   * _scene );    int   get_pnt_ind( const Point3d  & a );    void  register_longest_edge( Point3d  & a,                                 Point3d  & b );    void  register_longest_edge_all();    void  computeRatio();    void  register_len( double  dist, double  & len_min,                        double  & len_max ) ;    void  get_longest_shortest_edge( double  & len_min,                                double  & len_max );};inline void  SceneInfo::register_len( double  dist, double  & len_min,                                      double  & len_max ) {    if  ( dist < snap_dist )         return;    if  ( dist < len_min )        len_min = dist;    if  ( dist > len_max )        len_max = dist;}void  SceneInfo::get_longest_shortest_edge( double  & len_min,                                             double  & len_max ){    //double  max_len, len;    bool   f_first;    f_first = true;    for  ( int  ind = 0; ind < scene->meshobjs; ind++ ) {        H3dsMeshObj  & obj( scene->meshobjlist[ ind ] );        for  ( int  ind = 0; ind < obj.faces; ind++ ) {            H3dsFace   & face( obj.facelist[ ind ] );            H3dsVert   & v0( obj.vertlist[ face.p0 ] );            H3dsVert   & v1( obj.vertlist[ face.p1 ] );            H3dsVert   & v2( obj.vertlist[ face.p2 ] );            Point3d  pnts[ 3 ];                        transform_pnt( v0, pnts[ 0 ] );            transform_pnt( v1, pnts[ 1 ] );            transform_pnt( v2, pnts[ 2 ] );                        if  ( f_first ) {                len_min = len_max = pnt_distance( pnts[ 0 ], pnts[ 1 ] );                f_first = false;            }            register_len( pnt_distance( pnts[ 0 ], pnts[ 1 ] ),                          len_min, len_max );            register_len( pnt_distance( pnts[ 1 ], pnts[ 2 ] ),                          len_min, len_max );            register_len( pnt_distance( pnts[ 2 ], pnts[ 0 ] ),                          len_min, len_max );        }    }    }int    SceneInfo::get_pnt_ind( const Point3d  & a ){    int  pos;        pos = p_arr->binarySearch( a, comp_vertices );    while  ( pos > 0 ) {        if  ( pnt_distance( (*p_arr)[ pos ],                            (*p_arr)[ pos - 1 ] ) < snap_dist )             pos--;        else            break;    }    return  pos;}void   SceneInfo::register_longest_edge( Point3d  & a,                                         Point3d  & b ){    int  a_ind, b_ind;    a_ind = get_pnt_ind( a );    b_ind = get_pnt_ind( b );    assert( a_ind >= 0 );    if  ( b_ind < 0 ) {        b.print();        printf( "\n");        for  ( int  ind = 0; ind < size; ind++ ) {            printf( "\n%d  ", ind );            (*p_arr)[ ind ].print();        }    }    assert( b_ind >= 0 );    double  len = pnt_distance( a, b );    if  ( len > longest_edge[ a_ind ] )        longest_edge[ a_ind ] = len;    if  ( len > longest_edge[ b_ind ] )        longest_edge[ b_ind ] = len;}void   SceneInfo::register_longest_edge_all(){    for  ( int  ind = 0; ind < scene->meshobjs; ind++ ) {        H3dsMeshObj  & obj( scene->meshobjlist[ ind ] );        for  ( int  ind = 0; ind < obj.faces; ind++ ) {            H3dsFace   & face( obj.facelist[ ind ] );            H3dsVert   & v0( obj.vertlist[ face.p0 ] );            H3dsVert   & v1( obj.vertlist[ face.p1 ] );            H3dsVert   & v2( obj.vertlist[ face.p2 ] );            Point3d  pnts[ 3 ];                        transform_pnt( v0, pnts[ 0 ] );            transform_pnt( v1, pnts[ 1 ] );            transform_pnt( v2, pnts[ 2 ] );            register_longest_edge( pnts[ 0 ], pnts[ 1 ] );            register_longest_edge( pnts[ 1 ], pnts[ 2 ] );            register_longest_edge( pnts[ 2 ], pnts[ 0 ] );        }    }}void   SceneInfo::fill_info( H3dsScene   * _scene ){    scene = _scene;    snap_dist = 0.0001;    p_arr = new  ArrPoint3d;    get_all_vertices( scene, *(p_arr) );        size = (int)p_arr->size();    // Compute bounding box    bbox.init();    for  ( int  ind = 0; ind < size; ind++ )         bbox.bound( (*p_arr)[ ind ] );    snap_dist = bbox.get_diam() / 1000000.0;    printf( "snap_dist: %g\n", snap_dist );    nn_dist = (double *)malloc( sizeof( double ) * size );    assert( nn_dist != NULL );    longest_edge = (double *)malloc( sizeof( double ) * size );    assert( longest_edge != NULL );    for  ( int  ind = 0; ind < size; ind++ ) {        nn_dist[ ind ] = 10e50;        longest_edge[ ind ] = 0;    }        printf( "computing NN... would take a while.\n" );    for  ( int  ind = 0; ind < size; ind++ ) {        if  ( ( ind & 0x7 ) == 0 )            printf( "ind: %d/%d\n", ind, size );        for  ( int  jnd = 0; jnd < size; jnd++ ) {            if  ( ind == jnd )                 continue;            double  len = pnt_distance( (*p_arr)[ ind ], (*p_arr)[ jnd ] );            if  ( len < snap_dist )                 continue;            if  ( len < nn_dist[ ind ] )                nn_dist[ ind ] = len;        }    }    //printf( "Computing longest edges for every vertex.\n" );    register_longest_edge_all();}void   SceneInfo::computeRatio(){    double  ratio, max_ratio;    max_ratio = 0;    for  ( int  ind = 0; ind < size; ind++ ) {        ratio = longest_edge[ ind ] / nn_dist[ ind ];        if  ( ind == 0 ) {            max_ratio = ratio;            continue;        }        if  ( longest_edge[ ind ] == 0 )             continue;        //printf( "%05d: %10g ", ind, ratio );        //(*p_arr)[ ind ].print();        if  ( ratio > 300.0 ) {            printf( "  XXXXX" );            printf( "\n" );            printf( "isEqual? %d\n", (int)(*p_arr)[ ind ].isEqual(                                         (*p_arr)[ ind - 1 ] ) );            printf( "\t%g\n", pnt_distance( (*p_arr)[ ind ],                                         (*p_arr)[ ind - 1 ] ) );            printf( "isEqual? %d\n", (int)(*p_arr)[ ind ].isEqual(                                         (*p_arr)[ ind + 1 ] ) );            printf( "\t%g\n", pnt_distance( (*p_arr)[ ind ],                                         (*p_arr)[ ind + 1 ] ) );            printf( "Longest_edge: %g\n", longest_edge[ ind ] );            printf( "nn dist     : %g\n", nn_dist[ ind ] );            printf( "\n\n\n\n" );        }        //else        //    printf( "\n" );        if  ( ratio > max_ratio )            max_ratio = ratio;    }    printf( "Max ratio: %g\n", max_ratio );    global_vertex_ratio = max_ratio;}SceneInfo   * CompSceneInfo( H3dsScene   * scene ){    SceneInfo  * info;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.一区二区| 男人的天堂亚洲一区| 欧美丰满高潮xxxx喷水动漫| 奇米影视在线99精品| 中文在线一区二区| 欧美一级二级三级乱码| 91蜜桃在线观看| 国产99一区视频免费| 久久精品av麻豆的观看方式| 亚洲激情图片小说视频| 国产三级欧美三级日产三级99| 欧美日韩精品免费观看视频| 99国产精品一区| 国产成人精品网址| 久久99精品久久久久久久久久久久| 欧美精品久久久久久久多人混战 | 国产不卡高清在线观看视频| 一区二区三区电影在线播| 国产日产欧美一区| 久久久精品黄色| 精品国产一二三区| 日韩免费在线观看| 欧美人伦禁忌dvd放荡欲情| 色中色一区二区| 色婷婷综合视频在线观看| 99re热视频这里只精品 | 国内精品国产成人| 理论电影国产精品| 国产一区二区三区最好精华液| 久久精品国产成人一区二区三区 | 亚洲美女屁股眼交| 亚洲国产精品自拍| 久久草av在线| 国产**成人网毛片九色| www.色精品| 欧美在线观看视频一区二区| 91精品国产一区二区三区蜜臀| 欧美精品久久一区| 久久精品人人爽人人爽| 中文字幕va一区二区三区| 亚洲色图欧洲色图| 无吗不卡中文字幕| 国产精品18久久久| 色伊人久久综合中文字幕| 欧美一区在线视频| 国产精品色一区二区三区| 日韩精品一区二区三区蜜臀| 欧美美女直播网站| 国产精品久久久久三级| 亚洲一本大道在线| 成人午夜私人影院| 日韩欧美在线影院| 玉米视频成人免费看| 国产精品一区二区在线播放| 欧美三级在线播放| 一区精品在线播放| 国产尤物一区二区| 日韩精品一区二区三区视频在线观看| 亚洲欧洲日韩在线| 成人三级伦理片| 精品成人一区二区| 午夜av一区二区三区| 成人激情免费视频| 精品国产乱码久久久久久久久| 亚洲一区二区中文在线| 成人午夜精品在线| 久久嫩草精品久久久精品| 青青草原综合久久大伊人精品优势| 不卡av免费在线观看| 国产亚洲精品资源在线26u| 日韩高清中文字幕一区| 欧美精品高清视频| 午夜天堂影视香蕉久久| 精品视频免费在线| 日韩电影一区二区三区| 日韩亚洲欧美中文三级| 首页亚洲欧美制服丝腿| 欧美日韩二区三区| 丝袜美腿亚洲色图| 欧美精品一区二区三区在线播放| 久久99久久99| 国产精品视频在线看| 99这里都是精品| 亚洲国产成人精品视频| 91精品免费在线观看| 国产专区欧美精品| 国产精品伦一区| 欧美亚洲国产一卡| 久久不见久久见中文字幕免费| 欧美电影在线免费观看| 亚洲国产成人自拍| 欧美性猛交xxxx黑人交| 奇米综合一区二区三区精品视频| 26uuu色噜噜精品一区| 成人午夜在线免费| 婷婷成人综合网| 欧美国产丝袜视频| 欧美色欧美亚洲另类二区| 九九精品一区二区| 亚洲三级小视频| 精品国产一区二区三区不卡 | 黄页视频在线91| 亚洲欧洲av一区二区三区久久| 色综合天天综合色综合av| 亚洲综合自拍偷拍| 国产女人aaa级久久久级| 在线视频综合导航| av资源站一区| 国产成人综合自拍| 蜜芽一区二区三区| 午夜一区二区三区视频| 综合久久给合久久狠狠狠97色 | 亚洲国产精品99久久久久久久久 | 久久久久久久综合| 欧美v亚洲v综合ⅴ国产v| 欧美色综合天天久久综合精品| 国产suv精品一区二区三区| 欧美a一区二区| 毛片av中文字幕一区二区| 亚洲国产你懂的| 亚洲妇女屁股眼交7| 一区二区三区中文字幕电影| 国产日本欧洲亚洲| 久久久五月婷婷| 久久亚洲免费视频| 久久婷婷综合激情| 国产欧美一区二区三区在线老狼 | 免费观看日韩av| 免费三级欧美电影| 国产一区 二区| 国产精品一区二区果冻传媒| 亚洲成在人线在线播放| 精品黑人一区二区三区久久| 91精品国产综合久久久久久漫画| 色久综合一二码| 91精品国产综合久久久久久| 欧美精品一二三| 欧美xxxxx牲另类人与| 国产日韩高清在线| 亚洲人成影院在线观看| 午夜伊人狠狠久久| 国产一区视频导航| 91小视频在线观看| 欧美精品少妇一区二区三区| 精品久久久久久久久久久久久久久久久| 精品久久一区二区三区| 国产人妖乱国产精品人妖| 亚洲精品写真福利| 美女高潮久久久| av一二三不卡影片| 日韩一区二区三区电影在线观看 | 91在线丨porny丨国产| 制服丝袜一区二区三区| 国产日产欧美一区| 青青草国产成人99久久| 成人av网在线| 久久久另类综合| 亚洲图片有声小说| 91色视频在线| 日本一区二区三区四区在线视频 | 久久成人18免费观看| 91蝌蚪porny九色| 久久久久久久国产精品影院| 亚洲曰韩产成在线| 91国内精品野花午夜精品| 国产亚洲女人久久久久毛片| 午夜精品久久久久久久| 色噜噜狠狠成人网p站| 中文字幕高清一区| 国产一区二区中文字幕| 欧美zozozo| 久久99精品国产麻豆不卡| 欧美日韩mp4| 男女男精品网站| 日韩一级视频免费观看在线| 亚洲国产日韩a在线播放性色| 色天使色偷偷av一区二区| 亚洲自拍与偷拍| 国产不卡在线播放| 91精品国产色综合久久久蜜香臀| 亚洲国产欧美在线人成| 欧美日韩一区二区三区四区| 亚洲精品午夜久久久| 欧美三电影在线| 日韩av中文字幕一区二区| 51久久夜色精品国产麻豆| 久久99精品国产麻豆婷婷| 国产亚洲一区字幕| 91日韩一区二区三区| 五月激情综合色| 日韩欧美一级二级三级 | 黄色精品一二区| 亚洲国产精品精华液ab| 色伊人久久综合中文字幕| 偷拍日韩校园综合在线| 久久一区二区三区四区| a级精品国产片在线观看| 天天爽夜夜爽夜夜爽精品视频| 欧美一卡二卡三卡四卡| 欧美中文字幕一区二区三区|