cgal/Triangulation_3/doc_tex/Triangulation_3_ref/DelaunayTriangulationTraits...

144 lines
5.5 KiB
TeX

% +------------------------------------------------------------------------+
% | Reference manual page: Triangulation_Traits_3.tex
% +------------------------------------------------------------------------+
% | 27.3.2000 Monique Teillaud
% | Package: Triangulation3
% |
\RCSdef{\RCSTriangulationTraitsRev}{$Id$}
\RCSdefDate{\RCSTriangulationTraitsDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+
\begin{ccRefConcept}{DelaunayTriangulationTraits_3}
\ccDefinition
The concept \ccRefName\ is the first template parameter of the class
\ccc{Delaunay_triangulation_3}. It defines the geometric objects (points,
segments...) forming the triangulation together with a few geometric
predicates and constructions on these objects.
\ccRefines \ccc{TriangulationTraits_3}
In addition to the requirements described for the traits class of
\ccc{Triangulation_3}, the geometric traits class of a
Delaunay triangulation must fulfill the following requirements:
\ccTypes
\ccTwo{DelaunayTriangulationTraits_3::Object_3_xxxxx}{}
\ccNestedType{Line_3}{The line type.}
\ccGlue
\ccNestedType{Object_3}{The object type.}
\ccGlue
\ccNestedType{Plane_3}{The plane type.}
\ccGlue
\ccNestedType{Ray_3}{The ray type.}
\ccTwo{DelaunayTriangulationTraits}{}
\ccNestedType{Coplanar_side_of_bounded_circle_3}
{A predicate object that must provide the function operator\\
\ccc{Bounded_side operator()(Point p, Point q, Point r, Point s)},\\
which determines the bounded side of the circle defined
by \ccc{p}, \ccc{q}, and \ccc{r} on which \ccc{s} lies.
\ccPrecond \ccc{p}, \ccc{q}, \ccc{r}, and \ccc{s} are coplanar and
\ccc{p}, \ccc{q}, and \ccc{r} are not collinear.}
\ccGlue
\ccNestedType{Side_of_oriented_sphere_3}
{A predicate object that must provide the function operator\\
\ccc{Oriented_side operator()(Point p, Point q, Point r, Point s, Point t)},\\
which determines on which side of the oriented sphere circumscribing
\ccc{p, q, r, s} the point \ccc{t} lies.}
The following additional predicate is required only when the
\ccc{Triangulation_hierarchy_3} is used on top of
\ccc{Delaunay_triangulation_3}:
\ccNestedType{Compare_distance_3}
{A predicate object that must provide the function operator\\
\ccc{Comparison_result operator()(Point p, Point q, Point r)},\\
which compares the distance between \ccc{p} and \ccc{q} to the distance
between \ccc{p} and \ccc{r}.}
In addition, only when the dual operations are used, the traits class
must provide the following constructor objects:
\ccTwo{DelaunayTriangulationTraits_3}{}
\ccNestedType{Construct_circumcenter_3}
{A constructor object that must provide the function operator\\
\ccc{Point_3 operator()(Point_3 p, Point_3 q, Point_3 r, Point_3 s)},\\
which contructs the circumcenter of four points.
\ccPrecond{\ccc{p}, \ccc{q}, \ccc{r} and \ccc{s} must be non coplanar.}\\
It must also provide the function operator\\
\ccc{Point_3 operator()(Point_3 p, Point_3 q, Point_3 r)},\\
which contructs the circumcenter of three points.
\ccPrecond{\ccc{p}, \ccc{q} and \ccc{r} must be non collinear.}}
\ccGlue
\ccNestedType{Construct_object_3}
{A constructor object that must provide the function operators\\
\ccc{Object_3 operator()(Point_3 p)},\\
\ccc{Object_3 operator()(Segment_3 s)} and\\
\ccc{Object_3 operator()(Ray_3 r)}\\
that construct an object respectively from a point, a segment and a ray.}
\ccGlue
\ccNestedType{Construct_perpendicular_line_3}
{A constructor object that must provide the function operator\\
\ccc{Line_3 operator()(Plane_3 pl, Point_3 p)},\\
which constructs the line perpendicular to \ccc{pl} passing through \ccc{p}.}
\ccGlue
\ccNestedType{Construct_plane_3}
{A constructor object that must provide the function operator\\
\ccc{Plane_3 operator()(Point_3 p, Point_3 q, Point_3 r)},\\
which constructs the plane passing through \ccc{p}, \ccc{q} and \ccc{r}.
\ccPrecond{\ccc{p}, \ccc{q} and \ccc{r} are non collinear.}}
\ccGlue
\ccNestedType{Construct_ray_3}
{A constructor object that must provide the function operator\\
\ccc{Ray_3 operator()(Point_3 p, Line_3 l)},\\
which constructs the ray starting at \ccc{p} with direction given by \ccc{l}.}
\ccOperations
The following functions give access to the predicate and construction objects:
\ccThree{coplanar_side_of_bounded_circle_3xxx}{gt.xxxxxxxxx(Point p0, Point p1)x}{}
\ccCreationVariable{traits}
\ccMethod{Coplanar_side_of_bounded_circle_3 coplanar_side_of_bounded_circle_3_object();}{}
\ccGlue
\ccMethod{Side_of_oriented_sphere_3 side_of_oriented_sphere_3_object();}{}
When using the triangulation hierarchy, the traits must provide:
\ccMethod{Compare_distance_3 compare_distance_3_object();}{}
The following functions must be provided only if the methods of
\ccc{Delaunay_triangulation_3} returning elements of the Voronoi diagram
are instantiated:
\ccMethod{Construct_circumcenter_3 construct_circumcenter_3_object();}{}
\ccGlue
\ccMethod{Construct_object_3 construct_object_3_object();}{}
\ccGlue
\ccMethod{Construct_perpendicular_line_3 construct_perpendicular_line_object();}{}
\ccGlue
\ccMethod{Construct_plane_3 construct_plane_3_object();}{}
\ccGlue
\ccMethod{Construct_ray_3 construct_ray_3_object();}{}
\ccHasModels
\ccc{CGAL::Exact_predicates_inexact_constructions_kernel} (recommended)\\
\ccc{CGAL::Exact_predicates_exact_constructions_kernel} (recommended for
Voronoi)\\
\ccc{CGAL::Filtered_kernel}\\
\ccc{CGAL::Cartesian}\\
\ccc{CGAL::Simple_cartesian}\\
\ccc{CGAL::Homogeneous}\\
\ccc{CGAL::Simple_homogeneous}
\end{ccRefConcept}