如何在半边数据结构中找到边界顶点的两个边界边?

时间:2015-08-11 05:16:49

标签: data-structures graphics mesh

enter image description here

我可以通过以下方式找到最快的反时钟:

while (edge && edge->twin()) {
  edge = edge->twin()->next()
}

但是我无法通过遍历边缘来找到第二条边缘,基本上找到另一条极端(时钟明智的边缘)

参考:http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml

2 个答案:

答案 0 :(得分:2)

检查edge->prev()->twin()是否存在。如果是,请去那里迭代。如果没有,edge->prev()是你的边界半边缘。

答案 1 :(得分:0)

对于这些情况,您可以使用边界面,未渲染的虚拟面。该面的边缘形成一个环,它是形成网格边界环的边的双胞胎。这允许您像往常一样遍历pair->(检查连接到顶点和所有相邻顶点的所有边/面),其中具有边界面的每个边显然都是边界。