CGAL 5.2  3D Triangulations

The concept RegularTriangulationTraits_3
is the first template parameter of the class CGAL::Regular_triangulation_3
. It defines the geometric objects (points, segments...) forming the triangulation together with a few geometric predicates and constructions on these objects.
We use here the same notation as in Section Regular Triangulation. To simplify notation, \( p\) will often denote in the sequel either the point \( p\in\mathbb{R}^3\) or the weighted point \( {p}^{(w)}=(p,w_p)\).
Kernel
.CGAL::Regular_triangulation_3
In addition to the requirements described for the traits class of CGAL::Triangulation_3
, the geometric traits class of CGAL::Regular_triangulation_3
must fulfill the following requirements.
Types  
typedef unspecified_type  Line_3 
The line type.  
typedef unspecified_type  Object_3 
The object type.  
typedef unspecified_type  Plane_3 
The plane type.  
typedef unspecified_type  Ray_3 
The ray type.  
typedef unspecified_type  Weighted_point_3 
The weighted point type. More...  
typedef unspecified_type  Power_side_of_oriented_power_sphere_3 
A predicate object, model of Kernel::PowerSideOfOrientedPowerSphere_3 , that must provide the following function operators: More...  
typedef unspecified_type  Compare_power_distance_3 
A predicate object, model of Kernel::ComparePowerDistance_3 , that must provide the function operator. More...  
typedef unspecified_type  Construct_point_3 
A constructor type, model of Kernel::ConstructPoint_3 . More...  
typedef unspecified_type  Construct_weighted_circumcenter_3 
A constructor type, model of Kernel::ConstructWeightedCircumcenter_3 . More...  
typedef unspecified_type  Construct_object_3 
A constructor object that must provide the function operators. More...  
typedef unspecified_type  Construct_perpendicular_line_3 
A constructor object that must provide the function operator. More...  
typedef unspecified_type  Construct_plane_3 
A constructor object that must provide the function operator. More...  
typedef unspecified_type  Construct_ray_3 
A constructor object that must provide the function operator. More...  
When  
typedef unspecified_type  Power_side_of_bounded_power_sphere_3 
A predicate object that must provide the function operators. More...  
Operations  
Power_side_of_oriented_power_sphere_3  power_side_of_oriented_power_sphere_3_object () 
Compare_power_distance_3  compare_power_distance_3_object () 
Construct_point_3  construct_point_3_object () 
The following functions must be provided only if the member functions of  
Construct_weighted_circumcenter_3  construct_weighted_circumcenter_3_object () 
Construct_object_3  construct_object_3_object () 
Construct_perpendicular_line_3  construct_perpendicular_line_object () 
Construct_plane_3  construct_plane_3_object () 
Construct_ray_3  construct_ray_3_object () 
A predicate object, model of Kernel::ComparePowerDistance_3
, that must provide the function operator.
Comparison_result operator()(Point_3 p, Weighted_point_3 q, Weighted_point_3 r)
,
which compares the power distance between p
and q
to the power distance between p
and r
.
nearest_power_vertex()
or nearest_power_vertex_in_cell()
is issued. A constructor object that must provide the function operators.
Object_3 operator()(Point_3 p)
,
Object_3 operator()(Segment_3 s)
and
Object_3 operator()(Ray_3 r)
that construct an object respectively from a point, a segment and a ray.
A constructor object that must provide the function operator.
Line_3 operator()(Plane_3 pl, Point_3 p)
,
which constructs the line perpendicular to pl
passing through p
.
A constructor object that must provide the function operator.
Plane_3 operator()(Point_3 p, Point_3 q, Point_3 r)
,
which constructs the plane passing through p
, q
and r
.
p
, q
and r
are non collinear.A constructor type, model of Kernel::ConstructPoint_3
.
The operator()
extracts the bare point from a weighted point.
Point_3 operator() ( Weighted_point_3 p);
A constructor object that must provide the function operator.
Ray_3 operator()(Point_3 p, Line_3 l)
,
which constructs the ray starting at p
with direction given by l
.
A constructor type, model of Kernel::ConstructWeightedCircumcenter_3
.
The operator()
constructs the bare point which is the center of the smallest orthogonal sphere to the input weighted points.
Point_3 operator() ( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r, Weighted_point_3 s);
A predicate object that must provide the function operators.
Bounded_side operator()(Weighted_point_3 p, Weighted_point_3 t)
,
which returns the sign of the power test of t
with respect to the smallest sphere orthogonal to p
(which is the sphere with center p
and squared radius w_p
with w_p
the weight of p
),
Bounded_side operator()(Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 t)
,
which returns the sign of the power test of t
with respect to the smallest sphere orthogonal to p
and q
,
Bounded_side operator()(Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r, Weighted_point_3 t)
,
which returns the sign of the power test of t
with respect to the smallest sphere orthogonal to p
, q
, and r
.
A predicate object, model of Kernel::PowerSideOfOrientedPowerSphere_3
, that must provide the following function operators:
Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r, Weighted_point_3 s, Weighted_point_3 t)
,
which performs the following:
Let \( {z(p,q,r,s)}^{(w)}\) be the power sphere of the weighted points \( (p,q,r,s)\). Returns
ON_ORIENTED_BOUNDARY
if t
is orthogonal to \( {z(p,q,r,s)}^{(w)}\),ON_NEGATIVE_SIDE
if t
lies outside the oriented sphere of center \( z(p,q,r,s)\) and radius \( \sqrt{ w_{z(p,q,r,s)}^2 + w_t^2 }\) (which is equivalent to \( \Pi({t}^{(w)},{z(p,q,r,s)}^{(w)}) >0\)),ON_POSITIVE_SIDE
if t
lies inside this oriented sphere.p, q, r, s
are not coplanar. Note that with this definition, if all the points have a weight equal to 0, then power_side_of_oriented_power_sphere_3(p,q,r,s,t)
= side_of_oriented_sphere(p,q,r,s,t)
.Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 r, Weighted_point_3 t)
,
which has a definition analogous to the previous method, for coplanar points, with the power circle \( {z(p,q,r)}^{(w)}\).
p, q, r
are not collinear and p, q, r, t
are coplanar. If all the points have a weight equal to 0, then power_side_of_oriented_power_sphere_3(p,q,r,t)
= side_of_oriented_circle(p,q,r,t)
.Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q, Weighted_point_3 t)
,
which is the same for collinear points, where \( {z(p,q)}^{(w)}\) is the power segment of p
and q
.
p
and q
have different bare points, and p, q, t
are collinear. If all points have a weight equal to 0, then power_side_of_oriented_power_sphere_3(p,q,t)
gives the same answer as the kernel predicate s(p,q).has_on(t)
would give, where s(p,q)
denotes the segment with endpoints p
and q
.Oriented_side operator()( Weighted_point_3 p, Weighted_point_3 q)
,
which is the same for equal bare points, then it returns the comparison of the weights (ON_POSITIVE_SIDE
when q
is heavier than p
).
p
and q
have equal bare points. The weighted point type.
It has to be a model of the concept Kernel::WeightedPoint_3
.
Point_3
is requested by the concept TriangulationTraits_3
, which this concept refines.