template<typename Graph, typename FIMap = Default, typename VIMap = Default, typename HIMap = Default>
struct CGAL::Face_filtered_graph< Graph, FIMap, VIMap, HIMap >
The class Face_filtered_graph
is an adaptor that creates a filtered view of a graph by restricting it to a subset of faces.
Contrary to boost::filtered_graph
, this class only requires a way to access the selected faces and will automatically select the edges/halfedges and vertices present in the adapted graph. A vertex is selected if it is incident to at least one selected face. An edge is selected if it is incident to at least a selected face. A halfedge is selected if its edge is selected.
Since this class is a model of the FaceGraph
concept, there is a restriction on the set of selected faces: the adapted graph must define a manifold mesh. In order to check that this condition is verified, you can use the function is_selection_valid()
.
There are two different ways to initialize this class: you can directly provide a set of selected faces, or provide a set of patch identifiers as well as a map between faces and patch identifiers. The latter option is convenient if you want to access some connected components of a graph after having called CGAL::Polygon_mesh_processing::connected_components()
, or if you want to select only faces of a given color, for example.
The documented interface of this class is limited on purpose and free functions of the concept this class is a model of must be used to manipulate it.
A BGL-like named parameter mechanism is used in the constructors of this class. Default values are available but if you need to set them, you can pass for np
CGAL::parameters::face_index_map(fim).halfedge_index_map(him).vertex_index_map(vim)
where fim
, him
, and vim
are the respective index maps. The order of the arguments is not important and any of them can be missing if the default is fine.
- Template Parameters
-
- Is model of
FaceListGraph
HalfedgeListGraph
VertexListGraph
- Examples
- BGL_surface_mesh/surface_mesh_partition.cpp, Polygon_mesh_processing/face_filtered_graph_example.cpp, and Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp.