Given 2 set of points
((x1,y1,z1),(x2,y2,z2),(x3,y3,z3)) and
((p1,q1,r1),(p2,q2,r2),(p3,q3,r3)) each forming a triangle in 3D space.
How will you find out whether these triangles intersect or not?
One obvious solution to this problem is to find the equation of the plane formed by each triangle. If the planes are parallel, then they don't intersect.
Else, find out the equation of line formed by the intersection of these planes using the normal vectors of these planes.
Now, if this line lies in both of the triangular regions, then these two triangles intersect, otherwise not.
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
}
Given that I know how to write the above functions, what other implementations of trianglesIntersect should I consider?
Are there faster algorithms that solve this problem?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…