diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Concepts/PMPSizingField.h b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Concepts/PMPSizingField.h new file mode 100644 index 00000000000..5304beb3220 --- /dev/null +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Concepts/PMPSizingField.h @@ -0,0 +1,59 @@ +/// \ingroup PkgPolygonMeshProcessingConcepts +/// \cgalConcept +/// +/// The concept `PMPSizingField` defines the requirements for the sizing field +/// used in `CGAL::Polygon_mesh_processing::isotropic_remeshing()` to define +/// the target length for every individual edge during the remeshing process. + +class PMPSizingField{ +public: + +/// @name Types +/// @{ + +/// Vertex descriptor type +typedef unspecified_type vertex_descriptor; + +/// Halfedge descriptor type +typedef unspecified_type halfedge_descriptor; + +/// 3D point type +typedef unspecified_type Point_3; + +/// Polygon mesh type +typedef unspecified_type PolygonMesh; + +/// Numerical type +typedef unspecified_type FT; + +/// @} + +/// @name Functions +/// @{ + +/// called to check whether the halfedge 'h' is longer than the target edge size +/// and as such should be split. If the halfedge is longer, it returns the squared +/// length of the edge. +boost::optional is_too_long(const halfedge_descriptor h, + const PolygonMesh& pmesh) const; + +/// called to check whether the halfedge with end vertices 'va' and 'vb' is longer +/// than the target edge size and as such should be split. If the halfedge is longer, +/// it returns the squared length of the edge. +boost::optional is_too_long(const vertex_descriptor va, + const vertex_descriptor vb) const; + +/// called to check whether the halfedge 'h' should be collapsed in case it is +/// shorter than the target edge size +boost::optional is_too_short(const halfedge_descriptor h, + const PolygonMesh& pmesh) const; + +/// called to define the location of the halfedge 'h' split in case 'is_too_long' +/// returns a value +Point_3 split_placement(const halfedge_descriptor h, + const PolygonMesh& pmesh) const; + +/// @} +}; + +