diff --git a/Triangulation/doc/Triangulation/Concepts/RegularTriangulationTraits.h b/Triangulation/doc/Triangulation/Concepts/RegularTriangulationTraits.h new file mode 100644 index 00000000000..c1d7799e47c --- /dev/null +++ b/Triangulation/doc/Triangulation/Concepts/RegularTriangulationTraits.h @@ -0,0 +1,136 @@ + +/*! +\ingroup PkgTriangulationsConcepts +\cgalConcept + +This concept describes the geometric types and predicates required to build +a regular triangulation. It corresponds to the first template parameter of the class +`CGAL::Regular_triangulation`. + +\cgalRefines ::TriangulationTraits. + +\cgalHasModel `CGAL::Epick_d` + +\sa `TriangulationTraits` +*/ +class RegularTriangulationTraits { +public: + +/// \name Types +/// @{ + +/*! +An arithmetic field type. +*/ +typedef unspecified_type FT; + +/*! +The weighted point type. +*/ +typedef unspecified_type Weighted_point; + +/*! +The un-weighted point type. +*/ +typedef unspecified_type Bare_point; + +/*! +A predicate object that must provide the templated operator +`template Bare_point operator()(const Weighted_point & wp)`, returning +`wp` without its weight. +*/ +typedef unspecified_type Point_drop_weight_d; + +/*! +A predicate object that must provide the templated operator +`template FT operator()(const Weighted_point & wp)`, returning +the weight of `wp`. +*/ +typedef unspecified_type Point_weight_d; + +/*! +A predicate object that must provide the templated operator +`template Oriented_side operator()(ForwardIterator start, ForwardIterator end, const Point_d & p)`. +Let \f$ S \f$ be the power sphere of the weighted points in range `[start,end)`. +The operator returns: +- `ON_ORIENTED_BOUNDARY` if `p` is orthogonal to + \f$ S \f$, + +- `ON_NEGATIVE_SIDE` if `p` lies outside the oriented sphere of + the same center as \f$ S \f$ and radius \f$ \sqrt{ w_S^2 + w_p^2 }\f$, + +- `ON_POSITIVE_SIDE` if `p` lies inside this oriented sphere. + +\pre If `Dimension`=`CGAL::``Dimension_tag`, +then `std::distance(start,end)=D+1`. +The points in range +`[start,end)` must be affinely independent, i.e., the simplex must +not be flat. +*/ +typedef unspecified_type Power_test_d; + +/*! +A predicate object that must provide the templated operator +`template Oriented_side operator()(Flat_orientation_d orient, ForwardIterator start, ForwardIterator end, const Point_d & p)`. + +The points in range `[start,end)` and `p` are supposed to belong to the lower dimensional flat +whose orientation is given by `orient`. + +Let \f$ S \f$ be the power sphere of the weighted points in range `[start,end)` +in this lower dimensional flat. +The operator returns: +- `ON_ORIENTED_BOUNDARY` if `p` is orthogonal to +\f$ S \f$, + +- `ON_NEGATIVE_SIDE` if `p` lies outside the oriented sphere of +the same center as \f$ S \f$ and radius \f$ \sqrt{ w_S^2 + w_p^2 }\f$, + +- `ON_POSITIVE_SIDE` if `p` lies inside this oriented sphere. + +\pre `std::distance(start,end)=k+1` where \f$ k\f$ is the number of +points used to construct `orient`. +The points in range +`[start,end)` must be affinely independent, i.e., the simplex must +not be flat. `p` must be in the flat generated by this simplex. +*/ +typedef unspecified_type In_flat_power_test_d; + +/// @} + +/// \name Creation +/// @{ + +/*! +The default constructor. +*/ +RegularTriangulationTraits(); + +/// @} + +/// \name Operations +/// The following methods permit access to the traits class's predicates: +/// @{ + +/*! + +*/ +Point_drop_weight_d point_drop_weight_d_object() const; + +/*! + +*/ +Point_weight_d point_weight_d_object() const; + +/*! + +*/ +Power_test_d power_test_d_object() const; + +/*! + +*/ +In_flat_power_test_d in_flat_power_test_d_object() const; + +/// @} + +}; /* end RegularTriangulationTraits */