CGAL表面网格 - 去除面部

时间:2017-08-25 06:33:50

标签: mesh cgal

  1. remove_face方法是否会更改网格索引?
  2. 我的代码出现了分段错误:

            auto face_iterator = m.faces_around_target(m.halfedge(v3));
    
                for (auto i=face_iterator.begin(); i!=face_iterator.end(); i++) {
                    m.remove_face(*i);
                }
    

    根据我对文档的理解,只要我不调用collect_garbage,面部只会被标记为被移除。因此不会对索引进行任何更改。发生了什么事?

    1. remove_face,还删除face halfges \使它们指向null_face?它似乎没有这样做,我不明白为什么不......
    2. 谢谢。

1 个答案:

答案 0 :(得分:1)

这个面确实被标记为已删除但是它的迭代器因删除而失效(请记住,迭代器仅在未删除的元素上运行)。

doc中所述:从halfedge数据结构中删除face f而不进行任何调整。 您需要使用更高级别的功能,例如CGAL::Euler::remove_face()