将 Surface_mesh 转换为 Nef_polyhedron_3

Converting Surface_mesh to Nef_polyhedron_3

我正在尝试使用 CGAL 对网格执行一些布尔运算。

如何从 Surface_mesh 转换为 Nef_polyhedron_3?

编辑:
我试过这段代码,但我不知道如何继续...

#include <iostream>
#include <CGAL/Nef_polyhedron_3.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>

using namespace std;

typedef CGAL::Simple_cartesian<double> K;
typedef CGAL::Surface_mesh<K::Point_3> Mesh;

int main()
{
    Mesh m;
    auto a = m.add_vertex(K::Point_3(0,0,0));
    auto b = m.add_vertex(K::Point_3(0,0,0));
    auto c = m.add_vertex(K::Point_3(0,0,0));
    m.add_face(a,b,c);

    Mesh::Halfedge_range range = m.halfedges();
    for(Mesh::Halfedge_index hei : range)
    {
        // ??? <<--
        std::cout << hei << std::endl;
    }

    return 0;
}

谢谢

我认为建议的方法是改用 3d 多面体表面包。 Nef 3 documentation描述了Polyhedron_3和Nef_3之间的转换。 3d polyhedral surface package 和 surface mesh package 之间的唯一区别是,它是基于指针而不是基于索引。