Functions to detect sharp edges and surface patches of polygon meshes.

template<typename PolygonMesh , typename FT , typename EdgeIsFeatureMap , typename NamedParameters > 
void  CGAL::Polygon_mesh_processing::detect_sharp_edges (PolygonMesh &pmesh, FT angle_in_deg, EdgeIsFeatureMap edge_is_feature_map, const NamedParameters &np) 
 detects and marks the edges that are considered to be sharp with respect to the given angle bound. More...


template<typename PolygonMesh , typename PatchIdMap , typename VertexIncidentPatchesMap , typename EdgeIsFeatureMap > 
void  CGAL::Polygon_mesh_processing::detect_vertex_incident_patches (PolygonMesh &pmesh, const PatchIdMap patch_id_map, VertexIncidentPatchesMap vertex_incident_patches_map, const EdgeIsFeatureMap edge_is_feature_map) 
 collects the surface patches of the faces incident to each vertex of the input polygon mesh. More...


template<typename PolygonMesh , typename FT , typename EdgeIsFeatureMap , typename PatchIdMap , typename NamedParameters > 
boost::graph_traits< PolygonMesh >::faces_size_type  CGAL::Polygon_mesh_processing::sharp_edges_segmentation (PolygonMesh &pmesh, FT angle_in_deg, EdgeIsFeatureMap edge_is_feature_map, PatchIdMap patch_id_map, const NamedParameters &np) 
 This function calls successively CGAL::Polygon_mesh_processing::detect_sharp_edges() , CGAL::Polygon_mesh_processing::connected_components() and CGAL::Polygon_mesh_processing::detect_vertex_incident_patches() More...


◆ detect_sharp_edges()
template<typename PolygonMesh , typename FT , typename EdgeIsFeatureMap , typename NamedParameters >
void CGAL::Polygon_mesh_processing::detect_sharp_edges 
( 
PolygonMesh & 
pmesh, 


FT 
angle_in_deg, 


EdgeIsFeatureMap 
edge_is_feature_map, 


const NamedParameters & 
np 

) 
 
#include <CGAL/Polygon_mesh_processing/detect_features.h>
detects and marks the edges that are considered to be sharp with respect to the given angle bound.
angle_in_deg
gives the maximum angle (in degrees) between the two normal vectors of adjacent triangles. For an edge of the input polygon mesh, if the angle between the two normal vectors of its incident facets is bigger than the given bound, then the edge is marked as being a feature edge.
Also computes the number of sharp edges incident to each vertex, if vertex_feature_degree_map
is provided.
 Template Parameters

PolygonMesh  a model of HalfedgeListGraph 
FT  a number type. It is either deduced from the geom_traits Named Parameters if provided, or from the geometric traits class deduced from the point property map of PolygonMesh . 
EdgeIsFeatureMap  a model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh>::edge_descriptor as key type and bool as value type. It must be default constructible. 
NamedParameters  a sequence of Named Parameters 
 Parameters

pmesh  the polygon mesh 
angle_in_deg  the dihedral angle bound 
edge_is_feature_map  the property map that will contain the sharpornot status of each edge of pmesh 
np  optional Named Parameters, amongst those described below 
 Named Parameters

 Examples:
 Polygon_mesh_processing/mesh_smoothing_example.cpp.
◆ detect_vertex_incident_patches()
template<typename PolygonMesh , typename PatchIdMap , typename VertexIncidentPatchesMap , typename EdgeIsFeatureMap >
void CGAL::Polygon_mesh_processing::detect_vertex_incident_patches 
( 
PolygonMesh & 
pmesh, 


const PatchIdMap 
patch_id_map, 


VertexIncidentPatchesMap 
vertex_incident_patches_map, 


const EdgeIsFeatureMap 
edge_is_feature_map 

) 
 
#include <CGAL/Polygon_mesh_processing/detect_features.h>
collects the surface patches of the faces incident to each vertex of the input polygon mesh.
 Template Parameters

PolygonMesh  a model of HalfedgeListGraph 
PatchIdMap  a model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::face_descriptor as key type and the desired patch id, model of CopyConstructible as value type. 
VertexIncidentPatchesMap  a model of mutable LvaluePropertyMap with boost::graph_traits<PolygonMesh>::vertex_descriptor as key type. Its value type must be a container of boost::property_traits<PatchIdMap>::value_type and have a function insert() . A std::set or a boost::unordered_set are recommended, as a patch index may be inserted several times. 
EdgeIsFeatureMap  a model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::edge_descriptor as key type and bool as value type. 
 Parameters

pmesh  the polygon mesh 
patch_id_map  the property map containing the surface patch ids for the faces of pmesh . It must be already filled. 
vertex_incident_patches_map  a property map that will contain the patch ids of all the faces incident to each vertex of pmesh . 
edge_is_feature_map  a filled property map that will contain the sharpornot status of each edge of pmesh 
 See also
CGAL::Polygon_mesh_processing::sharp_edges_segmentation()
◆ sharp_edges_segmentation()
template<typename PolygonMesh , typename FT , typename EdgeIsFeatureMap , typename PatchIdMap , typename NamedParameters >
boost::graph_traits<PolygonMesh>::faces_size_type CGAL::Polygon_mesh_processing::sharp_edges_segmentation 
( 
PolygonMesh & 
pmesh, 


FT 
angle_in_deg, 


EdgeIsFeatureMap 
edge_is_feature_map, 


PatchIdMap 
patch_id_map, 


const NamedParameters & 
np 

) 
 