RegularTriangulationTraits concept documentation

This commit is contained in:
Clement Jamin 2015-09-04 13:15:48 +02:00
parent 0d2ea9f2f3
commit 6c0c75fb33
1 changed files with 136 additions and 0 deletions

View File

@ -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<RegularTriangulationTraits, TriangulationDataStructure>`.
\cgalRefines ::TriangulationTraits.
\cgalHasModel `CGAL::Epick_d<Dim>`
\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<typename ForwardIterator> 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<D>`,
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<typename ForwardIterator> 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 */