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.
We use here the same notation as in Section 35.3. To simplify notation, p will often denote in the sequel either the point p ∈ ℝ3 or the weighted point p(w)=(p,wp).
| |||||||||
The weighted point 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 √ wz(p,q,r,s)2 + wt2 (which is equivalent to Π(t(w),z(p,q,r,s)(w) >0)), ON_POSITIVE_SIDE if t lies inside this oriented sphere.
|
The following predicate is required if a call to nearest_power_vertex or nearest_power_vertex_in_cell is issued:
| |
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.
|
In addition, only when the dual operations are used, the traits class must provide the following constructor objects:
| |||
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);
| |||
| |||
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.
| |||
| |||
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.
|
The following function gives access to the predicate object:
|
|
The following functions must be provided only if the member functions of Regular_triangulation_3 returning elements of the dual diagram are called:
CGAL::Regular_triangulation_euclidean_traits_3
CGAL::Regular_triangulation_filtered_traits_3.