我可以通过以下方式找到最快的反时钟:
while (edge && edge->twin()) {
edge = edge->twin()->next()
}
但是我无法通过遍历边缘来找到第二条边缘,基本上找到另一条极端(时钟明智的边缘)
参考:http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml
答案 0 :(得分:2)
检查edge->prev()->twin()
是否存在。如果是,请去那里迭代。如果没有,edge->prev()
是你的边界半边缘。
答案 1 :(得分:0)
对于这些情况,您可以使用边界面,未渲染的虚拟面。该面的边缘形成一个环,它是形成网格边界环的边的双胞胎。这允许您像往常一样遍历pair->(检查连接到顶点和所有相邻顶点的所有边/面),其中具有边界面的每个边显然都是边界。