CGAL表面网格——去除面

CGAL surface mesh - removing face

  1. remove_face 方法会改变网格索引吗?

这段代码出现分段错误:

        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 也删除了面部半边\使它们指向 null_face?好像没有,我不明白为什么不..

谢谢。

该面确实被简单地标记为已移除,但它的迭代器因移除而失效(请记住,迭代器仅遍历未移除的元素)。

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