Loading [MathJax]/extensions/TeX/newcommand.js
\newcommand{\E}{\mathrm{E}} \newcommand{\A}{\mathrm{A}} \newcommand{\R}{\mathrm{R}} \newcommand{\N}{\mathrm{N}} \newcommand{\Q}{\mathrm{Q}} \newcommand{\Z}{\mathrm{Z}} \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }
CGAL 4.14.3 - 3D Triangulations
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
RegularTriangulationTraits_3 Concept Reference

Definition

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).

Refines:
TriangulationTraits_3
Has Models:
All models of Kernel.
See also
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 is_Gabriel functions are used, the traits class must in addition provide the following predicate object:

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 CGAL::Regular_triangulation_3 returning elements of the dual diagram are called:

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 ()
 

Member Typedef Documentation

◆ Compare_power_distance_3

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.

Note
This predicate is required if a call to nearest_power_vertex() or nearest_power_vertex_in_cell() is issued.

◆ Construct_object_3

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.

Note
Only required when the dual operations are used.

◆ Construct_perpendicular_line_3

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.

Note
Only required when the dual operations are used.

◆ Construct_plane_3

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.

Precondition
p, q and r are non collinear.
Note
Only required when the dual operations are used.

◆ Construct_point_3

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);

◆ Construct_ray_3

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.

Note
Only required when the dual operations are used.

◆ Construct_weighted_circumcenter_3

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);

Note
Only required when the dual operations are used.

◆ Power_side_of_bounded_power_sphere_3

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.

◆ Power_side_of_oriented_power_sphere_3

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.
Precondition
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)}.

Precondition
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.

Precondition
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).

Precondition
p and q have equal bare points.

◆ Weighted_point_3

The weighted point type.

It has to be a model of the concept Kernel::WeightedPoint_3.

Note
The unweighted point type Point_3 is requested by the concept TriangulationTraits_3, which this concept refines.