% +------------------------------------------------------------------------+ % | 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}\\ \ccc{CGAL::Regular_triangulation_filtered_traits_2} \ccSeeAlso \ccc{TriangulationTraits_2} \\ \ccc{CGAL::Regular_triangulation_2} \end{ccRefConcept} % +------------------------------------------------------------------------+ %%RefPage: end of main body, begin of footer % EOF % +------------------------------------------------------------------------+