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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? strech.c

?? 任意給定三維空間的點集
?? C
?? 第 1 頁 / 共 2 頁
字號:
    info = new SceneInfo;    info->fill_info( scene );    return  info;}void   ThreeDs_get_stats( char  * filename ){    double  len_min, len_max;    H3dsScene   * scene;    //set_global_translate( 0, 0, 0 );    //set_global_scale( 1.0 );    scene = ThreeDS_ReadFromFile( filename );    assert( scene != NULL );    get_scene_ratios( scene );    //get_scene_longest_shortest_edge( scene, len_min, len_max );    //ArrPoint3d  points;    SceneInfo   * info = CompSceneInfo( scene );    //    info->computeLongestShortestEdge();    info->computeRatio();    info->get_longest_shortest_edge( len_min, len_max );    printf( "len_min: %g   len_max: %g\n", len_min, len_max );    (void)info;    printf( "RES: [%20s]  %12g  %12g   vert#: %d\n",            filename,             len_max / len_min,            info->global_vertex_ratio,            info->size );                exit( -1 );           }int  compDouble( const double  & a, const double  & b ){    if  ( a < b )         return  1;    if  ( a > b )        return  -1;    return  0;}void  PolyModel::print_stat( const char  * filename ){    printf( "\n\n" );    printf( "Longest edge: %g  shrotest edge: %g\n", longest_edge,            shortest_edge );    global_ratio = longest_edge / shortest_edge;    printf( "global_ratio = %g\n", global_ratio );    edge_ratio = 0;    int  skip_count;    Array<double>   arr_rt;    arr_rt.init( vertices_num, 24352 );    double   max_rt;    max_rt = -1;    worst_vertex = -1;    skip_count = 0;    for  ( int  ind = 0; ind < vertices_num; ind++ ) {        double  rt;        if  ( p_dist_nn[ ind ] == 0.0 ) {            skip_count++;            continue;        }        rt = p_longest_edge[ ind ] / p_dist_nn[ ind ];        if  ( rt > max_rt ) {            worst_vertex = ind;            max_rt = rt;        }        arr_rt.pushx( rt );        if  ( rt > edge_ratio )            edge_ratio = rt;    }    printf( "%d vertices were skipped\n", skip_count );    printf( "[%-20s] se/le: %12.5g  max vert rt : %12.5g\n",            filename, global_ratio, edge_ratio );    arr_rt.quickSort( compDouble );    int  start, end;    double  limit;    end = start = 0;    while  ( end < (int)( arr_rt.size() - 1 ) ) {        limit = arr_rt[ start ] * 0.8;        end = start;        while  ( ( arr_rt[ end ] >= limit )                   &&  ( end < (int)(arr_rt.size() - 1 ) ) )            end++;        printf( "Range: %10.5g - %10.5g: %6d\n",                 arr_rt[ start ], arr_rt[ end - 1 ], end - start );        start = end;    }    //for  ( int  ind = 0; ind < 100; ind++ )    //    printf( "%d: %g\n", ind, arr_rt[ ind ] );}void  PolyModel::register_edge( int  a, int  b ){    double  len;    //printf( "registreing edge( %d, %d)  vertices: %d\n", a, b,    //        (int)vertices.size() );    len = pnt_distance( vertices[ a ], vertices[ b ] );    if  ( len > p_longest_edge[ a ] )         p_longest_edge[ a ] = len;    if  ( len > p_longest_edge[ b ] )         p_longest_edge[ b ] = len;        //printf( "bogi1\n" );    if  ( f_first_edge_registeration ) {        f_first_edge_registeration = false;        longest_edge = shortest_edge = len;    }    //printf( "bogi2\n" );    if  ( len > 0.0 ) {        if  ( len > longest_edge )            longest_edge = len;        if  ( len < shortest_edge )            shortest_edge = len;    }}void  PolyModel::compute_longest_edges(){    //printf( "computing longest edges\n" );    p_longest_edge = (double *)malloc( sizeof( double ) * vertices_num );    assert( p_longest_edge != NULL );    for  ( int  ind = 0; ind < vertices_num; ind++ )        p_longest_edge[ ind ] = 0;    for  ( int  ind = 0; ind < faces_num; ind++ ) {        //printf( "ind: %d\n", ind );        //printf( "faces.size: %d\n", (int)faces.size() );        register_edge( faces[ ind ].a, faces[ ind ].b );        register_edge( faces[ ind ].b, faces[ ind ].c );        register_edge( faces[ ind ].c, faces[ ind ].a );    }}void   PolyModel::find_bbox_nn( Point3d  & pnt,                                  int  vert_id,                                  double  & curr,                                 int  bbox_ind ){    int  start, end;        start = getBBoxStart( bbox_ind );    end   = getBBoxEnd( bbox_ind );        for  ( int  jnd = start; jnd <= end; jnd++ ) {        if  ( jnd == vert_id )             continue;        double  dist = pnt_distance( pnt, vertices[ jnd ] );        if  ( dist < curr )             curr = dist;    }}double  PolyModel::find_nn( int   vert_id ) {    Point3d  & pnt( vertices[ vert_id ] );    double  curr;    int  chunk_done;    curr = pnt_distance( pnt, vertices[ 0 ] );    chunk_done = vert_id / BBOX_CHUNK;    find_bbox_nn( pnt, vert_id, curr, chunk_done );    for  ( int  ind = 0; ind < boxes_num; ind++ ) {        if  ( ind == chunk_done )            continue;        Point3d   proj = vert_bboxes[ ind ].project( pnt );                if  ( pnt_distance( pnt, proj ) > curr )             continue;        find_bbox_nn( pnt, vert_id, curr, ind  );    }    return  curr;}void    PolyModel::find_nn_all(){    p_dist_nn = (double *)malloc( sizeof( double ) * vertices_num );    assert( p_dist_nn != NULL );    //printf( "Computing NN...\n" );    for  ( int  ind = 0; ind < vertices_num; ind++ ) {        if  ( ( ind & 0x7ff ) == 0 ) {            printf( "%7d     \r", ind );            fflush( stdout );        }        p_dist_nn[ ind ] = find_nn( ind );    }}void  PolyModel::init_vertices_bboxes(){    boxes_num = ((vertices_num - 1) / BBOX_CHUNK) + 1;    vert_bboxes.init( boxes_num, 85947 );    for  ( int  ind = 0; ind < boxes_num; ind++ ) {        int  start, end;        start = getBBoxStart( ind );        end   = getBBoxEnd( ind );        BBox3d   bb;        bb.init();        for  ( int  jnd = start; jnd <= end; jnd++ )             bb.bound( vertices[ jnd ] );        vert_bboxes.pushx( bb );    }}void  PolyModel::read_poly_file( const char  * filename ){    FILE  * fl;    char  line[ LINE_SIZE ];    int  args;    printf( "Model: %s\n", filename );    //printf( "bogi\n" );    vertices.init( 10, 3454 );    faces.init( 20, 53332 );    fl = fopen( filename, "rt" );    if  ( fl == NULL ) {        fprintf( stderr, "Unable to open file: [%s]\n",                 filename );        exit( -1 );    }    line[ 0 ] = 0;    vertices_num = faces_num = -1;    //printf( "mogi\n" );    //fflush( stdout );    while  ( ( ! feof( fl ) )               &&  ( ! str_prefix_eq( line, "end_header" ) ) ) {        get_line( fl, line );        //printf( "shogi\n" );        if  ( str_prefix_eq( line, "element vertex" ) ) {            args = sscanf( line, "element vertex %d", &vertices_num );            if  ( args < 1 ) {                fprintf( stderr, "Vertex num info non decipherable!\n" );                exit( -1 );            }            assert( vertices_num > 0 );        }                      if  ( str_prefix_eq( line, "element face" ) ) {            args = sscanf( line, "element face %d", &faces_num );            if  ( args < 1 ) {                fprintf( stderr, "Vertex num info non decipherable!\n" );                exit( -1 );            }            assert( faces_num > 0 );        }             }        if  ( feof( fl ) ) {        fprintf( stderr, "Vertex/face num info not found!\n" );        exit( -1 );    }    if  ( vertices_num < 0 ) {        printf( "Vertices # not found!\n" );        exit( -1 );    }    if  ( faces_num < 0 ) {        printf( "Faces # not found!\n" );        exit( -1 );    }    printf( "Model: Vertices #: %d  Faces #: %d\n", vertices_num, faces_num );         //printf( "Reading vertices\n" );    // read the vertices    for  ( int  ind = 0; ind < vertices_num; ind++ ) {        double  x, y, z;        get_line( fl, line );        if  ( feof( fl ) ) {            fprintf( stderr, "unexpected end of file!\n" );            exit( -1 );        }        args = sscanf( line, "%lg %lg %lg", &x, &y, &z );        Point3d  pnt;        pnt.setCoord( 0, x  );        pnt.setCoord( 1, y );        pnt.setCoord( 2, z );        vertices.pushx( pnt );    }    // read the vertices    //printf( "Reading faces\n" );    for  ( int  ind = 0; ind < faces_num; ind++ ) {        int  a, b, c, r;        get_line( fl, line );        if  ( feof( fl ) ) {            fprintf( stderr, "unexpected end of file!\n" );            exit( -1 );        }        args = sscanf( line, "%d %d %d %d", &r, &a, &b, &c );        assert( r == 3 );        FaceIds  fi;        fi.a = a;        fi.b = b;        fi.c = c;        assert( ( 0 <= a )  &&  ( a < vertices_num ) );        assert( ( 0 <= b )  &&  ( b < vertices_num ) );        assert( ( 0 <= c )  &&  ( c < vertices_num ) );         faces.pushx( fi );    }    printf( "Reading done!\n" );}bool  str_prefix_eq( char  * line, char  * prefix ){    while  ( *prefix ) {        if  ( *line != *prefix )            return  false;        line++;        prefix++;    }    return  true;}void   ply_get_stats( char  * filename ){    PolyModel  * p_model;    Timer  tm;    tm.start();    p_model = new PolyModel;        p_model->init();    p_model->read_poly_file( filename );    p_model->init_vertices_bboxes();    p_model->find_nn_all();    p_model->compute_longest_edges();    //p_model->compute_longest_edges();    p_model->print_stat( filename );    tm.end();    printf( "Time: %g\n", tm.seconds() );}void   PolyModel::computeBBox(){    modelBB.init();    for  ( int  ind = 0; ind < vertices.size(); ind++ )        modelBB.bound( vertices[ ind ] );}/* strech.C - End of File ------------------------------------------*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频中文字幕| 国产精品免费看片| 欧美日韩激情一区| 色妞www精品视频| 99国产精品久久| 99re热视频精品| 99免费精品在线| 91色porny在线视频| 日本高清不卡在线观看| 欧美影院午夜播放| 在线播放欧美女士性生活| 91麻豆精品国产91| 日韩一卡二卡三卡四卡| 久久久久综合网| 国产精品美女久久福利网站| 亚洲天堂精品视频| 天堂午夜影视日韩欧美一区二区| 午夜av电影一区| 国产一区在线观看麻豆| 国产69精品久久久久777| av激情亚洲男人天堂| 欧美优质美女网站| 欧美不卡一二三| 国产精品家庭影院| 午夜国产精品影院在线观看| 蓝色福利精品导航| 91同城在线观看| 正在播放亚洲一区| 亚洲国产精品ⅴa在线观看| 亚洲日本va午夜在线影院| 亚洲成年人影院| 国产精品一区二区三区99| 91麻豆文化传媒在线观看| 欧美日韩国产乱码电影| 久久久久久久久久久久久女国产乱| 国产精品传媒入口麻豆| 午夜不卡av在线| 成人激情综合网站| 欧美一区在线视频| 亚洲欧美日韩在线| 国产一二三精品| 欧美日韩一区高清| 国产精品护士白丝一区av| 日韩**一区毛片| 色综合天天天天做夜夜夜夜做| 在线91免费看| 中文字幕一区二区三区精华液 | 高潮精品一区videoshd| 色综合久久精品| 久久精品欧美一区二区三区麻豆 | 欧美一区二区三区四区视频| 国产精品剧情在线亚洲| 精品一区二区三区日韩| 欧美日高清视频| 亚洲一区二区偷拍精品| 成人爱爱电影网址| 国产欧美一区二区三区网站 | 一区二区三区丝袜| 国产成人日日夜夜| 久久美女艺术照精彩视频福利播放 | 精品久久久久久久久久久久包黑料 | 欧美日韩精品一区二区| 一区二区三区影院| 99久久亚洲一区二区三区青草| 日韩精品一区二区三区在线播放| 天天综合天天综合色| 99re这里只有精品视频首页| 欧美激情一区二区三区在线| 国产一区二区不卡老阿姨| 精品国产乱码久久| 精一区二区三区| 精品久久久久久综合日本欧美| 免费av网站大全久久| 欧美精品少妇一区二区三区| 亚洲一区二区综合| 欧美在线free| 午夜精品久久久久久不卡8050| 欧美日韩美少妇| 日日骚欧美日韩| 91精品国产综合久久精品性色| 天天色综合成人网| 欧美精品一二三四| 国内欧美视频一区二区| 久久久噜噜噜久久中文字幕色伊伊 | 久久草av在线| 日韩欧美视频一区| 久久99精品一区二区三区| 欧美mv日韩mv国产网站| 国产一区二区女| 国产精品久99| 欧美视频中文一区二区三区在线观看| 亚洲午夜电影网| 精品欧美一区二区在线观看| 国产jizzjizz一区二区| 中文字幕一区视频| 欧美日韩免费在线视频| 伦理电影国产精品| 国产精品久久午夜夜伦鲁鲁| 91九色最新地址| 麻豆国产精品一区二区三区| 欧美精品一区二区高清在线观看| 国产91在线|亚洲| 亚洲激情第一区| 欧美精品日韩一本| 国产九九视频一区二区三区| 国产精品电影一区二区| 欧美日韩不卡一区| 国产福利一区二区| 亚洲国产中文字幕| 欧美精品一区二区三区蜜臀| 一本久道久久综合中文字幕 | 国产精品一区在线观看你懂的| 国产精品毛片久久久久久久| 欧美日韩1区2区| 国产成人av电影在线观看| 亚洲国产欧美在线人成| 国产日产欧产精品推荐色| 欧美影院一区二区| 成人激情校园春色| 免费欧美日韩国产三级电影| 国产精品二三区| 26uuu亚洲综合色| 欧美写真视频网站| 成人美女视频在线观看| 日韩专区欧美专区| 亚洲精品一卡二卡| 久久精品视频一区二区三区| 欧美久久一二区| 99这里只有久久精品视频| 麻豆91免费看| 亚洲国产成人av好男人在线观看| 中文字幕av在线一区二区三区| 欧美日本不卡视频| 色哟哟精品一区| 99在线热播精品免费| 国产精品一二三四| 日韩国产高清在线| 亚洲国产欧美日韩另类综合| 亚洲摸摸操操av| 欧美国产一区二区| 久久久久国产精品麻豆| 欧美高清视频在线高清观看mv色露露十八 | 精品日韩欧美一区二区| 欧美在线999| 在线免费一区三区| 在线亚洲+欧美+日本专区| 成人av网站在线观看免费| 国产精品91一区二区| 韩国三级电影一区二区| 国产一区二区三区蝌蚪| 久久精品国产免费| 久久精品国产一区二区三| 日日欢夜夜爽一区| 日本aⅴ亚洲精品中文乱码| 午夜在线成人av| 视频一区二区三区入口| 婷婷丁香激情综合| 免费在线观看日韩欧美| 久久se这里有精品| 免费成人在线播放| 国内一区二区在线| 国产美女一区二区| 国产成人亚洲综合a∨婷婷| 福利电影一区二区| 99久久久久久| 欧美日韩小视频| 91精品国产综合久久香蕉麻豆| 欧美一级黄色片| 日本一区二区三级电影在线观看| 中文字幕高清不卡| 亚洲精品第一国产综合野| 亚洲第一狼人社区| 看电影不卡的网站| 成人一区二区三区在线观看| 91免费精品国自产拍在线不卡| 91在线播放网址| 欧美人狂配大交3d怪物一区 | 中文字幕久久午夜不卡| 亚洲柠檬福利资源导航| 亚洲不卡一区二区三区| 老司机精品视频在线| 波多野结衣在线aⅴ中文字幕不卡| 91香蕉视频污在线| 欧美一区二区在线免费播放| 久久综合色8888| 亚洲欧美日韩成人高清在线一区| 亚洲国产成人高清精品| 国产中文字幕精品| 欧美在线看片a免费观看| 日韩欧美一区二区久久婷婷| 亚洲视频在线观看一区| 日本女人一区二区三区| 成人av电影在线网| 日韩女优视频免费观看| 国产精品久久国产精麻豆99网站| 日韩影视精彩在线| 99精品1区2区| 精品国产一区二区国模嫣然| 一区二区三区精品在线| 九色|91porny|