|
CGAL 4.4 - High-dimension Triangulation
|
#include <CGAL/Delaunay_triangulation.h>
CGAL::Triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >.
The class Delaunay_triangulation is used to maintain the full cells and vertices of a Delaunay triangulation in \( \mathcal R^D\).
It permits point insertion and removal. The dimension \( D\) should be kept reasonably small, see the performance section in the user manual for what reasonable means.
DelaunayTriangulationTraits_ is the geometric traits class that provides the geometric types and predicates needed by Delaunay triangulations. DelaunayTriangulationTraits_ must be a model of the concept DelaunayTriangulationTraits.
TriangulationDataStructure_ is the class used to store the underlying triangulation data structure. TriangulationDataStructure_ must be a model of the concept TriangulationDataStructure. The class template Delaunay_triangulation can be defined by specifying only the first parameter, or by using the tag CGAL::Default as the second parameter. In both cases, TriangulationDataStructure_ defaults to Triangulation_data_structure<DelaunayTriangulationTraits_::Dimension, Triangulation_vertex<DelaunayTriangulationTraits_>, Triangulation_full_cell<DelaunayTriangulationTraits_> >.
The class Delaunay_triangulation<DelaunayTriangulationTraits_, TriangulationDataStructure_> inherits all the types defined in the base class Triangulation<DelaunayTriangulationTraits_, TriangulationDataStructure_>. Additionally, it defines or overloads the following methods:
Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell> Creation | |
| Delaunay_triangulation (const int dim, const Geom_traits gt=Geom_traits()) | |
| Instantiates a Delaunay triangulation with one vertex (the vertex at infinity). More... | |
Point removal | |
| Full_cell_handle | remove (Vertex_handle v) |
Remove the vertex v from the Delaunay triangulation. More... | |
| template<typename ForwardIterator > | |
| void | remove (ForwardIterator start, ForwardIterator end) |
Remove the points or the vertices (through their Vertex_handle) in the range [start, end). More... | |
Point insertion | |
| template<typename ForwardIterator > | |
| size_type | insert (ForwardIterator s, ForwardIterator e) |
Inserts the points found in range [s,e) in the Delaunay triangulation and ensures that the empty-ball property is preserved. More... | |
| Vertex_handle | insert (const Point &p, Full_cell_handle hint=Full_cell_handle()) |
Inserts point p in the Delaunay triangulation and ensures that the empty-ball property is preserved. More... | |
| Vertex_handle | insert (const Point &p, Vertex_handle hint) |
| Same as above but uses a vertex as starting place for the search. More... | |
| Vertex_handle | insert (const Point &p, const Locate_type lt, const Face &f, const Facet &ft, const Full_cell_handle c) |
| Advanced Inserts the point p in the Delaunay triangulation and ensures that the empty-ball property is preserved. More... | |
| Vertex_handle | insert_outside_affine_hull (const Point &p) |
| Vertex_handle | insert_in_conflicting_cell (const Point &p, const Full_cell_handle c) |
Queries | |
| bool | is_in_conflict (const Point &p, Full_cell_const_handle c) const |
Returns true if and only if the point p is in (Delaunay) conflict with full cell c (i.e., the circumscribing ball of \( c\) contains \( p\) in its interior). More... | |
| template<typename OutputIterator > | |
| Facet | compute_conflict_zone (const Point &p, const Full_cell_handle c, OutputIterator out) const |
| Advanced Outputs handles to the full cells in confict with point p into the OutputIterator out. More... | |
| CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::Delaunay_triangulation | ( | const int | dim, |
| const Geom_traits | gt = Geom_traits() |
||
| ) |
Instantiates a Delaunay triangulation with one vertex (the vertex at infinity).
See the description of the inherited nested type Triangulation::Maximal_dimension for an explanation of the use of the parameter dim. The complex stores a copy of the geometric traits gt.
| Facet CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::compute_conflict_zone | ( | const Point & | p, |
| const Full_cell_handle | c, | ||
| OutputIterator | out | ||
| ) | const |
p into the OutputIterator out.
The full cell c is used as a starting point for gathering the full cells in conflict with p. A facet (cc,i) on the boundary of the conflict zone with cc in conflict is returned.
c is in conflict with p. dt.current_dimension() \( \geq2\). | size_type CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert | ( | ForwardIterator | s, |
| ForwardIterator | e | ||
| ) |
Inserts the points found in range [s,e) in the Delaunay triangulation and ensures that the empty-ball property is preserved.
Returns the number of vertices actually inserted. (If more than one vertex share the same position in space, only one insertion is counted.)
| Vertex_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert | ( | const Point & | p, |
| Full_cell_handle | hint = Full_cell_handle() |
||
| ) |
Inserts point p in the Delaunay triangulation and ensures that the empty-ball property is preserved.
Returns a Vertex_handle to the vertex of the triangulation with position p. Prior to the actual insertion, p is located in the triangulation; hint is used as a starting place for locating p.
| Vertex_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert | ( | const Point & | p, |
| Vertex_handle | hint | ||
| ) |
Same as above but uses a vertex as starting place for the search.
| Vertex_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert | ( | const Point & | p, |
| const Locate_type | lt, | ||
| const Face & | f, | ||
| const Facet & | ft, | ||
| const Full_cell_handle | c | ||
| ) |
p in the Delaunay triangulation and ensures that the empty-ball property is preserved.
Returns a handle to the (possibly newly created) vertex at that position. The behavior depends on the value of lt:
OUTSIDE_AFFINE_HULLp is inserted so as to increase the current dimension of the Delaunay triangulation. The method dt.insert_outside_affine_hull() is called. ON_VERTEXv described by f is set to p. v is returned. p is inserted. the full cell c is assumed to be in conflict with p. (Roughly speaking, the method dt.insert_in_conflicting_cell() is called.) The parameters lt, f, ft and c must be consistent with the localization of point p in the Delaunay triangulation e.g. by a call to c = locate(p, lt, f, ft).
| Vertex_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert_in_conflicting_cell | ( | const Point & | p, |
| const Full_cell_handle | c | ||
| ) |
p in the Delaunay triangulation.
Returns a handle to the (possibly newly created) vertex at that position.
p must be in conflict with the full cell c. | Vertex_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::insert_outside_affine_hull | ( | const Point & | p | ) |
p in the Delaunay triangulation.
Returns a handle to the (possibly newly created) vertex at that position.
p must lie outside the affine hull of the Delaunay triangulation. This implies that dt.current_dimension() must be less that dt.maximal_dimension(). | bool CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::is_in_conflict | ( | const Point & | p, |
| Full_cell_const_handle | c | ||
| ) | const |
Returns true if and only if the point p is in (Delaunay) conflict with full cell c (i.e., the circumscribing ball of \( c\) contains \( p\) in its interior).
| Full_cell_handle CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::remove | ( | Vertex_handle | v | ) |
Remove the vertex v from the Delaunay triangulation.
If the current dimension of the triangulation has not changed after the removal, then the returned full cell c geometrically contains the removed vertex v (c can be finite or infinite). Otherwise, the default-constructed Full_cell_handle is returned.
v is a vertex of the triangulation, different from the infinite_vertex(). | void CGAL::Delaunay_triangulation< DelaunayTriangulationTraits_, TriangulationDataStructure_ >::remove | ( | ForwardIterator | start, |
| ForwardIterator | end | ||
| ) |
Remove the points or the vertices (through their Vertex_handle) in the range [start, end).
ForwardIterator::value_type must be Vertex_handle.