CGAL表面网格——去除面
CGAL surface mesh - removing face
- 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,面孔只会标记 已删除。因此,索引没有变化.发生了什么事?
- 是否 remove_face 也删除了面部半边\使它们指向 null_face?好像没有,我不明白为什么不..
谢谢。
该面确实被简单地标记为已移除,但它的迭代器因移除而失效(请记住,迭代器仅遍历未移除的元素)。
如 doc 中所述:从半边数据结构中删除面 f,而不进行任何调整。
您需要使用更高级别的功能,例如 CGAL::Euler::remove_face()
.
- 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,面孔只会标记 已删除。因此,索引没有变化.发生了什么事?
- 是否 remove_face 也删除了面部半边\使它们指向 null_face?好像没有,我不明白为什么不..
谢谢。
该面确实被简单地标记为已移除,但它的迭代器因移除而失效(请记住,迭代器仅遍历未移除的元素)。
如 doc 中所述:从半边数据结构中删除面 f,而不进行任何调整。
您需要使用更高级别的功能,例如 CGAL::Euler::remove_face()
.