cgal/Triangulation_2/doc_tex/Triangulation_2_ref/RegularTraits_2.tex

146 lines
5.4 KiB
TeX

% +------------------------------------------------------------------------+
% | Reference manual page: Regular_triangulation_traits_2.tex
% +------------------------------------------------------------------------+
% | 12.04.2000 Author
% | Package: Package
% |
\RCSdef{\RCSRegulartriangulationtraitsRev}{$Id$}
\RCSdefDate{\RCSRegulartriangulationtraitsDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+
\begin{ccRefConcept}{RegularTriangulationTraits_2}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries
\ccCreationVariable{traits}
\ccDefinition
The concept \ccRefName\ describe the requirements
for the traits class of regular triangulations. It refines the
concept \ccc{TriangulationTraits_2}
providing the type
\ccc{Weighted_point_2} and the \ccc{power-test} predicate on those
weighted points.
A weighted point is basically
a point augmented with a scalar weight. It can be seen as a circle
when the weight is interpreted as a square radius.
The \ccc{power-test} on weighted points
is the fundamental test to build regular triangulations
as the \ccc{side_of_oriented_circle} test is the fundamental test
of Delaunay triangulations.
%The traits must also provide the types
%\ccc{Ray} and \ccc{Line} to output the dual power diagram,
\ccRefines
\ccc{TriangulationTraits_2}
\ccTypes
\ccNestedType{Bare_point}{Another name for the point type.}
\ccGlue
\ccNestedType{Weighted_point_2}{ The weighted point type, it has to be
a model of the concept \ccc{WeightedPoint}.}
%\ccGlue
%\ccNestedType{Line_2}{Only required if the dual power diagram is asked.}
%\ccGlue
%\ccNestedType{Ray_2}{Only required if the dual power diagram is asked.}
%\ccGlue
\ccNestedType{Power_test_2}{A predicate object type. Must provide
the operators:\\
% \begin{enumerate} does not work, unfortunately (unexplained reason).
--- \ccc{Oriented_side operator() ( Weighted_point_2 p,
Weighted_point_2 q,
Weighted_point_2 r,
Weighted_point_2 s) }
which is the power test for points \ccc{p}, \ccc{q}, \ccc{r} and
\ccc{s}. \ccPrecond{the bare points corresponding to
\ccc{p}, \ccc{q}, \ccc{r} are not collinear.}\\
--- \ccc{Oriented_side operator() ( Weighted_point_2 p,
Weighted_point_2 q,
Weighted_point_2 r) }
which is the degenerated power test for collinear points
\ccc{p}, \ccc{q}, \ccc{r}.
\ccPrecond{the bare points corresponding to
\ccc{p}, \ccc{q}, \ccc{r} are collinear and \ccc{p != q}.}\\
--- \ccc{Oriented_side operator() ( Weighted_point_2 p,
Weighted_point_2 q) }
which is the degenerated power test for weighted points
\ccc{p} and \ccc{q} whose corresponding bare-points are identical.
\ccPrecond{the bare points corresponding to
\ccc{p} and \ccc{q} are identical.}
}
The following type/predicate is required if a call to
\ccc{nearest_power_vertex} is issued:
\ccNestedType{Compare_power_distance_2}{A predicate object type. Must
provide the operator:\\
\ccc{Comparison_result operator()(Bare_point p, Weighted_point_2 q,
Weighted_point_2 r)},
which compares the power distance between \ccc{p} and \ccc{q} to the
power distance between \ccc{p} and \ccc{r}.}
\ccNestedType{Construct_weighted_circumcenter_2}{A constructor
object which constructs the weighted circumcenter of three
weighted points. Provides the operator \\
\ccc{Bare_point operator() ( Weighted_point_2 p,
Weighted_point_2 q,
Weighted_point_2 r);} }
\ccNestedType{Construct_radical_axis_2} {A constructor type which
constructs
the radical axis of two weighted points. Provides the operator~: \\
\ccc{ Line_2 operator() ( Weighted_point_2 p, Weighted_point_2 q);} }
\ccCreation
\ccCreationVariable{traits} %% choose variable name
\ccConstructor{RegularTriangulationTraits_2();}{default constructor.}
\ccConstructor{ RegularTriangulationTraits_2 (
const RegularTriangulatioTraits_2& );} { copy constructor.}
\ccMethod{RegularTriangulationTraits_2& operator=
(const RegularTriangulationTraits_2& );} {assignment operator}
\ccHeading{Access to predicate and constructors objects}
\ccThree{Construct_weighted_circumcenter_2}
{ construct_weighted_circumcenter_2_object();}{}
\ccMethod{Power_test_2 power_test_2_object();}{}
\ccGlue
\ccMethod{Compare_power_distance_2 compare_power_distance_2_object();}{}
\ccGlue
\ccMethod{Construct_weighted_circumcenter_2
construct_weighted_circumcenter_2_object();}{}
\ccGlue
\ccMethod{Construct_radical_axis_2
construct_radical_axis_2_object();}{}
%\ccOperations
%\ccMethod{Rt power(Weighted_point wp, Weighted_point wq) const;}{Returns the power product
%of \ccc{wp} \ and \ccc{wq}. This function is NOT YET required nor used.}
\ccHasModels
\ccc{CGAL::Regular_triangulation_traits_2<Rep>}\\
\ccc{CGAL::Regular_triangulation_filtered_traits_2<FK>}
\ccSeeAlso
\ccc{TriangulationTraits_2} \\
\ccc{CGAL::Regular_triangulation_2<Traits,Tds>}
\end{ccRefConcept}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+