我有一个三角形顶点数组(多边形的面),类似于
[[[a, b, c], [d, e, f], [g, h, i]], ...]
我有一个线段,用2个3D顶点表示,比方说[[j, k, l], [m, n, o]]
。
我有一点[p, q, r]
。
我想要做的是,通过线段投影多边形上的点,并检查它是否完全切割多边形(我认为4个接触点应该足够了?我可能是错的)。如果确实如此,我需要位于边和顶点的所有交点。
我完全迷失在这里。任何指针都会受到赞赏。
答案 0 :(得分:0)
我们可以在不失一般性的情况下假设由点和点形成的三角形。线段(以下称T)位于x-y平面。 (否则,适当地旋转一切)。
我们遍历三角形面,对于任何一对面的顶点,其y坐标具有不同的符号(即对于切割xy平面的任何边),我们检查边与xy平面的交点,确保它在T内。
当且仅当所有这些检查都为真时,才认为T“完全切割多边形”。
运行时间为O(number of faces)
。
所描述的所有操作都非常简单。例如。检查某些东西是否在T的范围内,只需用两条定义T的线的方程(即从线段的点到终点)检查两个不等式。
所有具有边缘(以及顶点)的POI都可以在循环内计算 - 它只是具有x-y平面的边的POI。