CGAL - 如何使用 CGAL::P olygon_mesh_processing::connected_compon

CGAL - how to use CGAL::Polygon_mesh_processing::connected_components to convert one CGAL::Surface_mesh into many?

本文关键字:CGAL mesh processing compon connected 何使用 olygon      更新时间:2023-10-16

我正在创建一个网格实用程序库,我想包含的功能之一是能够分解网格的不相交分区。为此,我正在尝试编写一个方法,该方法接收CGAL::Surface_mesh并返回一个std::vector<CGAL::Surface_mesh>,其中每个元素都是输入网格的连接组件。

我看到 CGAL 具有CGAL::Polygon_mesh_processing::connected components功能,但这似乎只是为每个面分配了一个标签,指示它是哪个组件的一部分。如何使用该操作的结果从具有相同标签的每组人脸构造新CGAL::Surface_mesh

一种方法是使用 connected_components() 的结果作为Face_filtered_graph的输入参数。我相信你可以做这样的事情:

 FCCmap fccmap = mesh.add_property_map<face_descriptor, faces_size_type> 
                 ("f:CC").first;
 faces_size_type num = PMP::connected_components(mesh,fccmap); 
 std::vector<Mesh> meshes(num);
 for(int i=0; i< num; ++i)
 {
   Filtered_graph ffg(mesh, i, fccmap);
   CGAL::copy_face_graph(ffg, meshes[i]);
 }