교차로에 대해 두 개의 삼각형을 테스트 한 일부 코드를 사용하고 있습니다. 나는에 문제가 있어요 코드의 일부는 다음과 같습니다 이해가 안 무엇삼각형의 모서리를 생성하는 코드
/*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);
이다, 나는이 함수에 대한 입력을 생산하기 위해 수행해야하는 일이 삼각형의 세 꼭지점이있는 경우 ?
전체 소스 코드
에서 찾을 수 있습니다 :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]++;
}
이 도움이되는 경우.
에서와 같이 함수를 어떻게 호출합니까? 나는 당신이 이미 가지고있는 여섯 가지 세력을 통과시킬 것이라고 생각합니다. – David
코드의 주석에서 P1, P2, Q1 및 Q2의 가장자리를 묻는 것처럼 보였습니다. 꼭 꼭지점과 다르지 않습니까? – ThomYorkkke
가장자리는 두 개의 정점으로 만듭니다. 가장자리와 같은 것이 없기 때문에 가장자리를 통과 할 수 없습니다. 우리가 가장자리라고 부르는 선을 만드는 두 점이 있습니다. – David