The geometric traits class Triangulation_Traits_3 of the triangulation class Triangulation_3<Traits, Tds> must define the geometric objects (points, segments, triangles and tetrahedra) forming the triangulation together with a few geometric predicates on these objects: equality, coordinate comparison, orientation in space, orientation in case of coplanar points, and collinearity tests.
| |
The type must provide a copy constructor and assignment operator.
| |
| |
The type must provide a constructor that takes two points as arguments.
| |
| |
The type must provide a constructor that takes three points as
arguments.
| |
| |
The type must provide a constructor that takes four points as
arguments.
|
Only a default constructor is required.
| |
A default constructor.
|
|
| |||
Equality test. | ||||
|
| |||
Comparison of x-coordinates. Returns LARGER (resp. EQUAL, SMALLER) when the x coordinate of p is larger than (resp. equal to, smaller than) the x coordinate of q. | ||||
|
| |||
Comparison of y-coordinates. | ||||
|
| |||
Comparison of z-coordinates. | ||||
|
| |||
Orientation test in three dimensions. | ||||
|
| |||
Tests whether test is on the same side of (q, r) as
s in the common plane of the four points. Returns COLLINEAR if
test, q, r are collinear, POSITIVE if (q, r, test)
and (q, r, s) have the same orientation, NEGATIVE if
(q, r, test) and (q, r, s) have opposite orientations. Precondition: test, q, r, s are coplanar and q, r, s are not collinear. | ||||
|
| |||
Collinearity test. |
In addition to the requirements described before, the geometric traits class of a Delaunay triangulation must fulfill the following requirements:
|
| |||
Determines on which side of the oriented sphere circumscribing p, q, r, s the point test lies. | ||||
|
| |||
Determines on which side of the oriented circle circumscribing
p, q, r the point test lies. Precondition: p, q, r, test are coplanar and p, q, r are not collinear. |
Not yet implemented
To be used as the traits class for the regular triangulation provided by CGAL, a class must satisfy additional requirements.
We use here the same notation as in Section .
|
| |||
Let be the power sphere of the weighted points
. Returns ON_ORIENTED_BOUNDARY if t is orthogonal to , ON_NEGATIVE_SIDE if t lies outside the oriented sphere of center and radius (which is equivalent to )), 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(p,q,r,s,t) = side_of_oriented_sphere(p,q,r,s,t).
|
| |||
Analogous definition as the previous method, for coplanar points,
with the power circle . 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(p,q,r,s,t) = side_of_oriented_circle(p,q,r,s,t).
|
| |||
Same for collinear points, where is the
power segment of p and q. Precondition: p and q have different Bare_points, and p, q, t are collinear. |
If all the points have a weight equal to 0, then power_test(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.