查找三角形和多面体(由平面表示)是否相交

Find whether a triangle and polyhedron (represented by planes) intersect

我得到一个多面体,它由一个平面列表表示。由这些平面分隔的体积是实际的多面体。

我有一个三角形列表,我需要删除所有相交或包含在这个多面体中的三角形。我的想法是检查每个平面是否与三角形相交。如果确实与三角形相交,则检查表示交点的线段是否包含位于所有其他平面同一侧的点。

为了捕捉三角形完全包含的情况,我们可以只检查三角形的任何角是否包含在多面体中(通过检查该点是否位于所有平面的同一侧)。

我不确定这个解决方案是否适用于所有情况,或者是否有更优雅的解决方案。我也不确定如何确定交点的线段是否包含所有其他平面同一侧的点。

我也考虑过分离轴定理,但这需要我将多面体转换成某种不同的表示形式(因为平面是无限的),但我不确定该怎么做。

如有任何帮助,我们将不胜感激!

正如@NicoSchertler 在评论中建议的那样,一种解决方案是获取每个三角形并将其夹在所有平面上。如果没有剩余的点(或少于 3 个点,则不是三角形),则三角形与多面体相交。这似乎运作良好。