mirror of https://github.com/CGAL/cgal
107 lines
4.3 KiB
TeX
107 lines
4.3 KiB
TeX
\begin{ccRefConcept}{PureComplexTraits}
|
|
|
|
\ccDefinition
|
|
|
|
The concept \ccRefName\ describes the various types and functions that a class
|
|
has to provide as the first parameter (\ccc{PCTraits}) to the class template
|
|
\ccc{Pure_complex<PCTraits, PCDS>}. It brings the geometric ingredient to the
|
|
definition of a pure complex, while the combinatorial ingredient is brought by
|
|
the second template parameter, \ccc{PCDS}.
|
|
|
|
\ccTypes
|
|
|
|
\ccNestedType{Point_d}%
|
|
{A type representing a point in euclidean space.}
|
|
|
|
\ccNestedType{Orientation_d}{A predicate object that must provide the
|
|
templated operator\\\ccc{template<typename ForwardIterator> Orientation
|
|
operator()(ForwardIterator start, ForwardIterator end)}.\\The operator returns
|
|
\ccc{POSITIVE}, if the simplex defined by the points in the range \ccc{[start,
|
|
end)} has a positive orientation, \emph{i.e.}, the last point \ccc{p} of the
|
|
range lies on the positive side of the oriented hyperplane \ccc{h} defined by
|
|
the other points. It returns \ccc{NEGATIVE} if \ccc{p} lies on the negative
|
|
side of \ccc{h} and returns \ccc{COPLANAR} if \ccc{p} lies on \ccc{h}.\\ The
|
|
range's size must of course be one more than the dimension of the euclidean
|
|
space the points live in: \ccPrecond The number of points in the range
|
|
must be equal to one more than the dimension of the euclidean space the points
|
|
live in, \emph{i.e.}, \ccc{std::distance(start,end)==start->dimension()+1}.}
|
|
|
|
\ccNestedType{Coaffine_orientation_d}{Same as above, but the operator can use
|
|
less points as input. The orientation is taken for some
|
|
arbitrary---\textbf{but consistent}---orientation of the affine subspace
|
|
spanned by the input points. By consistent, it is meant that an affine
|
|
subspace will always have the same orientation whatever the set of points
|
|
spanning it. \ccPrecond
|
|
\ccc{2<=std::distance(start,end)<=start->dimension()+1}.}
|
|
|
|
\ccNestedType{Compare_lexicographically_d}{A predicate object that must
|
|
provide the operator\\\ccc{Comparison_result operator()(const Point_d & p,
|
|
const Point_d & q)}.\\The operator returns \ccc{SMALLER} if \ccc{p} is
|
|
lexicographically smaller than point \ccc{q}, \ccc{EQUAL} if both points are
|
|
the same and \ccc{LARGER} otherwise.}
|
|
|
|
\ccNestedType{Contained_in_affine_hull_d}{A predicate object that must provide
|
|
the templated operator\\\ccc{template<typename ForwardIterator> bool
|
|
operator()(ForwardIterator start, ForwardIterator end, const Point_d &
|
|
p)}.\\The operator returns \ccc{true} if and only if point \ccc{p} is
|
|
contained in the affine space spanned by the points in the range \ccc{[start,
|
|
end)}. That affine space is also called the \textbf{affine hull} of the points
|
|
in the range.}
|
|
|
|
\ccNestedType{Affinely_independent_d}{A predicate object that must provide the
|
|
templated operator\\\ccc{template<typename ForwardIterator> bool
|
|
operator()(ForwardIterator start, ForwardIterator end)}.\\The operator returns
|
|
\ccc{true} if and only if the dimension of the affine hull of the points in
|
|
the range \ccc{R=[start, end)} is one less than the number of points in
|
|
\ccc{R}.}
|
|
|
|
\ccNestedType{Center_of_sphere_d}{A construction object that must
|
|
provide the templated operator\\\ccc{template<typename ForwardIterator> bool
|
|
operator()(ForwardIterator start, ForwardIterator end)}.\\The operator
|
|
constructs the center of the sphere circumscribing the points in
|
|
the range \ccc{R=[start, end)}. \ccPrecond The number of points in the range
|
|
must be equal to one more than the dimension of the euclidean space the points
|
|
live in, \emph{i.e.}, \ccc{std::distance(start,end)==start->dimension()+1}.}
|
|
|
|
\ccCreation
|
|
\ccCreationVariable{traits}
|
|
|
|
\ccConstructor{PureComplexTraits();}{The default constructor.}
|
|
|
|
\ccOperations
|
|
|
|
The following methods permit access to the traits class's predicates:
|
|
|
|
\ccMethod{Orientation_d orientation_d_object() const;}%
|
|
{}
|
|
\ccGlue
|
|
\ccMethod{Coaffine_orientation_d coaffine_orientation_d_object() const;}%
|
|
{}
|
|
\ccGlue
|
|
\ccMethod{Compare_lexicographically_d compare_lexicographically_d_object()
|
|
const;}%
|
|
{}
|
|
\ccGlue
|
|
\ccMethod{Contained_in_affine_hull_d contained_in_affine_hull_d_object()
|
|
const;}%
|
|
{}
|
|
\ccGlue
|
|
\ccMethod{ Affinely_independent_d affinely_independent_d_object() const;}%
|
|
{}
|
|
\ccGlue
|
|
\ccMethod{ Center_of_sphere_d center_of_sphere_d_object()
|
|
const;}%
|
|
{}
|
|
|
|
\ccHasModels
|
|
|
|
\ccc{Cartesian_d<FT, Dim, LA>},\\
|
|
\ccc{Simple_cartesian_d<FT, Dim, LA>},\\
|
|
\ccc{Filtered_kernel_d<K>} (recommended).
|
|
|
|
\ccSeeAlso
|
|
|
|
\ccc{DelaunayComplexTraits}
|
|
|
|
\end{ccRefConcept}
|