我试图使用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;
}
由于
答案 0 :(得分:1)
我认为建议的方法是使用3d多面体表面包。 Nef 3 documentation描述了Polyhedron_3和Nef_3之间的转换。 3d多面体表面包和表面网格包之间的唯一区别是,它是基于指针而不是基于索引。