2014-11-30 4 views
0

교차로에 대해 두 개의 삼각형을 테스트 한 일부 코드를 사용하고 있습니다. 나는에 문제가 있어요 코드의 일부는 다음과 같습니다 이해가 안 무엇삼각형의 모서리를 생성하는 코드

/*tr_tri_intersect3D - C1 is a vertex of triangle A. P1,P2 are the two edges originating from this vertex. 
D1 is a vertex of triangle B. P1,P2 are the two edges originating from this vertex. 
Returns zero for disjoint triangles and non-zero for intersection.*/ 

int tr_tri_intersect3D (double *C1, double *P1, double *P2, 
double *D1, double *Q1, double *Q2); 

이다, 나는이 함수에 대한 입력을 생산하기 위해 수행해야하는 일이 삼각형의 세 꼭지점이있는 경우 ?

전체 소스 코드

에서 찾을 수 있습니다 :

Triangle Triangle Code

The source code had a test function, it was: 

for (i = 0; i<10000; i++){ 
     for (j = 0; j<3; j++){ 
      for (k = 0; k<3; k++){ 
       PS[i][j][k] = drand48(); 
       QS[i][j][k] = drand48(); 
      } 
     } 
     for (j = 0; j<2; j++){ 
      for (k = 0; k<3; k++){ 
       EPS[i][j][k] = PS[i][j + 1][k] - PS[i][0][k]; 
       EQS[i][j][k] = QS[i][j + 1][k] - PS[i][0][k]; 
      } 
     } 
    } 
    double sum = 0; 
    int t0 = clock(); 
    int sums[100] = { 0 }; 
    for (j = 0; j<1000; j++) 
     for (i = 0; i<10000; i++){ 
     int res = tr_tri_intersect3D(PS[i][0], EPS[i][0], EPS[i][1], 
      QS[j][0], EQS[j][0], EQS[j][1]); 
     sums[res]++; 
     } 

이 도움이되는 경우.

+0

에서와 같이 함수를 어떻게 호출합니까? 나는 당신이 이미 가지고있는 여섯 가지 세력을 통과시킬 것이라고 생각합니다. – David

+0

코드의 주석에서 P1, P2, Q1 및 Q2의 가장자리를 묻는 것처럼 보였습니다. 꼭 꼭지점과 다르지 않습니까? – ThomYorkkke

+0

가장자리는 두 개의 정점으로 만듭니다. 가장자리와 같은 것이 없기 때문에 가장자리를 통과 할 수 없습니다. 우리가 가장자리라고 부르는 선을 만드는 두 점이 있습니다. – David

답변

1

예제 코드를 보면 가장자리가 의미하는 것은 원래의 정점에서 끝 정점까지의 벡터입니다. 세 개의 꼭지점 C1, C2, C3가있는 삼각형의 경우 두 입력 에지는 P1 = C2-C1, P2 = C3-C1

+0

좋습니다. 이 알고리즘은 삼각형의 모든 조합에서 제대로 작동하지 않는 것처럼 보이지만 입력을 피드하는 방법은 옳았습니다. – ThomYorkkke

0

일 것입니다. 테스트 코드를 읽으면 C와 D가 두 개 [3] [3] 점 1, 2, 3 및 3D x, y, z 좌표 인 9 개의 double 배열.

P1과 P2는 삼각형 C의 점 1에서 점 2와 점 3의 x, y, z 거리이며 Q1과 Q2는 점 1에서 삼각형 D의 점 2와 점 3의 x, y, z 거리입니다. (편집 : Byebyebryan 그것이 포인트 1에서 포인트 2와 3까지 x, y, z 벡터이다.) 이 두 가지는 둘 다 [3] 복식 배열입니다 (기본적으로 경계 상자 정보).

vars가 반환 값을 어떻게 든 보유하지 않는 한 Ps와 Q가 함수 내에서 계산되지 않는 이유는 알 수 없습니다.