【问题标题】:CGAL surface mesh - removing faceCGAL 表面网格 - 去除面
【发布时间】:2017-08-25 06:33:49
【问题描述】:
  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?它似乎没有这样做,我不明白为什么不这样做..

谢谢。

【问题讨论】:

    标签: mesh cgal


    【解决方案1】:

    面部确实只是简单地标记为已删除,但其迭代器因删除而无效(请记住,迭代器仅适用于未删除的元素)。

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

    【讨论】:

    • 谢谢! CGAL::Euler 正是我所需要的。最终使用了 CGAL::Euler::remove_center_vertex(),效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多