% +------------------------------------------------------------------------+
% | Reference manual page: DelaunayTriangulationTraits_2.tex
% +------------------------------------------------------------------------+
% | 12.04.2000   Author
% | Package: Package
% | 
\RCSdef{\RCSDelaunaytriangulationtraitsRev}{$Id$}
\RCSdefDate{\RCSDelaunaytriangulationtraitsDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefConcept}{DelaunayTriangulationTraits_2}

%% \ccHtmlCrossLink{}     %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries

\ccDefinition
  
In addition to the requirements 
of the concept \ccc{TriangulationTraits_2}
described \ccRefPage{TriangulationTraits_2},
the concept \ccRefName\
provide a predicate to check the empty circle
property. The correponding predicate type
is called  type  \ccc{Side_of_oriented_circle_2}.


The additional types \ccc{Line_2},
\ccc{Ray_2} and the constructor objects
\ccc{Construct_ray_2}
\ccc{Construct_circumcenter_2}, \ccc{Construct_bisector_2},
\ccc{Construct_midpoint}
are used to build the dual Voronoi diagram
and are required only if the dual functions are called.
The additional predicate type \ccc{Compare_distance_2} is 
required if calls to 
\ccc{nearest_vertex(..)} are issued.

\ccRefines
\ccc{TriangulationTraits_2}

\ccTypes
\ccThree{DelaunayTriangulationTraits_2}{traits(dt)xxx}{}
\ccThreeToTwo
\ccNestedType{Line_2}{The line type. This type is  required only if
some dual
functions are called.}
\ccGlue
\ccNestedType{Ray_2}{The type for ray. This type is  required only if
some dual
functions are called.}




\ccNestedType{Side_of_oriented_circle_2}{Predicate type. 
Provides the operator : \\
\ccc{Oriented_side operator()(Point p, Point q, Point r, Point s)}
which takes four points $p, q, r, s$ as arguments and returns
\ccc{ON_POSITIVE_SIDE}, \ccc{ON_NEGATIVE_SIDE} or, 
\ccc{ON_ORIENTED_BOUNDARY} according to the position of points \ccc{s}
with respect to the oriented circle through $p,q$
and $r$.}
\ccGlue
\ccNestedType{Compare_distance_2} {Predicate type. Provides
 the operator : \\
\ccc{Comparison_result operator()(Point_2 p, Point_2 q, Point_2 r)}
which returns \ccc{SMALLER}, \ccc{EQUAL} or \ccc{LARGER}
according to the distance between p and q being smaller, equal or larger
than the distance between p and r.  This type is only require if
\ccc{nearest_vertex} queries are issued.}

\ccNestedType{Construct_circumcenter_2}{Constructor object. Provides
the operator : \\
\ccc{ Point_2 operator()(Point_2 p, Point_2 q, Point_2 r)} which returns
the  circumcenter of the three points  \ccc{p, q} anf \ccc{r}.
This type is required only if  functions
relative to the dual Voronoi diagram are called.}
\ccGlue
\ccNestedType{Construct_bisector_2}{Constructor object. Provides
the operator : \\
\ccc{ Line_2 operator()(Point_2 p, Point_2 q)} which constructs the
bisector line of points \ccc{p} and \ccc{q}.
This type is required only if  functions
relative to the dual Voronoi diagram are called.}
\ccGlue
\ccNestedType{Construct_ray_2}{A constructor object  to build
a ray from a point and a line. Provides : \\
\ccc{Ray_2 operator() ( Point_2 p, Line_2 l);}}
   

\ccCreation
\ccCreationVariable{traits}  %% choose variable name

\ccConstructor{DelaunayTriangulationTraits_2();}{default constructor.}
\ccGlue
\ccConstructor{DelaunayTriangulationTraits_2(DelaunayTriangulationTraits_2 
dtt);}{copy constructor}
\ccGlue
\ccMethod{DelaunayTriangulationTraits_2 
operator=(traits2);}{Assignment operator.}


\ccHeading{Access to predicate and constructor objects}
\ccThree{Construct_circumcenter_2}{traits.construct_circumcenter_2_object();}{}
\ccMethod{Side_of_oriented_circle_2
side_of_oriented_circle_2_object();}{}


The following  functions are required  only if
member functions of the Delaunay triangulation
relative to the dual Voronoi diagram  are called.
\ccMethod{Compare_distance_2
compare_distance_2_object();} {}
\ccGlue
\ccMethod{Construct_circumcenter_2 construct_circumcenter_2_object();}{}
\ccGlue
\ccMethod{Construct_bisector_2 construct_bisector_2_object();}{}
\ccGlue
\ccMethod{Construct_direction_2 construct_direction_2_object();} {}
\ccGlue
\ccMethod{Construct_ray_2 construct_ray_2_object();} {}


\ccHasModels
\cgal kernels\\
\ccc{CGAL::Triangulation_euclidean_traits_2<Rep>}.

The following traits class  provide  everything except types and member
functions required for the dual Voronoi diagram~;\\
\ccc{CGAL::Triangulation_euclidean_traits_xy_3<Rep>}, \\
\ccc{CGAL::Triangulation_euclidean_traits_yz_3<Rep>}, \\
\ccc{CGAL::Triangulation_euclidean_traits_zx_3<Rep>}.

\ccSeeAlso
\ccc{TriangulationTraits_2}

\end{ccRefConcept}

% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

