我有顶点和边缘列表,用于描述平面几何形状(面是三角形)。例如:
a_______b
/|\ /
/ | \ /
e/__|__\/c
d
Verts: a, b, c, d, e
Edges: (a,b), (a,c), (a,d), (a,e), (b,c), (c,d), (d,e)
这就是我对特定平面几何形状的所有信息。在此示例中,唯一的内部边是(a,c)和(a,d)。所有其他边都是边界边。如何在算法上识别这些边界边缘(或相反地识别所有内部边缘)?
动机:如果有帮助,我正在尝试构建一个导航网格,其中一个步骤是构建一个可见性图形,我认为第一步是识别边界边缘。
答案 0 :(得分:1)
对于平面图,“外面”属性不是唯一的;您可以绘制图形以使任何面成为外面的图形,或者您甚至可以绘制图形使其具有不同的面 - 考虑您的示例图形:
也就是说,如果您知道可以绘制图形使得所有内部面都是三角形,则可以扫描边缘列表并检查它们属于多少个三角形(通过检查相邻边缘)。如果边缘只属于一个三角形,那么它就是一个外边缘。
无论如何,对我来说似乎很奇怪,你会知道图形具有这样的属性,并且不知道在同一时刻各自的平面嵌入是什么。
答案 1 :(得分:0)
我知道有点晚了。在F.E.M.社区,我们计算每个三角形的边缘,然后边界就是出现一次的边缘。如果是用稀疏矩阵完成的话(对我来说)相当快。