我想检测(并关闭)封闭网格的开口、洞和凹陷部分。我知道对于一个开放的网格,可以通过找到边界边(仅属于一个三角形的边)来实现,如此处所述here。但是对于一个封闭的网格呢,这样的边界边不存在?下面是一个示例图像。盒子顶部有一个开口,而圆柱体有一个完整的孔。是否有一种算法可以检测这些东西?
这类问题属于计算拓扑学研究范畴。要将环面(或多环面)与球体区分开来,只需确定是否存在一个非边界的一维周期(用同调的术语),假设您有一个定向流形,可以通过比较相应边界算子对应的矩阵的秩/零度来完成此操作。为了修补洞,我的直觉是找到不是边界的最短循环,填充它,然后重复该过程以得到合理的结果,但我不知道如何进行算法处理。