where is the Euclidean distance between and . and are said to be orthogonal if (see Figure ).
Four weighted points have a unique common orthogonal weighted point called the power sphere. A sphere is said to be regular if .
A triangulation of is regular if the power spheres of all simplices are regular.
#include <CGAL/Regular_triangulation_3.h>
The first template argument must be a model of the RegularTriangulationTraits_3 concept.
The second template argument must be a model of the TriangulationDataStructure_3 concept. It has the default value Triangulation_data_structure_3<Triangulation_vertex_base_3<RegularTriangulationTraits_3>, Triangulation_cell_base_3<RegularTriangulationTraits_3> >.
| ||
| The type for points p of weighted points | |
| ||
|
| |||
Creates an empty regular triangulation, possibly specifying a traits class
traits.
| |||
| |||
Copy constructor.
| |||
| |||
| |||
Creates a regular triangulation of the points specified by the iterator range
[first,last) of value type Weighted_point, possibly specifying a
traits class traits.
|
The following methods, which already exist in triangulations, are overloaded to ensure the property that all power spheres are regular.
|
| |||
Inserts weighted point p in the triangulation. If this insertion creates a vertex, this vertex is returned. Otherwise, this method returns the default constructed handle. If p coincides with an existing vertex and has a greater weight, then p replaces that point and the triangulation is updated. The optional argument start is used as a starting place for the search. | ||||
|
| |||
Inserts weighted point p in the triangulation and returns the corresponding vertex. Similar to the above insert() function, but takes as additional parameter the return values of a previous location query. See description of Triangulation_3::locate(). |
The following method allows one to insert several points.
Let us remark that
is equivalent to
|
| |||
Returns the position of the weighted point with respect to the
power sphere of c. More precisely, it returns: - ON_BOUNDED_SIDE if where is the power sphere of c. For an infinite cell this means either that p lies strictly in the half space limited by its finite facet and not containing any other point of the triangulation, or that the angle between p and the power circle of the finite facet of c is greater than . - ON_BOUNDARY if p is orthogonal to the power sphere of c i.e. . For an infinite cell this means that p is orthogonal to the power circle of its finite facet. - ON_UNBOUNDED_SIDE if i.e. the angle between the weighted point p and the power sphere of c is less than or if these two spheres do not intersect. For an infinite cell this means that p does not satisfy either of the two previous conditions. Precondition: rt.dimension() . | ||||
|
| |||
Returns the position of the point p with respect to the
power circle of f. More precisely, it returns: - in dimension 3: - For a finite facet, ON_BOUNDARY if p is orthogonal to the power circle in the plane of the facet, ON_UNBOUNDED_SIDE when their angle is less than , ON_BOUNDED_SIDE when it is greater than (see Figure ). - For an infinite facet, it considers the plane defined by the finite facet of the cell f.first, and does the same as in dimension 2 in this plane. - in dimension 2: - For a finite facet, ON_BOUNDARY if p is orthogonal to the circle, ON_UNBOUNDED_SIDE when the angle between p and the power circle of f is less than , ON_BOUNDED_SIDE when it is greater than . - For an infinite facet, ON_BOUNDED_SIDE for a point in the open half plane defined by f and not containing any other point of the triangulation, ON_UNBOUNDED_SIDE in the other open half plane. If the point p is collinear with the finite edge e of f, it returns: ON_BOUNDED_SIDE if , where is the power segment of e in the line supporting e, ON_BOUNDARY if , ON_UNBOUNDED_SIDE if . Precondition: rt.dimension() . | ||||
|
| |||
Same as the previous method for facet i of cell c. | ||||
|
| |||
In dimension 1, returns ON_BOUNDED_SIDE if , where is the power segment of the edge represented by c, ON_BOUNDARY if , ON_UNBOUNDED_SIDE if . Precondition: rt.dimension() . | ||||
|
| |||
Returns the vertex of the triangulation which is nearest to
with respect to the power distance. This means that the power
of the query point p with respect to the weighted point in
the returned vertex is smaller than the power of p
with respect to the weighted point
in any other vertex. Ties are broken arbitrarily.
The default constructed
handle is returned if the triangulation is empty.
The optional argument c is a hint
specifying where to start the search. Precondition: c is a cell of rt. | ||||
|
| |||
Returns the vertex of the cell c that is nearest to with respect to the power distance. |
advanced |
advanced |