Geometry 如何检查一组平面多边形是否创建防水多面体

Geometry 如何检查一组平面多边形是否创建防水多面体,geometry,polyhedra,Geometry,Polyhedra,我现在想知道是否有一个通用的算法来检查一组平面多边形,而不是不必要的三角形,是否构成一个防水多面体。每个多边形都有一个方向(法向量)。一个简单的解决方案就是说是或不是。更高级的版本是指出多面体“开放”的边缘。我对如何接近多面体并不感兴趣 我想指出的是,我的“洞”并不一定很小,例如,立方体的一个面可能缺失。因此,“欠采样校正”算法似乎不是正确的方法。此外,我说的是100-1000个多边形,而不是1000000个多边形,所以计算时间应该不是问题 有什么提示吗 亲切问候,, 策展人我相信你可以使用一个

我现在想知道是否有一个通用的算法来检查一组平面多边形,而不是不必要的三角形,是否构成一个防水多面体。每个多边形都有一个方向(法向量)。一个简单的解决方案就是说是或不是。更高级的版本是指出多面体“开放”的边缘。我对如何接近多面体并不感兴趣

我想指出的是,我的“洞”并不一定很小,例如,立方体的一个面可能缺失。因此,“欠采样校正”算法似乎不是正确的方法。此外,我说的是100-1000个多边形,而不是1000000个多边形,所以计算时间应该不是问题

有什么提示吗

亲切问候,,
策展人

我相信你可以使用一个简单的拓扑测试——计算每个边在完整多边形列表中出现的次数

如果多边形集定义闭合体积的曲面,则每条边的
计数>=2
,表示每条边由(至少)两个相邻多边形共享。如果曲面是流形
count==2
则精确


count==1的边表示曲面的开放区域。

我相信您可以使用一个简单的拓扑测试——计算每条边在完整多边形列表中出现的次数

如果多边形集定义闭合体积的曲面,则每条边的
计数>=2
,表示每条边由(至少)两个相邻多边形共享。如果曲面是流形
count==2
则精确


计数=1的边表示表面的开放区域。

上述答案不包括许多情况。一个更正确(但不一定完整:我不知道)的算法是确保每个多边形(或网格/多面体)的每条边都有偶数个连接到它的面。考虑以下网格:


最近顶点和下面顶点之间的线段(线)连接到三个面(一个外三角形和两个内三角形),这三个面大于两个面。然而,这显然不是完结的。

上述答案并不涵盖许多情况。一个更正确(但不一定完整:我不知道)的算法是确保每个多边形(或网格/多面体)的每条边都有偶数个连接到它的面。考虑以下网格:

最近顶点和下面顶点之间的线段(线)连接到三个面(一个外三角形和两个内三角形),这三个面大于两个面。然而,这显然不是封闭的