CGAL 4.7 - 3D Triangulations: RegularTriangulationTraits_3 Concept Reference

\( \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.7 - 3D Triangulations

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
RegularTriangulationTraits_3 Concept Reference
Concepts

## Definition

The concept `RegularTriangulationTraits_3` is the first template parameter of the class `Regular_triangulation_3`. It defines the geometric objects (points, segments...) forming the triangulation together with a few geometric predicates and constructions on these objects.

Refines:
  `TriangulationTraits_3`

In addition to the requirements described for the traits class of Triangulation_3, the geometric traits class of Regular_triangulation_3 must fulfill the following requirements.

Has Models:
  CGAL::Regular_triangulation_euclidean_traits_3

## 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.
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)\).
typedef unspecified_type | Weighted_point_3
| The weighted point type.
typedef unspecified_type | Bare_point
| The (un-weighted) point type.
typedef unspecified_type | Power_test_3
| A predicate object which must provide the following function operators: More...
typedef unspecified_type | Compare_power_distance_3
| A predicate object that must provide the function operator. More...
typedef unspecified_type | Construct_weighted_circumcenter_3
| A constructor type. 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...

## Operations

Power_test_3 | power_test_3_object ()
/*! The following functions must be provided only if the member functions of `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

typedef unspecified_type RegularTriangulationTraits_3::Compare_power_distance_3

A predicate object 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.

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.

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.

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.

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.

typedef unspecified_type RegularTriangulationTraits_3::Construct_weighted_circumcenter_3

A constructor type.

The operator() constructs the bare point which is the center of the smallest orthogonal sphere to the input weighted points.

`Bare_point 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.

typedef unspecified_type RegularTriangulationTraits_3::Power_test_3

A predicate object which 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_test_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_test_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_test_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 points, that is when `p` and `q` have equal coordinates, 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.