找到大致2D网格的轮廓

问题描述

我有一个大概是平面的网格,我想找到其轮廓。为了找到轮廓,我遍历了网格的所有三角形,并计算了每条边的出现次数(以无序的顶点对表示)。

检查所有三角形后,每个边缘只有两个可能的值。

  • edge count = 1:边缘属于单个三角形,所以它是外边缘
  • 边缘计数= 2:边缘在两个之间共享 三角形,所以它是一个内边界

属于单个三角形(边数= 1)的边定义了网格轮廓。

如果不是要解决问题,此策略效果很好,我将尝试通过一个示例进行说明。假设我们要找到以下网格物体的轮廓。

enter image description here

如果我们将上述策略应用于此网格,它将找到定义轮廓的七个边缘-即(0,1),(1,4),(4,7),(6,7), (5,6),(2,5)和(0,2)-但它还会找到三个内部边缘,即(2,3),(3,4)和(2,4),它们仅属于每个分别为(2,3,6),(3,4,7)和(0,2,4)一个三角形。

我已经想到了以下解决方案来解决该问题。据我所知,只有当三个顶点与上面的示例在同一行上时,才会出现此问题。连接三个顶点的两个短边可以替换为连接两个外部顶点的单个长边。将此新边添加到边列表中,或者如果已经存在,则其计数器将增加1,达到值2。迭代过程(遵循边定义的路径),我应该简化边列表,最后只简化那些边列表网格轮廓上的数字应为1。

您如何看待我的方法?谢谢。

解决方法

2-3-4配置是“病理性的”,因为它破坏了图的结构。实际上,这可以看作是网格中的三角形孔。

一种可能的处理方式是列出所有单个边缘,检测重叠的边缘,然后忽略它们。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...