3D Mesh:如何根据投影平面检测Surface/Mesh是否折叠

3D Mesh: How to detect if a Surface/Mesh is folded according to a Projection plane

我有一段接受网格和平面的程序 并将 3D 网格投影到平面上。 但是,该程序仅在 3D 网格不是 "folded" 根据给定平面时才能正常工作。

这里的"folded"是指3D Mesh上的至少两个3D faces/edges投影到目标平面上的两个相交或重叠的2D faces/edges。

这里有一张 3D 网格的图片用于说明。

例如在图片中,如果我将用 XY(水平)平面描绘的 3D 网格作为输入,程序运行良好。 但是,如果上面的 3D 网格是用 XZ 或 YZ(两个垂直)平面给出的,我想生成一个异常。 在给定投影平面的情况下,如何通过算法检测 3D 网格 "folded"?

如果曲面法线始终朝向某个方向,那么如果没有 'folding',则投影面将具有一致的法线方向。如果方向良好的输入网格,只需检查结果面法线是否都指向一个平面侧。如果不是,则首先通过选择一个起始面并展开它的方向来定向曲面。