如何在半边数据结构中找到边界顶点的两条边界边?
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 以及所有相邻顶点),其中具有边界面的每条边显然都是边界。
我可以简单地找到最逆时针的:
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 以及所有相邻顶点),其中具有边界面的每条边显然都是边界。