将Surface_mesh转换为Nef_polyhedron_3

时间:2015-09-07 17:52:52

标签: cgal

我试图使用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;
}

由于

1 个答案:

答案 0 :(得分:1)

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