The class Periodic_3_Delaunay_triangulation_3 represents a Delaunay triangulation in three-dimensional periodic space.
#include <CGAL/Periodic_3_Delaunay_triangulation_3.h>
The first template argument PT must be a model of the Periodic_3DelaunayTriangulationTraits_3 concept.
The second template argument TDS must be a model of the TriangulationDataStructure_3 concept with some additional functionality in cells and vertices. Its default value is Triangulation_data_structure_3<Triangulation_vertex_base_3<PT,Periodic_3_triangulation_ds_vertex_base_3<>>,Triangulation_cell_base_3<PT,Periodic_3_triangulation_ds_cell_base_3<>>>.
| |||
Creates an empty periodic Delaunay triangulation dt, with
domain as original domain and possibly specifying
a traits class traits.
| |||
| |||
Copy constructor.
| |||
| |||
| |||
Equivalent to constructing an empty triangulation with the optional
domain and traits class arguments and calling insert(first,last).
|
The following methods insert points in the triangulation ensuring the empty sphere property of Delaunay triangulations. The inserted points need to lie in the original domain (see Section 39.1 of the user manual).
In the degenerate case when there are co-spherical points, the Delaunay triangulation is known not to be uniquely defined. In this case, Cgal chooses a particular Delaunay triangulation using a symbolic perturbation scheme [DT03].
Note that insertion of a new point can cause a switch from computing in the 27-sheeted covering space to computing in the 1-sheeted covering space, which invalidates some Vertex_handles and Cell_handles.
|
| |||
Inserts point p in the triangulation and returns the corresponding
vertex. The optional argument start is used as a starting place
for the point location.
| ||||
|
| |||
Inserts 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
Periodic_3_triangulation_3::locate().
|
The following method allows one to insert several points. It returns the number of inserted points.
| ||||
|
| |||
Inserts the points in the iterator range [.first,
last.). Returns the number of inserted points.
This function uses spatial sorting (cf. chapter 63.2)
and therefore is not guaranteed to insert the points following the
order of InputIterator. If the third argument
is_large_point_set is set to true a heuristic for
optimizing the insertion of large point sets is applied.
|
|
| |||
Moves the point stored in v to p, while preserving the Delaunay
property. This performs an action semantically equivalent to remove(v)
followed by insert(p), but is supposedly faster when the point has
not moved much. Returns the handle to the new vertex.
|
When a vertex v is removed from a triangulation, all the cells incident to v must be removed, and the polyhedral region consisting of all the tetrahedra that are incident to v must be re-triangulated. So, the problem reduces to triangulating a polyhedral region, while preserving its boundary, or to compute a constrained triangulation. This is known to be sometimes impossible: the Schönhardt polyhedron cannot be triangulated [She98].
However, when dealing with Delaunay triangulations, the case of such polyhedra that cannot be re-triangulated cannot happen, so Cgal proposes a vertex removal.
|
| |||
Returns a value indicating on which side of the circumscribed sphere
of c the point-offset pair (p,off) lies. More
precisely, it returns: - ON_BOUNDED_SIDE if (p,off) is inside the sphere. - ON_BOUNDARY if (p,off) on the boundary of the sphere. - ON_UNBOUNDED_SIDE if (p,off) lies outside the sphere.
| ||||
|
| |||
Returns any nearest vertex to the point p, or the default constructed
handle if the triangulation is empty. The optional argument c is a hint
specifying where to start the search. It always returns a vertex
corresponding to a point inside domain even if computing in a
multiply sheeted covering space.
| ||||
|
| |||
Returns the vertex of the cell c that is nearest to the
point-offset pair (p,off).
|
A point-offset pair (p,off) is said to be in conflict with a cell c iff dt.side_of_sphere(c, p, off) returns ON_BOUNDED_SIDE. The set of cells that are in conflict with (p,off) is star-shaped.
| ||||
| ||||
| ||||
Computes the conflict hole induced by p. The starting cell
c must be in conflict. Then this function returns
respectively in the output iterators: - cit: the cells in conflict. - bfit: the facets on the boundary, that is, the facets (t, i) where the cell t is in conflict, but t->neighbor(i) is not. - ifit: the facets inside the hole, that is, delimiting two cells in conflict. Returns the pair composed of the resulting output iterators.
| ||||
| ||||
|
| |||
Similar to find_conflicts(), but reports the vertices which are on the
boundary of the conflict hole of p, in the output iterator res.
Returns the resulting output iterator.
|
A face (cell, facet or edge) is said to be a Gabriel face iff its smallest circumscribing sphere do not enclose any vertex of the triangulation. Any Gabriel face belongs to the Delaunay triangulation, but the reciprocal is not true. The following member functions test the Gabriel property of Delaunay faces.
|
| |
|
| |
|
|
|
|
|
Note that a traits class providing exact constructions should be used in order to guarantee the computation of the Voronoi diagram (as opposed to computing the triangulation only, which requires only exact predicates).
|
| Returns the representative of the circumcenter of the four vertices of c that lies in the original domain domain. | ||
|
| Returns the dual of facet f, which is a periodic segment. | ||
|
|
same as the previous method for facet (c,i).
| ||
| ||||
|
| |||
Returns in the output iterator the points of the dual polygon of edge e in the same order as the Facet_circulator returns facets incident to the edge e. The points form the dual polygon in ℝ3, so they do not necessarily all lie inside the original domain. | ||||
| ||||
|
| |||
same as the previous method for edge (c,i,j).
| ||||
| ||||
|
| |||
Returns in the output iterator the points of the dual polyhedron of vertex v in no particular order. The points form the dual polyhedron in ℝ3, so they do not necessarily lie all inside the original domain. | ||||
| ||||
|
| Sends the set of duals to all the facets of dt into os. | ||
|
| Returns the volume of the Voronoi cell dual to v. | ||
|
| |||
Returns the centroid of the Voronoi cell dual to v. |
|
| |
Checks the combinatorial validity of the triangulation and the
validity of its geometric embedding (see
Section 39.2). Also checks that all the
circumscribing spheres of cells are empty. When verbose is set to true, messages describing the first invalidity encountered are printed. | ||
|
| |
Checks the combinatorial and geometric validity of the cell (see
Section 39.2). Also checks that the
circumscribing sphere of cells is empty. When verbose is set to true, messages are printed to give a precise indication of the kind of invalidity encountered. |
These methods are mainly a debugging help for the users of advanced features.