개의 삼각형이 교차 여부를 찾거나 포인트 2 세트를 제공하지
((X1, Y1, Z1), (X2, Y2, Z2), (X3, Y3, Z3)) 및
((p1, q1, r1), (p2, q2, r2), (p3, q3, r3)
이러한 삼각형이 교차하는지 여부를 어떻게 알 수 있습니까?
이 문제에 대한 한 가지 분명한 해결책은 각 삼각형에 의해 형성된 평면의 방정식을 찾는 것입니다. 비행기가 평행하다면 교차하지 않습니다.
그렇지 않으면이 평면들의 법선 벡터를 사용하여이 평면들의 교차에 의해 형성된 선 방정식을 찾으십시오.
이제이 선이 두 삼각형 영역에 놓이면이 두 삼각형이 교차하고 그렇지 않은 경우 교차합니다.
trianglesIntersect(Triangle T1, Triangle T2)
{
if(trianglesOnParallelPlanes(T1, T2))
{
return false
}
Line L1 = lineFromPlanes(planeFromTriangle(T1), planeFromTriangle(T2))
if(lineOnTriangle(T1, L1) AND lineOnTriangle(T2, L1))
{
return true
}
return false
}
위의 함수를 작성하는 방법을 알고 있으면 triangleIntersect의 다른 구현을 고려해야합니까?
이 문제를 해결하는 알고리즘이 더 빠릅니까?
[math.stackexchange.com] (http://math.stackexchange.com)) 대신. 그래서 프로그래밍 질문입니다. – PengOne
http://www.applet-magic.com/trintersection.htm – Jacob
이 질문에 대한 답이 실망했습니다. 컴퓨터 그래픽, 광선 추적, 비디오 게임에서 잘 알려진 프로그래밍 문제입니다. 나는 그것을 한 번 이상 스스로 프로그래밍했다. 어떻게 주제를 벗어날 수 있습니까? –