在封闭的三角网格中检测开口/空洞?

7
我想检测(并关闭)封闭网格的开口、洞和凹陷部分。我知道对于一个开放的网格,可以通过找到边界边(仅属于一个三角形的边)来实现,如此处所述here
但是对于一个封闭的网格呢,这样的边界边不存在?下面是一个示例图像。盒子顶部有一个开口,而圆柱体有一个完整的孔。是否有一种算法可以检测这些东西?

enter image description here


1
对于您展示的示例,算法应该给出什么样的输出? - Dominik Mokriš
一个拓扑学家会说盒子和平面一样,但圆柱不同。 - AakashM
这些任务相当困难。对于手柄(圆柱体示例),您可能会在此处找到有趣的方法[链接1]和[链接2]。对于开口部分,您需要更具体地说明什么是开口部分。每个凹多面体都有开口吗?即,您只想找到凸包吗? - Nico Schertler
@DominikMokriš 一个由顶点组成的开口/孔列表。因此,对于立方体,它将是顶部内部4个顶点,对于圆柱体,它将是两侧内部边环顶点。 - Moody
对于图像中的立方体,凸包就足够了,但是假设一个具有一个大开口和许多小开口的体积,我最好能够确定所有的开口,并根据开口表面积填充小开口。不过我不确定这是否可行。 - Moody
显示剩余6条评论
1个回答

1
这类问题属于计算拓扑学研究范畴。要将环面(或多环面)与球体区分开来,只需确定是否存在一个非边界的一维周期(用同调的术语),假设您有一个定向流形,可以通过比较相应边界算子对应的矩阵的秩/零度来完成此操作。
为了修补洞,我的直觉是找到不是边界的最短循环,填充它,然后重复该过程以得到合理的结果,但我不知道如何进行算法处理。

2
我不会撒谎,我不明白你说的任何内容。但我猜你给了我很多术语可以搜索和阅读。 - Moody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接