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

How to find the two boundary edges of a boundary vertex in the half edge data structure?

我可以简单地找到最逆时针的:

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

但我无法通过遍历边缘找到第二条边缘,基本上找到另一个极端(顺时针边缘)

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

检查 edge->prev()->twin() 是否存在。如果是这样,就去那里迭代。如果不是,edge->prev()就是你的边界半边。

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