鑑於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
我很失望,這個問題已經結束。這是一個衆所周知的編程問題,在計算機圖形學,光線追蹤,視頻遊戲等方面出現。我已經不止一次地編寫了它。這怎麼可能成爲題外話題? –