我创建网格工具库,而且我想包括的功能之一是掰开网格的不相交分区的能力。为此,我试图写,取入一个CGAL::Surface_mesh
并返回一个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]);
}