CGAL 5.6.3 - 3D Triangulations

Loading...
Searching...
No Matches
List of all members
RegularTriangulationTraits_3 Concept Reference
3D Triangulations Reference » Concepts

## 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.
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:
typedef unspecified_type | Compare_power_distance_3
| A predicate object, model of `Kernel::ComparePowerDistance_3`, that must provide the function operator.
typedef unspecified_type | Construct_point_3
| A constructor type, model of `Kernel::ConstructPoint_3`.
typedef unspecified_type | Construct_weighted_circumcenter_3
| A constructor type, model of `Kernel::ConstructWeightedCircumcenter_3`.
typedef unspecified_type | Construct_object_3
| A constructor object that must provide the function operators.
typedef unspecified_type | Construct_perpendicular_line_3
| A constructor object that must provide the function operator.
typedef unspecified_type | Construct_plane_3
| A constructor object that must provide the function operator.
typedef unspecified_type | Construct_ray_3
| A constructor object that must provide the function operator.
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.

## 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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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

typedef unspecified_type RegularTriangulationTraits_3::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.