|
CGAL 4.4 - 3D Triangulations
|
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.
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.
Types | |
| typedef unspecified_type | Line_3 |
| The line type. More... | |
| typedef unspecified_type | Object_3 |
| The object type. More... | |
| typedef unspecified_type | Plane_3 |
| The plane type. More... | |
| typedef unspecified_type | Ray_3 |
| The ray type. More... | |
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. More... | |
| typedef unspecified_type | Bare_point |
| The (un-weighted) point type. More... | |
| 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 | |
| *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 () |
The (un-weighted) point type.
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.
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 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.
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);
The line type.
The object type.
The plane type.
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.
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 an 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_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.
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).
p and q have equal Bare_points. The ray type.
The weighted point type.
| Construct_object_3 RegularTriangulationTraits_3::construct_object_3_object | ( | ) |
| Construct_perpendicular_line_3 RegularTriangulationTraits_3::construct_perpendicular_line_object | ( | ) |
| Construct_plane_3 RegularTriangulationTraits_3::construct_plane_3_object | ( | ) |
| Construct_ray_3 RegularTriangulationTraits_3::construct_ray_3_object | ( | ) |
| * Construct_weighted_circumcenter_3 RegularTriangulationTraits_3::construct_weighted_circumcenter_3_object | ( | ) |
| Power_test_3 RegularTriangulationTraits_3::power_test_3_object | ( | ) |