mirror of https://github.com/CGAL/cgal
144 lines
5.5 KiB
TeX
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}
|