CGAL中的三角形多面体面

时间:2014-05-10 09:10:31

标签: cgal

在CGAL中有一个任意多面体(可以是凸面,凹面,甚至是有孔),我如何对其面进行三角测量,以便我可以创建OpenGL缓冲区进行渲染?

我已经看到convex_hull_3()返回一个具有三角形面的多面体,但它不会做我想要的任意多面体。

2 个答案:

答案 0 :(得分:3)

头文件<CGAL/triangulate_polyhedron.h>包含未记录的函数

template <typename Polyhedron>
void triangulate_polyhedron(Polyhedron& p)

正在使用CGAL::Exact_predicates_inexact_constructions_kernel

答案 1 :(得分:1)

多边形网格处理包为函数CGAL::Polygon_mesh_processing::triangulate_faces提供了多个重载。最简单的事情是

typedef CGAL::Simple_cartesian<float> Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron_3;

Polyhedron_3 polyhedron = load_my_polyhedron();
CGAL::Polygon_mesh_processing::triangulate_faces(polyhedron);

之后,polyhedron中的所有面都是三角形。

该函数就地修改了模型,因此必须使用支持删除的HalfedgeDS。这是默认设置,但是,例如,HalfedgeDS_vector不会这样做。

另请参阅使用Surface_mesh代替Polyhedron_3的官方示例:  Polygon_mesh_processing/triangulate_faces_example.cpp