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

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

?? inhedron.c

?? 判斷點是否在多面體之中
?? C
?? 第 1 頁 / 共 2 頁
字號:
] );   }   printf("n = %3d vertices read\n",n);   putchar('\n');   return n;}/*---------------------------------------------------------------------a - b ==> c.---------------------------------------------------------------------*/void    SubVec( tPointi a, tPointi b, tPointi c ){   int i;   for( i = 0; i < DIM; i++ )      c[i] = a[i] - b[i];}/*---------------------------------------------------------------------Returns the dot product of the two input vectors.---------------------------------------------------------------------*/double	Dot( tPointi a, tPointd b ){    int i;    double sum = 0.0;    for( i = 0; i < DIM; i++ )       sum += a[i] * b[i];    return  sum;}/*---------------------------------------------------------------------Compute the cross product of (b-a)x(c-a) and place into N.---------------------------------------------------------------------*/void	NormalVec( tPointi a, tPointi b, tPointi c, tPointd N ){    N[X] = ( c[Z] - a[Z] ) * ( b[Y] - a[Y] ) -           ( b[Z] - a[Z] ) * ( c[Y] - a[Y] );    N[Y] = ( b[Z] - a[Z] ) * ( c[X] - a[X] ) -           ( b[X] - a[X] ) * ( c[Z] - a[Z] );    N[Z] = ( b[X] - a[X] ) * ( c[Y] - a[Y] ) -           ( b[Y] - a[Y] ) * ( c[X] - a[X] );}/* Reads in the number of faces of the polyhedron and their indices from stdin,    and returns the number n. */int ReadFaces( void ){  int	i,j,k, n;  int   w; /* temp storage for coordinate. */    do {    scanf( "%d", &n );    if ( n <= PMAX )      break;    printf("Error in read_vertex:  too many points; max is %d\n", PMAX);  }  while ( 1 );  printf( "Faces:\n" );  printf( "  i   i0  i1  i2\n");  for ( i = 0; i < n; i++ ) {    scanf( "%d %d %d", &Faces[i][0], &Faces[i][1], &Faces[i][2] );    printf( "%3d:%3d%4d%4d\n", i, Faces[i][0], Faces[i][1], Faces[i][2] );    /* Compute bounding box. */    /* Initialize to first vertex. */    for ( j=0; j < 3; j++ ) {       Box[i][0][j] = Vertices[ Faces[i][0] ][j];       Box[i][1][j] = Vertices[ Faces[i][0] ][j];    }    /* Check k=1,2 vertices of face. */    for ( k=1; k < 3; k++ )    for ( j=0; j < 3; j++ ) {       w = Vertices[ Faces[i][k] ][j];       if ( w < Box[i][0][j] ) Box[i][0][j] = w;       if ( w > Box[i][1][j] ) Box[i][1][j] = w;    }    /* printf("Bounding box: (%d,%d,%d);(%d,%d,%d)\n",       Box[i][0][0],       Box[i][0][1],       Box[i][0][2],       Box[i][1][0],       Box[i][1][1],       Box[i][1][2] );    */  }  printf("n = %3d faces read\n",n);  putchar('\n');  return n;}/* Assumption: p lies in the plane containing T.    Returns a char:     'V': the query point p coincides with a Vertex of triangle T.     'E': the query point p is in the relative interior of an Edge of triangle T.     'F': the query point p is in the relative interior of a Face of triangle T.     '0': the query point p does not intersect (misses) triangle T.*/char 	InTri3D( tPointi T, int m, tPointi p ){   int i;           /* Index for X,Y,Z           */   int j;           /* Index for X,Y             */   int k;           /* Index for triangle vertex */   tPointi pp;      /* projected p */   tPointi Tp[3];   /* projected T: three new vertices */   /* Project out coordinate m in both p and the triangular face */   j = 0;   for ( i = 0; i < DIM; i++ ) {     if ( i != m ) {    /* skip largest coordinate */       pp[j] = p[i];       for ( k = 0; k < 3; k++ )	Tp[k][j] = Vertices[T[k]][i];       j++;     }   }   return( InTri2D( Tp, pp ) );}char 	InTri2D( tPointi Tp[3], tPointi pp ){   int area0, area1, area2;   /* compute three AreaSign() values for pp w.r.t. each edge of the face in 2D */   area0 = AreaSign( pp, Tp[0], Tp[1] );   area1 = AreaSign( pp, Tp[1], Tp[2] );   area2 = AreaSign( pp, Tp[2], Tp[0] );   printf("area0=%d  area1=%d  area2=%d\n",area0,area1,area2);   if ( ( area0 == 0 ) && ( area1 > 0 ) && ( area2 > 0 ) ||        ( area1 == 0 ) && ( area0 > 0 ) && ( area2 > 0 ) ||        ( area2 == 0 ) && ( area0 > 0 ) && ( area1 > 0 ) )      return 'E';   if ( ( area0 == 0 ) && ( area1 < 0 ) && ( area2 < 0 ) ||        ( area1 == 0 ) && ( area0 < 0 ) && ( area2 < 0 ) ||        ( area2 == 0 ) && ( area0 < 0 ) && ( area1 < 0 ) )     return 'E';                       if ( ( area0 >  0 ) && ( area1 > 0 ) && ( area2 > 0 ) ||        ( area0 <  0 ) && ( area1 < 0 ) && ( area2 < 0 ) )     return 'F';   if ( ( area0 == 0 ) && ( area1 == 0 ) && ( area2 == 0 ) )     fprintf( stderr, "Error in InTriD\n" ), exit(EXIT_FAILURE);   if ( ( area0 == 0 ) && ( area1 == 0 ) ||        ( area0 == 0 ) && ( area2 == 0 ) ||        ( area1 == 0 ) && ( area2 == 0 ) )     return 'V';   else       return '0';  }int     AreaSign( tPointi a, tPointi b, tPointi c )  {    double area2;    area2 = ( b[0] - a[0] ) * (double)( c[1] - a[1] ) -            ( c[0] - a[0] ) * (double)( b[1] - a[1] );    /* The area should be an integer. */    if      ( area2 >  0.5 ) return  1;    else if ( area2 < -0.5 ) return -1;    else                     return  0;}                            char    SegTriInt( tPointi T, tPointi q, tPointi r, tPointd p ){    int code = '?';    int m = -1;    code = SegPlaneInt( T, q, r, p, &m );    printf("SegPlaneInt code=%c, m=%d; p=(%lf,%lf,%lf)\n", code,m,p[X],p[Y],p[Z]);    if      ( code == '0')       return '0';    else if ( code == 'q')       return InTri3D( T, m, q );    else if ( code == 'r')       return InTri3D( T, m, r );    else if ( code == 'p' )       return InPlane( T, m, q, r, p );    else if ( code == '1' )       return SegTriCross( T, q, r );    else /* Error */       return code;}char	InPlane( tPointi T, int m, tPointi q, tPointi r, tPointd p){    /* NOT IMPLEMENTED */    return 'p';}/*---------------------------------------------------------------------The signed volumes of three tetrahedra are computed, determinedby the segment qr, and each edge of the triangle.  Returns a char:   'v': the open segment includes a vertex of T.   'e': the open segment includes a point in the relative interior of an edge   of T.   'f': the open segment includes a point in the relative interior of a face   of T.   '0': the open segment does not intersect triangle T.---------------------------------------------------------------------*/char SegTriCross( tPointi T, tPointi q, tPointi r ){   int vol0, vol1, vol2;      vol0 = VolumeSign( q, Vertices[ T[0] ], Vertices[ T[1] ], r );    vol1 = VolumeSign( q, Vertices[ T[1] ], Vertices[ T[2] ], r );    vol2 = VolumeSign( q, Vertices[ T[2] ], Vertices[ T[0] ], r );    printf( "SegTriCross:  vol0 = %d; vol1 = %d; vol2 = %d\n",       vol0, vol1, vol2 );         /* Same sign: segment intersects interior of triangle. */   if ( ( ( vol0 > 0 ) && ( vol1 > 0 ) && ( vol2 > 0 ) ) ||         ( ( vol0 < 0 ) && ( vol1 < 0 ) && ( vol2 < 0 ) ) )      return 'f';      /* Opposite sign: no intersection between segment and triangle */   if ( ( ( vol0 > 0 ) || ( vol1 > 0 ) || ( vol2 > 0 ) ) &&        ( ( vol0 < 0 ) || ( vol1 < 0 ) || ( vol2 < 0 ) ) )      return '0';   else if ( ( vol0 == 0 ) && ( vol1 == 0 ) && ( vol2 == 0 ) )     fprintf( stderr, "Error 1 in SegTriCross\n" ), exit(EXIT_FAILURE);      /* Two zeros: segment intersects vertex. */   else if ( ( ( vol0 == 0 ) && ( vol1 == 0 ) ) ||              ( ( vol0 == 0 ) && ( vol2 == 0 ) ) ||              ( ( vol1 == 0 ) && ( vol2 == 0 ) ) )      return 'v';   /* One zero: segment intersects edge. */   else if ( ( vol0 == 0 ) || ( vol1 == 0 ) || ( vol2 == 0 ) )      return 'e';      else     fprintf( stderr, "Error 2 in SegTriCross\n" ), exit(EXIT_FAILURE);}int 	VolumeSign( tPointi a, tPointi b, tPointi c, tPointi d ){    double vol;   double ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz;   double bxdx, bydy, bzdz, cxdx, cydy, czdz;   ax = a[X];   ay = a[Y];   az = a[Z];   bx = b[X];   by = b[Y];   bz = b[Z];   cx = c[X];    cy = c[Y];   cz = c[Z];   dx = d[X];   dy = d[Y];   dz = d[Z];   bxdx=bx-dx;   bydy=by-dy;   bzdz=bz-dz;   cxdx=cx-dx;   cydy=cy-dy;   czdz=cz-dz;   vol =   (az-dz) * (bxdx*cydy - bydy*cxdx)         + (ay-dy) * (bzdz*cxdx - bxdx*czdz)         + (ax-dx) * (bydy*czdz - bzdz*cydy);   /* The volume should be an integer. */   if      ( vol > 0.5 )   return  1;   else if ( vol < -0.5 )  return -1;   else                    return  0;}/*  This function returns a char:    '0': the segment [ab] does not intersect (completely misses) the          bounding box surrounding the n-th triangle T.  It lies         strictly to one side of one of the six supporting planes.    '?': status unknown: the segment may or may not intersect T.*/char BoxTest ( int n, tPointi a, tPointi b ){   int i; /* Coordinate index */   int w;   for ( i=0; i < DIM; i++ ) {       w = Box[ n ][0][i]; /* min: lower left */       if ( (a[i] < w) && (b[i] < w) ) return '0';       w = Box[ n ][1][i]; /* max: upper right */       if ( (a[i] > w) && (b[i] > w) ) return '0';   }   return '?';}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一区二区| 黄色日韩三级电影| 在线观看一区不卡| 亚洲美女淫视频| 欧美午夜电影网| 日韩高清不卡一区| 久久一日本道色综合| 国产高清在线精品| 亚洲日本韩国一区| 91国偷自产一区二区三区成为亚洲经典 | 国产精品白丝jk白祙喷水网站| 久久精品亚洲乱码伦伦中文| 成人精品免费视频| 亚洲综合视频网| 欧美一级生活片| 国产精品一区不卡| 依依成人精品视频| 日韩一级完整毛片| 丁香婷婷深情五月亚洲| 一区二区激情小说| 日韩视频免费直播| 成人免费高清在线| 亚洲午夜一区二区三区| 欧美精品一区二区三区一线天视频| 成人免费av资源| 午夜精品在线看| 久久久99精品免费观看| 欧美亚洲综合网| 国产在线看一区| 亚洲国产精品综合小说图片区| 欧美本精品男人aⅴ天堂| 99re免费视频精品全部| 日韩av中文字幕一区二区三区| 欧美激情一区二区三区在线| 在线成人小视频| 99久久精品久久久久久清纯| 久久精品99国产国产精| 亚洲欧美视频一区| 久久久久久久久免费| 欧美日韩美少妇| 成人激情开心网| 精品在线观看视频| 亚洲高清视频中文字幕| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩国产123区| 99这里只有久久精品视频| 蜜桃传媒麻豆第一区在线观看| 中文字幕制服丝袜一区二区三区 | 99久久精品99国产精品 | 国产片一区二区三区| 欧美日韩一本到| 不卡视频在线看| 国产在线精品一区在线观看麻豆| 亚洲高清视频在线| 一区二区三区在线播| 日本一二三不卡| 久久精品一区二区三区四区| 欧美一区二区在线免费播放| 在线观看国产精品网站| yourporn久久国产精品| 国产成人精品一区二区三区四区 | 亚洲成人动漫在线观看| 日韩毛片视频在线看| 国产欧美日韩另类一区| 欧美xxxx老人做受| 欧美一区二区三区喷汁尤物| 欧美性xxxxxx少妇| 91久久精品日日躁夜夜躁欧美| 成人av电影在线播放| 国产一区二区不卡老阿姨| 免费成人美女在线观看.| 天天影视涩香欲综合网| 亚洲午夜羞羞片| 亚洲一区二区在线免费看| 亚洲男人天堂av| 亚洲乱码日产精品bd| 亚洲图片激情小说| 亚洲视频免费看| 亚洲欧洲制服丝袜| 亚洲激情图片一区| 亚洲一区二区精品视频| 一区二区三区四区国产精品| 一区二区三区美女| 亚洲图片一区二区| 日韩制服丝袜av| 免费成人在线播放| 精品一区二区三区在线视频| 国产一区中文字幕| 成人免费高清在线观看| 99久久国产综合色|国产精品| 91色porny在线视频| 欧美主播一区二区三区美女| 欧美精品丝袜中出| 精品久久人人做人人爰| 日本一区二区三区久久久久久久久不| 亚洲国产精品精华液ab| 亚洲精品网站在线观看| 亚洲3atv精品一区二区三区| 久久电影国产免费久久电影 | 天天色综合成人网| 久久国产精品一区二区| 国产成人精品免费视频网站| 色综合天天综合网天天狠天天| 欧美日韩综合色| 日韩视频在线一区二区| 国产日韩综合av| 亚洲激情成人在线| 蜜桃av一区二区在线观看| 国产精品自在欧美一区| 色综合一个色综合亚洲| 日韩片之四级片| 国产精品女人毛片| 午夜精品一区二区三区三上悠亚| 国内精品伊人久久久久av一坑| www.久久精品| 日韩视频免费观看高清完整版在线观看 | 欧美视频一区在线| 精品久久一区二区三区| 亚洲欧洲精品一区二区三区| 天天操天天综合网| 成人免费看的视频| 欧美肥大bbwbbw高潮| 国产精品视频九色porn| 午夜国产精品一区| 成人av在线一区二区三区| 欧美日韩精品免费观看视频| 欧美极品xxx| 青青草视频一区| 色偷偷久久一区二区三区| 精品国产免费人成在线观看| 一区二区三区四区蜜桃 | 成人精品视频网站| 日韩欧美专区在线| 一区二区三区日韩在线观看| 国产一区二区三区| 欧美绝品在线观看成人午夜影视| 国产精品久久久久久久久晋中 | 成人动漫视频在线| 日韩欧美激情一区| 亚洲综合男人的天堂| 粉嫩aⅴ一区二区三区四区| 91精品国产综合久久久久久漫画 | 一区二区三区国产精华| 国产99久久久国产精品免费看 | 久久久久久久网| 青青草原综合久久大伊人精品| 在线影视一区二区三区| 国产精品理伦片| 国产精品一区三区| 欧美videos大乳护士334| 亚洲超丰满肉感bbw| 色天使久久综合网天天| 国产精品丝袜一区| 国产盗摄精品一区二区三区在线 | 欧洲精品在线观看| 国产精品久久看| 国产成人高清视频| 久久久99精品久久| 国产毛片精品一区| 久久这里只精品最新地址| 美女诱惑一区二区| 欧美一区二区三区免费在线看| 一区二区三区电影在线播| 色一区在线观看| 亚洲精品国产a| 在线观看日韩高清av| 一区二区激情小说| 欧美人牲a欧美精品| 午夜电影一区二区三区| 日韩一区二区电影| 看片网站欧美日韩| 久久综合久久鬼色中文字| 国内精品久久久久影院薰衣草| 精品国产一区二区三区久久影院| 国内精品国产三级国产a久久| 久久久久久免费网| 成人av电影在线网| 亚洲欧美另类图片小说| 欧美影院一区二区三区| 婷婷成人激情在线网| 欧美一级黄色片| 国产老妇另类xxxxx| 日本一二三不卡| 在线免费观看成人短视频| 午夜成人在线视频| 欧美电影免费观看完整版| 国产精品一区在线| 亚洲欧美偷拍另类a∨色屁股| 欧美视频在线播放| 色狠狠av一区二区三区| 亚洲一区二区三区在线| 日韩午夜在线影院| 成人激情综合网站| 亚洲线精品一区二区三区八戒| 欧美一区二区三区成人| 国产99久久久国产精品潘金网站| 国产精品成人免费| 91麻豆精品国产91久久久使用方法| 精品一区二区在线免费观看| 中文字幕在线视频一区|