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

时间:2014-05-19 07:33:41

标签: geometry polyhedra

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

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

任何提示或提示?

亲切的问候, 馆长

2 个答案:

答案 0 :(得分:3)

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

如果多边形集定义了闭合体积的表面,则每条边应该具有count>=2,表示每个边缘由(至少)两个相邻多边形共享。如果表面完全是count==2,那么

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

答案 1 :(得分:1)

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

Open mesh

最近的顶点和下面的顶点之间的线段(线)连接到3个面(外三角形中的一个和内三角形中的两个),它们大于两个面。然而,这显然没有结束。