CGAL - 如何使用 CGAL::Polygon_mesh_processing::connected_components 将一个 CGAL::Surface_mesh 转换为多个?
CGAL - how to use CGAL::Polygon_mesh_processing::connected_components to convert one CGAL::Surface_mesh into many?
我正在创建一个网格实用程序库,我想包括的功能之一是能够拆分网格的不相交分区。为此,我正在尝试编写一种接受 CGAL::Surface_mesh
和 returns 和 std::vector<CGAL::Surface_mesh>
的方法,其中每个元素都是输入网格的连接组件。
我看到 CGAL 具有 CGAL::Polygon_mesh_processing::connected components
功能,但这似乎只是为每个面分配一个标签,指示它属于哪个组件。我如何使用该操作的结果从每组具有相同标签的面构造一个新的 CGAL::Surface_mesh
?
一种方法是使用 connected_components()
的结果作为 the 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]);
}
我正在创建一个网格实用程序库,我想包括的功能之一是能够拆分网格的不相交分区。为此,我正在尝试编写一种接受 CGAL::Surface_mesh
和 returns 和 std::vector<CGAL::Surface_mesh>
的方法,其中每个元素都是输入网格的连接组件。
我看到 CGAL 具有 CGAL::Polygon_mesh_processing::connected components
功能,但这似乎只是为每个面分配一个标签,指示它属于哪个组件。我如何使用该操作的结果从每组具有相同标签的面构造一个新的 CGAL::Surface_mesh
?
一种方法是使用 connected_components()
的结果作为 the 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]);
}