表面网格 - 去除边缘,循环进入无限循环CGAL

时间:2017-07-29 21:53:08

标签: c++ mesh cgal

我正在制作切片功能,可以在y长度上移除部分网格。当我尝试删除网格的移除面边缘时问题开始,它会进入无限循环。

问题出现的地方!

Publish

当我迭代时,半音,它按照应有的方式迭代,但当我尝试删除半音时,转换为

  

remove_edge(Edge_index ed)

它进入无限循环。

任何人都可以解释为什么会这样做,我该如何解决?

完整代码!

//removes edge - puts in infinite loop
BOOST_FOREACH(halfEdge_descriptor hed, halfedges_around_face(mesh.halfedge(fd), mesh)){
 edge_descriptor ed = mesh.edge(hed);
 mesh.remove_edge(ed);
}

1 个答案:

答案 0 :(得分:1)

这是一个经典错误:删除您正在迭代的元素。在这种特殊情况下,您在迭代面的边缘时删除边。您不太可能找到停止迭代的初始边缘,因此无限循环。