鉴于2组点查找两个三角形是否相交或不
((X1,Y1,Z1),(X2,Y2,Z2),(X3,Y3,Z3))和
( (p1,q1,r1),(p2,q2,r2),(p3,q3,r3))在3D空间中形成三角形。
如何找出这些三角形是否相交?
这个问题的一个明显的解决方案是找到由每个三角形形成的平面方程。如果平面平行,则它们不相交。
否则,用这些平面的法向矢量找出由这些平面相交形成的直线方程。
现在,如果这条线位于两个三角形区域中,那么这两个三角形相交,否则不相交。
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
}
既然我知道怎么写上面的功能,我应该考虑什么trianglesIntersect的其他实现?
有没有更快的算法来解决这个问题?访问礼貌realtimerendering.com
尝试询问[math.stackexchange.com](http://math.stackexchange.com) )代替。 SO是编程问题。 – PengOne
http://www.applet-magic.com/trintersection.htm – Jacob
我很失望,这个问题已经结束。这是一个众所周知的编程问题,在计算机图形学,光线追踪,视频游戏等方面出现。我已经不止一次地编写了它。这怎么可能成为题外话题? –