将 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 之间的唯一区别是,它是基于指针而不是基于索引。
我正在尝试使用 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 之间的唯一区别是,它是基于指针而不是基于索引。