mirror of https://github.com/CGAL/cgal
60 lines
2.5 KiB
C++
60 lines
2.5 KiB
C++
/// \ingroup PkgPolygonMeshProcessingConcepts
|
|
/// \cgalConcept
|
|
///
|
|
/// The concept `PMPDistanceTraits` is a refinement of the
|
|
/// concepts `AABBGeomTraits` and `SpatialSortingTraits_3`. In addition to the types required by
|
|
/// those concepts, it also requires types and functors needed by the functions `approximate_max_distance_to_point_set()`,
|
|
/// `sample_triangle_mesh()`, `approximate_Hausdorff_distance()` and `max_distance_to_triangle_mesh()`
|
|
///
|
|
/// \cgalRefines `AABBGeomTraits`
|
|
/// \cgalRefines `SpatialSortingTraits_3`
|
|
/// \cgalHasModel Any 3D Kernel is a model of this concept.
|
|
|
|
class PMPDistanceTraits{
|
|
public:
|
|
/*!
|
|
* A number type model of `Field` and `RealEmbeddable`
|
|
*/
|
|
typedef unspecified_type FT;
|
|
///
|
|
/*! 3D point type
|
|
* It must be default constructible, and can be constructed from 3 objects of type `FT`.
|
|
* `bool operator<(Point_3, Point_3)` to lexicographically compare two points must be available.
|
|
* Access to Cartesian coordinates must be possible using `Point_3::x()`, `Point_3::y(), Point_3::z()` and
|
|
* `FT operator[](int i)` with `0 <= i < 3`.
|
|
*
|
|
* There must be a specialization of `CGAL::Kernel_traits` such that
|
|
* `CGAL::Kernel_traits<Point_3>::Kernel` is a model implementing this concept.
|
|
*/
|
|
typedef unspecified_type Point_3;
|
|
|
|
/// 3D vector type
|
|
typedef unspecified_type Vector_3;
|
|
|
|
/// @name Functors
|
|
/// @{
|
|
|
|
/// Functor for computing squared area of a triangle.
|
|
/// It provides `FT operator()(const Point_3&, const Point_3&, const Point_3&) const`
|
|
/// and `FT operator()(const Triangle_3&) const` and has `FT` as result_type.
|
|
typedef unspecified_type Compute_squared_area_3;
|
|
/// Functor for constructing translated points.
|
|
/// It provides `Point_3 operator()(const Point_3 &, const Vector_3 &)`
|
|
typedef unspecified_type Construct_translated_point_3;
|
|
/// Functor for constructing vectors.
|
|
/// It provides `Vector_3 operator()(const Point_3 &, const Point_3 &)`
|
|
typedef unspecified_type Construct_vector_3;
|
|
/// Functor for constructing scaled vectors.
|
|
/// It provides `Vector_3 operator()(const Vector_3 &, const FT &)`
|
|
typedef unspecified_type Construct_scaled_vector_3;
|
|
/// @}
|
|
|
|
/// @name Functions
|
|
/// @{
|
|
Compute_squared_area_3 compute_squared_area_3_object();
|
|
Construct_translated_point_3 construct_translated_point_3_object();
|
|
Construct_vector_3 construct_vector_3_object();
|
|
Construct_scaled_vector_3 construct_scaled_vector_3_object();
|
|
/// @}
|
|
};
|