mirror of https://github.com/CGAL/cgal
Properly document SDG storage traits + many other SDG2 doc fixes
This commit is contained in:
parent
472dd09a02
commit
74e8414241
|
|
@ -13,18 +13,21 @@ Currently it only supports the insertions of sites.
|
||||||
\tparam St must be a model of `SegmentDelaunayGraphStorageTraits_2`.
|
\tparam St must be a model of `SegmentDelaunayGraphStorageTraits_2`.
|
||||||
By default, the storage traits is instantiated by `Segment_Delaunay_graph_storage_traits_2<Gt>`.
|
By default, the storage traits is instantiated by `Segment_Delaunay_graph_storage_traits_2<Gt>`.
|
||||||
|
|
||||||
\tparam DS must be a model of `SegmentDelaunayGraphDataStructure_2`.
|
\tparam DS must be a model of `SegmentDelaunayGraphDataStructure_2` whose vertex and face are
|
||||||
`DS` defaults to `CGAL::Triangulation_data_structure_2< CGAL::Segment_Delaunay_graph_vertex_base_2<St>, CGAL::Segment_Delaunay_graph_face_base_2<Gt> >`.
|
models of the concepts `SegmentDelaunayGraphVertexBase_2` and `TriangulationFaceBase_2`, respectively.
|
||||||
Any custom type can be used instead of `Segment_Delaunay_graph_vertex_base_2`
|
It defaults to:
|
||||||
and `Segment_Delaunay_graph_face_base_2`, provided that they are models of the
|
\code
|
||||||
concepts `SegmentDelaunayGraphVertexBase_2` and `TriangulationFaceBase_2`, respectively.
|
`CGAL::Triangulation_data_structure_2<
|
||||||
|
CGAL::Segment_Delaunay_graph_vertex_base_2<St>,
|
||||||
|
CGAL::Segment_Delaunay_graph_face_base_2<Gt> >`
|
||||||
|
\endcode
|
||||||
|
|
||||||
\cgalHeading{Storage}
|
\cgalHeading{Storage}
|
||||||
|
|
||||||
To avoid redundancy in the storage of points, input points are stored in a container,
|
To avoid redundancy in the storage of points, input points are stored in a container,
|
||||||
and the various types of sites (input points and segments, points of intersection,
|
and the various types of sites (input points and segments, points of intersection,
|
||||||
subsegments with one or two points of intersection as endpoints) only store handles to the points
|
subsegments with one or two points of intersection as endpoints) only store handles to the points
|
||||||
in the container.
|
in the container. See Section \ref Segment_Delaunay_graph_2StronglyIntersecting for more information.
|
||||||
|
|
||||||
\cgalHeading{Traversal of the Segment Delaunay Graph}
|
\cgalHeading{Traversal of the Segment Delaunay Graph}
|
||||||
|
|
||||||
|
|
@ -32,45 +35,34 @@ A segment Delaunay graph can be seen as a container of faces and
|
||||||
vertices. Therefore the `Segment_Delaunay_graph_2` class provides several iterators
|
vertices. Therefore the `Segment_Delaunay_graph_2` class provides several iterators
|
||||||
and circulators that allow to traverse it (completely or partially).
|
and circulators that allow to traverse it (completely or partially).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\cgalModels `DelaunayGraph_2`
|
\cgalModels `DelaunayGraph_2`
|
||||||
|
|
||||||
\sa `DelaunayGraph_2`
|
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
|
||||||
\sa `SegmentDelaunayGraphVertexBase_2`
|
|
||||||
\sa `TriangulationFaceBase_2`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt,SSTag>`
|
|
||||||
\sa `CGAL::Triangulation_face_base_2<Gt>`
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template< typename Gt, typename DS >
|
template< typename Gt, typename St, typename DS >
|
||||||
class Segment_Delaunay_graph_2 {
|
class Segment_Delaunay_graph_2 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// \name Types
|
/// \name Types
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the geometric traits.
|
Type for the geometric traits.
|
||||||
*/
|
*/
|
||||||
typedef Gt Geom_traits;
|
typedef Gt Geom_traits;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the underlying
|
Type for the storage traits.
|
||||||
data structure.
|
*/
|
||||||
|
typedef St Storage_traits;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Type for the underlying data structure.
|
||||||
*/
|
*/
|
||||||
typedef DS Data_structure;
|
typedef DS Data_structure;
|
||||||
|
|
||||||
|
|
@ -86,26 +78,29 @@ Size type (an unsigned integral type)
|
||||||
typedef typename DS::size_type size_type;
|
typedef typename DS::size_type size_type;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the
|
Type for the point defined in the geometric traits.
|
||||||
point defined in the geometric traits.
|
|
||||||
*/
|
*/
|
||||||
typedef typename Gt::Point_2 Point_2;
|
typedef typename Gt::Point_2 Point_2;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the segment Delaunay graph site, defined in the geometric
|
Type for the segment Delaunay graph site, defined in the geometric traits.
|
||||||
traits.
|
|
||||||
*/
|
*/
|
||||||
typedef typename Gt::Site_2 Site_2;
|
typedef typename Gt::Site_2 Site_2;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the container of points.
|
Type for the segment Delaunay storage site, defined in the storage traits.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Point_container;
|
typedef typename Storage_traits::Storage_site_2 Storage_site_2;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A handle for points in the point container.
|
Type for the container of points.
|
||||||
*/
|
*/
|
||||||
typedef typename Point_container::iterator Point_handle;
|
typedef typename Storage_traits::Point_container Point_container;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Handle type for points in the point container.
|
||||||
|
*/
|
||||||
|
typedef typename Storage_traits::Point_handle Point_handle;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -138,67 +133,67 @@ The `Edge(f,i)` is the edge common to faces `f` and
|
||||||
typedef typename DS::Edge Edge;
|
typedef typename DS::Edge Edge;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a vertex.
|
Type for a vertex.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Vertex Vertex;
|
typedef typename DS::Vertex Vertex;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a face.
|
Type for a face.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Face Face;
|
typedef typename DS::Face Face;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a handle to a vertex.
|
Type for a handle to a vertex.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Vertex_handle Vertex_handle;
|
typedef typename DS::Vertex_handle Vertex_handle;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a handle to a face.
|
Type for a handle to a face.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Face_handle Face_handle;
|
typedef typename DS::Face_handle Face_handle;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a circulator over vertices incident to a given vertex.
|
Type for a circulator over vertices incident to a given vertex.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Vertex_circulator Vertex_circulator;
|
typedef typename DS::Vertex_circulator Vertex_circulator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a circulator over faces incident to a given vertex.
|
Type for a circulator over faces incident to a given vertex.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Face_circulator Face_circulator;
|
typedef typename DS::Face_circulator Face_circulator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a circulator over edges incident to a given vertex.
|
Type for a circulator over edges incident to a given vertex.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Edge_circulator Edge_circulator;
|
typedef typename DS::Edge_circulator Edge_circulator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over all vertices.
|
Type for an iterator over all vertices.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Vertex_iterator All_vertices_iterator;
|
typedef typename DS::Vertex_iterator All_vertices_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over all faces.
|
Type for an iterator over all faces.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Face_iterator All_faces_iterator;
|
typedef typename DS::Face_iterator All_faces_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over all edges.
|
Type for an iterator over all edges.
|
||||||
*/
|
*/
|
||||||
typedef typename DS::Edge_iterator All_edges_iterator;
|
typedef typename DS::Edge_iterator All_edges_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over finite vertices.
|
Type for an iterator over finite vertices.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Finite_vertices_iterator;
|
typedef unspecified_type Finite_vertices_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over finite faces.
|
Type for an iterator over finite faces.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Finite_faces_iterator;
|
typedef unspecified_type Finite_faces_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for an iterator over finite edges.
|
Type for an iterator over finite edges.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Finite_edges_iterator;
|
typedef unspecified_type Finite_edges_iterator;
|
||||||
|
|
||||||
|
|
@ -217,12 +212,12 @@ typedef unspecified_type Finite_edges_iterator;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a bidirectional iterator over all input sites.
|
Type for a bidirectional iterator over all input sites.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Input_sites_iterator;
|
typedef unspecified_type Input_sites_iterator;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for a bidirectional iterator over all output sites (the sites
|
Type for a bidirectional iterator over all output sites (the sites
|
||||||
in the Delaunay graph).
|
in the Delaunay graph).
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Output_sites_iterator;
|
typedef unspecified_type Output_sites_iterator;
|
||||||
|
|
@ -235,8 +230,7 @@ typedef unspecified_type Output_sites_iterator;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Creates the
|
Creates the segment Delaunay graph using `gt` as geometric traits.
|
||||||
segment Delaunay graph using `gt` as geometric traits.
|
|
||||||
*/
|
*/
|
||||||
Segment_Delaunay_graph_2(Gt gt=Gt());
|
Segment_Delaunay_graph_2(Gt gt=Gt());
|
||||||
|
|
||||||
|
|
@ -246,8 +240,7 @@ and inserts all sites in the range [`first`, `beyond`).
|
||||||
\pre `Input_iterator` must be a model of `InputIterator`. The value type of `Input_iterator` must be either `Point_2` or `Site_2`.
|
\pre `Input_iterator` must be a model of `InputIterator`. The value type of `Input_iterator` must be either `Point_2` or `Site_2`.
|
||||||
*/
|
*/
|
||||||
template< class Input_iterator >
|
template< class Input_iterator >
|
||||||
Segment_Delaunay_graph_2(Input_iterator first, Input_iterator beyond,
|
Segment_Delaunay_graph_2(Input_iterator first, Input_iterator beyond, Gt gt = Gt());
|
||||||
Gt gt=Gt());
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -255,9 +248,30 @@ Gt gt=Gt());
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a reference to the segment Delaunay graph traits object.
|
Returns a reference to the segment Delaunay graph geometric traits object.
|
||||||
*/
|
*/
|
||||||
Geom_traits geom_traits();
|
const Geom_traits& geom_traits() const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns a reference to the segment Delaunay graph storage traits object.
|
||||||
|
*/
|
||||||
|
const Storage_traits& storage_traits() const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns a reference to the point container object.
|
||||||
|
*/
|
||||||
|
Point_container point_container();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns a reference to the
|
||||||
|
segment Delaunay graph data structure object.
|
||||||
|
*/
|
||||||
|
Data_structure data_structure();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Same as `data_structure()`. It has been added for compliance to the `DelaunayGraph_2` concept.
|
||||||
|
*/
|
||||||
|
Data_structure tds();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the dimension of the segment Delaunay graph. The dimension
|
Returns the dimension of the segment Delaunay graph. The dimension
|
||||||
|
|
@ -305,24 +319,6 @@ Returns a vertex distinct from the `infinite_vertex`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle finite_vertex();
|
Vertex_handle finite_vertex();
|
||||||
|
|
||||||
/*!
|
|
||||||
Returns a reference to the
|
|
||||||
segment Delaunay graph data structure object.
|
|
||||||
*/
|
|
||||||
Data_structure data_structure();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Same as `data_structure()`. It
|
|
||||||
has been added for compliance to the `DelaunayGraph_2` concept.
|
|
||||||
*/
|
|
||||||
Data_structure tds();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Returns a reference to
|
|
||||||
the point container object.
|
|
||||||
*/
|
|
||||||
Point_container point_container();
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \name Finite Face, Edge and Vertex Iterators
|
/// \name Finite Face, Edge and Vertex Iterators
|
||||||
|
|
@ -533,41 +529,38 @@ bool is_infinite(Edge_circulator ec) const;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the sites in the range
|
Iteratively inserts the sites in the range [`first`,`beyond`).
|
||||||
[`first`,`beyond`). The number of additional sites inserted in
|
\tparam Input_iterator must be a model of `InputIterator` and its value type must be either `Point_2` or `Site_2`.
|
||||||
the Delaunay graph is returned. `Input_iterator` must be a model of
|
\return the number of sites inserted in the Delaunay graph
|
||||||
`InputIterator` and its value type must be
|
|
||||||
either `Point_2` or `Site_2`.
|
|
||||||
*/
|
*/
|
||||||
template< class Input_iterator >
|
template< class Input_iterator >
|
||||||
size_type insert(Input_iterator first, Input_iterator beyond);
|
size_type insert(Input_iterator first, Input_iterator beyond);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Same as the previous method. `Input_iterator` must be a model of
|
Iteratively inserts the sites in the range [`first`,`beyond`).
|
||||||
`InputIterator` and its value type must be
|
\tparam Input_iterator must be a model of `InputIterator` and its value type must be either `Point_2` or `Site_2`.
|
||||||
either `Point_2` or `Site_2`.
|
\return the number of sites inserted in the Delaunay graph
|
||||||
*/
|
*/
|
||||||
template< class Input_iterator >
|
template< class Input_iterator >
|
||||||
size_type insert(Input_iterator first, Input_iterator beyond, Tag_false);
|
size_type insert(Input_iterator first, Input_iterator beyond, CGAL::Tag_false);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Decomposes the range [first,beyond) into a range of input points and a range of input segments
|
Decomposes the range [first,beyond) into a range of input points and a range of input segments
|
||||||
that are respectively passed to `insert_segments()` and `insert_points()`.
|
that are respectively passed to `insert_segments()` and `insert_points()`.
|
||||||
Non-input sites are first random_shuffled and then inserted one by one.
|
Non-input sites are first random_shuffled and then inserted one by one.
|
||||||
`Input_iterator` must be a model of `InputIterator` and its value type must be
|
\tparam Input_iterator must be a model of `InputIterator` and its value type must be either `Point_2`, `Segment_2` or `Site_2`.
|
||||||
either `Point_2`, `Segment_2` or `Site_2`.
|
\return the number of sites inserted in the Delaunay graph
|
||||||
\return the number of sites inserted in the Delaunay graph
|
|
||||||
*/
|
*/
|
||||||
template< class Input_iterator >
|
template< class Input_iterator >
|
||||||
size_type insert(Input_iterator first, Input_iterator beyond, Tag_true);
|
size_type insert(Input_iterator first, Input_iterator beyond, CGAL::Tag_true);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the points in the range [first,beyond) as sites.
|
Inserts the points in the range [first,beyond) as sites.
|
||||||
Note that this function is not guaranteed to insert the points
|
Note that this function is not guaranteed to insert the points
|
||||||
following the order of `PointInputIterator`, as `spatial_sort()`
|
following the order of `PointInputIterator`, as `spatial_sort()`
|
||||||
is used to improve efficiency.
|
is used to improve efficiency.
|
||||||
\return the number of points inserted in the Delaunay graph
|
|
||||||
\tparam PointIterator must be an input iterator `Point_2` or `Site_2` as value_type.
|
\tparam PointIterator must be an input iterator `Point_2` or `Site_2` as value_type.
|
||||||
|
\return the number of points inserted in the Delaunay graph
|
||||||
*/
|
*/
|
||||||
template <class PointIterator>
|
template <class PointIterator>
|
||||||
std::size_t insert_points(PointIterator first, PointIterator beyond);
|
std::size_t insert_points(PointIterator first, PointIterator beyond);
|
||||||
|
|
@ -577,8 +570,8 @@ Inserts the segments in the range [first,beyond) as sites.
|
||||||
Note that this function is not guaranteed to insert the segments
|
Note that this function is not guaranteed to insert the segments
|
||||||
following the order of `SegmentIterator`, as `spatial_sort()`
|
following the order of `SegmentIterator`, as `spatial_sort()`
|
||||||
is used to improve efficiency.
|
is used to improve efficiency.
|
||||||
\return the number of segments inserted in the Delaunay graph
|
|
||||||
\tparam SegmentIterator must be an input iterator with `Site_2`, `Segment_2` or `std::pair<Point_2,Point_2>` as value type.
|
\tparam SegmentIterator must be an input iterator with `Site_2`, `Segment_2` or `std::pair<Point_2,Point_2>` as value type.
|
||||||
|
\return the number of segments inserted in the Delaunay graph
|
||||||
*/
|
*/
|
||||||
template <class SegmentIterator>
|
template <class SegmentIterator>
|
||||||
std::size_t insert_segments(SegmentIterator first, SegmentIterator beyond);
|
std::size_t insert_segments(SegmentIterator first, SegmentIterator beyond);
|
||||||
|
|
@ -588,33 +581,30 @@ Same as above except that each segment is given as a pair of indices of the poin
|
||||||
in the range [points_first, points_beyond). The indices must start from 0 to `std::distance(points_first, points_beyond)`
|
in the range [points_first, points_beyond). The indices must start from 0 to `std::distance(points_first, points_beyond)`
|
||||||
\tparam PointIterator is an input iterator with `Point_2` as value type.
|
\tparam PointIterator is an input iterator with `Point_2` as value type.
|
||||||
\tparam IndicesIterator is an input iterator with `std::pair<std::size_t, std::size_t>` as value type.
|
\tparam IndicesIterator is an input iterator with `std::pair<std::size_t, std::size_t>` as value type.
|
||||||
|
\return the number of segments inserted in the Delaunay graph
|
||||||
*/
|
*/
|
||||||
template <class PointIterator, class IndicesIterator>
|
template <class PointIterator, class IndicesIterator>
|
||||||
std::size_t insert_segments(PointIterator points_first, PointIterator points_beyond,
|
std::size_t insert_segments(PointIterator points_first, PointIterator points_beyond,
|
||||||
IndicesIterator indices_first, IndicesIterator indices_beyond);
|
IndicesIterator indices_first, IndicesIterator indices_beyond);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the
|
Inserts the point `p` in the segment Delaunay graph.
|
||||||
point `p` in the segment Delaunay graph. If `p` has already
|
If `p` has already been inserted, then the vertex handle of its already inserted copy is returned.
|
||||||
been inserted, then the vertex handle of its already inserted copy is
|
If `p` has not been inserted yet, the vertex handle of `p` is returned.
|
||||||
returned. If `p` has not been inserted yet, the vertex handle of
|
|
||||||
`p` is returned.
|
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert(Point_2 p);
|
Vertex_handle insert(Point_2 p);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts `p` in the segment Delaunay graph using the site
|
Inserts `p` in the segment Delaunay graph using the site associated with `vnear`
|
||||||
associated with `vnear` as an estimate for the nearest neighbor
|
as an estimate for the nearest neighbor of `p`.
|
||||||
of `p`. The vertex handle returned has the same semantics as
|
The vertex handle returned has the same semantics as the vertex handle returned by the method
|
||||||
the vertex handle returned by the method
|
|
||||||
`Vertex_handle insert(Point_2 p)`.
|
`Vertex_handle insert(Point_2 p)`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert(Point_2 p, Vertex_handle vnear);
|
Vertex_handle insert(Point_2 p, Vertex_handle vnear);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the
|
Inserts the closed segment with endpoints `p1` and `p2` in the segment Delaunay graph.
|
||||||
closed segment with endpoints `p1` and `p2` in the segment
|
If the segment has already been inserted in the
|
||||||
Delaunay graph. If the segment has already been inserted in the
|
|
||||||
Delaunay graph then the vertex handle of its already inserted copy is
|
Delaunay graph then the vertex handle of its already inserted copy is
|
||||||
returned. If the segment does not intersect any segment in the
|
returned. If the segment does not intersect any segment in the
|
||||||
existing diagram, the vertex handle corresponding to its
|
existing diagram, the vertex handle corresponding to its
|
||||||
|
|
@ -625,37 +615,31 @@ vertex handle to one of its open subsegments is returned.
|
||||||
Vertex_handle insert(Point_2 p1, Point_2 p2);
|
Vertex_handle insert(Point_2 p1, Point_2 p2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the segment whose endpoints are `p1` and `p2`
|
Inserts the segment whose endpoints are `p1` and `p2` in the segment Delaunay graph using the site
|
||||||
in the segment Delaunay graph using the site
|
associated with `vnear` as an estimate for the nearest neighbor of `p1`.
|
||||||
associated with `vnear` as an estimate for the nearest neighbor
|
The vertex handle returned has the same semantics as the vertex handle returned by the method
|
||||||
of `p1`. The vertex handle returned has the same semantics as the
|
|
||||||
vertex handle returned by the method
|
|
||||||
`Vertex_handle insert(Point_2 p1, Point_2 p2)`.
|
`Vertex_handle insert(Point_2 p1, Point_2 p2)`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert(Point_2 p1, Point_2 p2, Vertex_handle
|
Vertex_handle insert(Point_2 p1, Point_2 p2, Vertex_handle vnear);
|
||||||
vnear);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts the site `s` in the
|
Inserts the site `s` in the segment Delaunay graph.
|
||||||
segment Delaunay graph. The vertex handle returned has the same
|
The vertex handle returned has the same semantics as the vertex handle returned by the methods
|
||||||
semantics as the vertex handle returned by the methods
|
`Vertex_handle insert(Point_2 p)` and `Vertex_handle insert(Point_2 p1, Point_2 p2)`,
|
||||||
`Vertex_handle insert(Point_2 p)` and `Vertex_handle insert(Point_2 p1, Point_2 p2)`, depending on whether `s`
|
depending on whether `s` represents a point or a segment respectively.
|
||||||
represents a point or a segment respectively.
|
|
||||||
\pre `s.is_input()` must be `true`.
|
\pre `s.is_input()` must be `true`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert(Site_2 s);
|
Vertex_handle insert(Site_2 s);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts `s` in the segment Delaunay graph using the site
|
Inserts `s` in the segment Delaunay graph using the site associated with `vnear`
|
||||||
associated with `vnear` as an estimate for the nearest neighbor of
|
as an estimate for the nearest neighbor of `s`, if `s` is a point, or the first endpoint of `s`, if
|
||||||
`s`, if `s` is a point, or the first endpoint of `s`, if
|
`s` is a segment.
|
||||||
`s` is a segment. The vertex handle returned has the same
|
The vertex handle returned has the same semantics as the vertex handle returned by the method
|
||||||
semantics as the vertex handle returned by the method
|
|
||||||
`Vertex_handle insert(Site_2 s)`.
|
`Vertex_handle insert(Site_2 s)`.
|
||||||
\pre `s.is_input()` must be `true`.
|
\pre `s.is_input()` must be `true`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert(Site_2 s, Vertex_handle
|
Vertex_handle insert(Site_2 s, Vertex_handle vnear);
|
||||||
vnear);
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -679,8 +663,7 @@ arbitrarily and one of the nearest neighbors of `p` is
|
||||||
returned. If there are no sites in the segment Delaunay graph
|
returned. If there are no sites in the segment Delaunay graph
|
||||||
`Vertex_handle()` is returned.
|
`Vertex_handle()` is returned.
|
||||||
*/
|
*/
|
||||||
Vertex_handle nearest_neighbor(Point_2 p,
|
Vertex_handle nearest_neighbor(Point_2 p, Vertex_handle vnear);
|
||||||
Vertex_handle vnear);
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -787,20 +770,19 @@ combinatorial data structure.
|
||||||
void file_output(std::ostream& os);
|
void file_output(std::ostream& os);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads the state of the
|
Reads the state of the segment Delaunay graph from an input stream.
|
||||||
segment Delaunay graph from an input stream.
|
|
||||||
*/
|
*/
|
||||||
void file_input(std::istream& is);
|
void file_input(std::istream& is);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Writes the current state of the segment Delaunay graph to an output stream.
|
Writes the current state of the segment Delaunay graph to an output stream.
|
||||||
*/
|
*/
|
||||||
std::ostream& operator<<(std::ostream& os, Segment_Delaunay_graph_2<Gt,DS> sdg);
|
std::ostream& operator<<(std::ostream& os, const Segment_Delaunay_graph_2<Gt,St,DS>& sdg);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads the state of the segment Delaunay graph from an input stream.
|
Reads the state of the segment Delaunay graph from an input stream.
|
||||||
*/
|
*/
|
||||||
std::istream& operator>>(std::istream& is, Segment_Delaunay_graph_2<Gt,DS> sdg);
|
std::istream& operator>>(std::istream& is, Segment_Delaunay_graph_2<Gt,St,DS>& sdg);
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -829,13 +811,12 @@ Clears all contents of the segment Delaunay graph.
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
The segment Delaunay graphs
|
The segment Delaunay graphs `other` and `*this` are swapped.
|
||||||
`other` and `*this` are swapped. For a segment Delaunay graph `sdg`, the operation
|
For a segment Delaunay graph `sdg`, the operation
|
||||||
`sdg`.`swap(other)` should be preferred to `sdg``= other` or to `sdg``(other)` if
|
`sdg`.`swap(other)` should be preferred to `sdg``= other` or to `sdg``(other)` if
|
||||||
`other` is deleted afterwards.
|
`other` is deleted afterwards.
|
||||||
*/
|
*/
|
||||||
void swap(Segment_Delaunay_graph_2<Gt,DS>
|
void swap(Segment_Delaunay_graph_2<Gt,St,DS>& other);
|
||||||
other);
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
namespace CGAL {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSegmentDelaunayGraph2Ref
|
||||||
|
|
||||||
|
\cgalModels `SegmentDelaunayGraphFaceBase_2`
|
||||||
|
|
||||||
|
The class `Segment_Delaunay_graph_face_base_2` provides a model for the
|
||||||
|
`SegmentDelaunayGraphFaceBase_2` concept which is the face
|
||||||
|
base required by the `SegmentDelaunayGraphDataStructure_2`
|
||||||
|
concept.
|
||||||
|
|
||||||
|
\tparam Gt must be a model of the concept `SegmentDelaunayGraphTraits_2`.
|
||||||
|
This type must be identical to the template parameter used for `CGAL::Segment_Delaunay_graph_2`.
|
||||||
|
|
||||||
|
\tparam Fb is a face base class from which `Segment_Delaunay_graph_face_base_2` derives.
|
||||||
|
It must be a model of the `TriangulationFaceBase_2` concept.
|
||||||
|
It has the default value `CGAL::Triangulation_face_base_2<Gt>`.
|
||||||
|
*/
|
||||||
|
template< typename Gt, typename Fb >
|
||||||
|
class Segment_Delaunay_graph_face_base_2 {
|
||||||
|
public:
|
||||||
|
|
||||||
|
}; /* end Segment_Delaunay_graph_face_base_2 */
|
||||||
|
|
||||||
|
} /* end namespace CGAL */
|
||||||
|
|
@ -8,7 +8,7 @@ The class `Segment_Delaunay_graph_filtered_traits_2` provides a model for the
|
||||||
`SegmentDelaunayGraphTraits_2` concept.
|
`SegmentDelaunayGraphTraits_2` concept.
|
||||||
|
|
||||||
The class `Segment_Delaunay_graph_filtered_traits_2` uses the filtering technique \cgalCite{cgal:bbp-iayed-01}
|
The class `Segment_Delaunay_graph_filtered_traits_2` uses the filtering technique \cgalCite{cgal:bbp-iayed-01}
|
||||||
to achieve traits for the `Segment_Delaunay_graph_2<Gt,DS>`
|
to achieve traits for the `Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
class with efficient and exact predicates given an exact
|
class with efficient and exact predicates given an exact
|
||||||
kernel `EK` and a filtering kernel `FK`. The geometric
|
kernel `EK` and a filtering kernel `FK`. The geometric
|
||||||
constructions associated provided by this class are equivalent
|
constructions associated provided by this class are equivalent
|
||||||
|
|
@ -58,12 +58,11 @@ The default values for the template parameters are as follows:
|
||||||
\cgalModels `CopyConstructible`
|
\cgalModels `CopyConstructible`
|
||||||
\cgalModels `Assignable`
|
\cgalModels `Assignable`
|
||||||
|
|
||||||
\sa `Kernel`
|
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
\sa `CGAL::Field_tag`
|
\sa `CGAL::Field_tag`
|
||||||
\sa `CGAL::Field_with_sqrt_tag`
|
\sa `CGAL::Field_with_sqrt_tag`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
@ -156,7 +155,7 @@ The class `Segment_Delaunay_graph_filtered_traits_without_intersections_2` provi
|
||||||
`SegmentDelaunayGraphTraits_2` concept.
|
`SegmentDelaunayGraphTraits_2` concept.
|
||||||
|
|
||||||
The class `Segment_Delaunay_graph_filtered_traits_without_intersections_2` uses the filtering technique \cgalCite{cgal:bbp-iayed-01}
|
The class `Segment_Delaunay_graph_filtered_traits_without_intersections_2` uses the filtering technique \cgalCite{cgal:bbp-iayed-01}
|
||||||
to achieve traits for the `Segment_Delaunay_graph_2<Gt,DS>`
|
to achieve traits for the `Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
class with efficient and exact predicates given an exact
|
class with efficient and exact predicates given an exact
|
||||||
kernel `EK` and a filtering kernel `FK`. The geometric
|
kernel `EK` and a filtering kernel `FK`. The geometric
|
||||||
constructions associated provided by this class are equivalent
|
constructions associated provided by this class are equivalent
|
||||||
|
|
@ -221,8 +220,8 @@ default value is
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
\sa `CGAL::Euclidean_ring_tag`
|
\sa `CGAL::Euclidean_ring_tag`
|
||||||
\sa `CGAL::Field_with_sqrt_tag`
|
\sa `CGAL::Field_with_sqrt_tag`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,9 @@ namespace CGAL {
|
||||||
\ingroup PkgSegmentDelaunayGraph2Ref
|
\ingroup PkgSegmentDelaunayGraph2Ref
|
||||||
|
|
||||||
We provide an alternative to the class
|
We provide an alternative to the class
|
||||||
`Segment_Delaunay_graph_2<Gt,DS>` for the incremental
|
`Segment_Delaunay_graph_2<Gt,St,DS>` for the incremental
|
||||||
construction of the segment Delaunay graph. The `Segment_Delaunay_graph_hierarchy_2` class
|
construction of the segment Delaunay graph.
|
||||||
|
The `Segment_Delaunay_graph_hierarchy_2` class
|
||||||
maintains a hierarchy of Delaunay graphs. There are two possibilities
|
maintains a hierarchy of Delaunay graphs. There are two possibilities
|
||||||
as to how this hierarchy is constructed.
|
as to how this hierarchy is constructed.
|
||||||
|
|
||||||
|
|
@ -21,44 +22,49 @@ In the second case the upper levels of the hierarchy contains not only
|
||||||
points but also segments. A site that is in level \f$ i\f$, is in level
|
points but also segments. A site that is in level \f$ i\f$, is in level
|
||||||
\f$ i+1\f$ with probability \f$ 1/\beta\f$ where \f$ \beta > 1\f$ is some constant.
|
\f$ i+1\f$ with probability \f$ 1/\beta\f$ where \f$ \beta > 1\f$ is some constant.
|
||||||
|
|
||||||
The difference between the `Segment_Delaunay_graph_2<Gt,DS>`
|
The difference between the `Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
class and the `Segment_Delaunay_graph_hierarchy_2` class (both versions of it) is on how the
|
class and the `Segment_Delaunay_graph_hierarchy_2` class (both versions of it) is on how the
|
||||||
nearest neighbor location is done. Given a point \f$ p\f$ the location is
|
nearest neighbor location is done. Given a point \f$ p\f$ the location is
|
||||||
done as follows: at the top most level we find the nearest neighbor of
|
done as follows: at the top most level we find the nearest neighbor of
|
||||||
\f$ p\f$ as in the `Segment_Delaunay_graph_2<Gt,DS>` class. At
|
\f$ p\f$ as in the `Segment_Delaunay_graph_2<Gt,St,DS>` class. At
|
||||||
every subsequent level \f$ i\f$ we use the nearest neighbor found at level
|
every subsequent level \f$ i\f$ we use the nearest neighbor found at level
|
||||||
\f$ i+1\f$ to find the nearest neighbor at level \f$ i\f$. This is a variant of
|
\f$ i+1\f$ to find the nearest neighbor at level \f$ i\f$. This is a variant of
|
||||||
the corresponding hierarchy for points found in \cgalCite{cgal:d-dh-02}. The
|
the corresponding hierarchy for points found in \cgalCite{cgal:d-dh-02}. The
|
||||||
details are described in \cgalCite{cgal:k-reisv-04}.
|
details are described in \cgalCite{cgal:k-reisv-04}.
|
||||||
|
|
||||||
The class has three template parameters. The first and third
|
The class has four template parameters. The first and fourth
|
||||||
have essentially the same semantics as in the
|
have essentially the same semantics as in the `Segment_Delaunay_graph_2<Gt,St,DS>` class.
|
||||||
`Segment_Delaunay_graph_2<Gt,DS>` class.
|
|
||||||
|
|
||||||
\tparam Gt must be a model of the
|
\tparam Gt must be a model of the
|
||||||
`SegmentDelaunayGraphTraits_2` concept.
|
`SegmentDelaunayGraphTraits_2` concept.
|
||||||
|
|
||||||
\tparam STag The second template
|
\tparam St must be a model of `SegmentDelaunayGraphStorageTraits_2`.
|
||||||
|
By default, the storage traits is instantiated by `Segment_Delaunay_graph_storage_traits_2<Gt>`.
|
||||||
|
|
||||||
|
\tparam STag The third template
|
||||||
parameter controls whether or not segments are added in the upper
|
parameter controls whether or not segments are added in the upper
|
||||||
levels of the hierarchy. It's possible values are `Tag_true`
|
levels of the hierarchy. It's possible values are `Tag_true`
|
||||||
and `Tag_false`. If it is set to `Tag_true`,
|
and `Tag_false`. If it is set to `Tag_true`,
|
||||||
segments are also inserted in the upper levels of the hierarchy. The
|
segments are also inserted in the upper levels of the hierarchy. The
|
||||||
value `Tag_false` indicates that only points are to be
|
value `Tag_false` indicates that only points are to be
|
||||||
inserted in the upper levels of the hierarchy. The default value for
|
inserted in the upper levels of the hierarchy. The default value for
|
||||||
the second template parameter is `Tag_false`.
|
the third template parameter is `Tag_false`.
|
||||||
|
|
||||||
\tparam DS must be a model of the
|
\tparam DS must be a model of the
|
||||||
`SegmentDelaunayGraphDataStructure_2` concept. However, the
|
`SegmentDelaunayGraphDataStructure_2` concept. However, the
|
||||||
vertex base class that is to be used in the segment Delaunay graph
|
vertex base class that is to be used in the segment Delaunay graph
|
||||||
data structure must be a model of the
|
data structure must be a model of the
|
||||||
`SegmentDelaunayGraphHierarchyVertexBase_2`
|
`SegmentDelaunayGraphHierarchyVertexBase_2`
|
||||||
concept. The third template parameter defaults to
|
concept. The fourth template parameter defaults to:
|
||||||
`Triangulation_data_structure_2< Segment_Delaunay_graph_hierarchy_vertex_base_2< Segment_Delaunay_graph_vertex_base_2<Gt> >, Triangulation_face_base_2<Gt> >`.
|
\code
|
||||||
|
`CGAL::Triangulation_data_structure_2<
|
||||||
|
CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<
|
||||||
|
CGAL::Segment_Delaunay_graph_vertex_base_2<St>,
|
||||||
|
CGAL::Segment_Delaunay_graph_face_base_2<Gt> >`
|
||||||
|
\endcode
|
||||||
|
|
||||||
The `Segment_Delaunay_graph_hierarchy_2` class derives publicly from the
|
The `Segment_Delaunay_graph_hierarchy_2` class derives publicly from the
|
||||||
`Segment_Delaunay_graph_2<Gt,DS>` class. The interface is
|
`Segment_Delaunay_graph_2<Gt,St,DS>` class. The interface is
|
||||||
the same with its base class. In the sequel only additional types
|
the same with its base class. In the sequel only additional types
|
||||||
and methods defined are documented.
|
and methods defined are documented.
|
||||||
|
|
||||||
|
|
@ -66,10 +72,7 @@ and methods defined are documented.
|
||||||
\cgalModels `CopyConstructible`
|
\cgalModels `CopyConstructible`
|
||||||
\cgalModels `Assignable`
|
\cgalModels `Assignable`
|
||||||
|
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
|
||||||
\sa `SegmentDelaunayGraphHierarchyVertexBase_2`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
|
|
@ -78,14 +81,15 @@ and methods defined are documented.
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template< typename Gt, typename STag, typename DS >
|
template< typename Gt, typename St, typename STag, typename DS >
|
||||||
class Segment_Delaunay_graph_hierarchy_2 : public CGAL::Segment_Delaunay_graph_2<Gt,DS> {
|
class Segment_Delaunay_graph_hierarchy_2
|
||||||
|
: public CGAL::Segment_Delaunay_graph_2<Gt,St,DS> {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// \name Types
|
/// \name Types
|
||||||
/// `Segment_Delaunay_graph_hierarchy_2` introduces the following
|
/// `Segment_Delaunay_graph_hierarchy_2` introduces the following
|
||||||
/// types in addition to those introduced by its base class
|
/// types in addition to those introduced by its base class
|
||||||
/// `Segment_Delaunay_graph_2<Gt,DS>`.
|
/// `Segment_Delaunay_graph_2<Gt,St,DS>`.
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -97,7 +101,7 @@ typedef STag Segments_in_hierarchy_tag;
|
||||||
/*!
|
/*!
|
||||||
A type for the base class.
|
A type for the base class.
|
||||||
*/
|
*/
|
||||||
typedef CGAL::Segment_Delaunay_graph_2<Gt,DS> Base;
|
typedef CGAL::Segment_Delaunay_graph_2<Gt,St,DS> Base;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -110,8 +114,7 @@ typedef CGAL::Segment_Delaunay_graph_2<Gt,DS> Base;
|
||||||
Creates a hierarchy of segment Delaunay graphs using
|
Creates a hierarchy of segment Delaunay graphs using
|
||||||
`gt` as geometric traits.
|
`gt` as geometric traits.
|
||||||
*/
|
*/
|
||||||
Segment_Delaunay_graph_hierarchy_2(Gt
|
Segment_Delaunay_graph_hierarchy_2(Gt gt=Gt());
|
||||||
gt=Gt());
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Creates a segment Delaunay graph hierarchy using
|
Creates a segment Delaunay graph hierarchy using
|
||||||
|
|
@ -121,9 +124,7 @@ model of `InputIterator`. The value type of `Input_iterator`
|
||||||
must be either `Point_2` or `Site_2`.
|
must be either `Point_2` or `Site_2`.
|
||||||
*/
|
*/
|
||||||
template< class Input_iterator >
|
template< class Input_iterator >
|
||||||
Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>(Input_iterator
|
Segment_Delaunay_graph_hierarchy_2(Input_iterator first, Input_iterator beyond, Gt gt=Gt());
|
||||||
first, Input_iterator beyond, Gt gt=Gt());
|
|
||||||
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -136,13 +137,13 @@ written to the stream (represented through appropriate input sites),
|
||||||
as well as the underlying combinatorial hierarchical data structure.
|
as well as the underlying combinatorial hierarchical data structure.
|
||||||
\relates Segment_Delaunay_graph_hierarchy_2
|
\relates Segment_Delaunay_graph_hierarchy_2
|
||||||
*/
|
*/
|
||||||
std::ostream& operator<<(std::ostream& os, Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS> svdh);
|
std::ostream& operator<<(std::ostream& os, const Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>& svdh);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads the state of the segment Delaunay graph hierarchy from an
|
Reads the state of the segment Delaunay graph hierarchy from an
|
||||||
input stream.
|
input stream.
|
||||||
\relates Segment_Delaunay_graph_hierarchy_2
|
\relates Segment_Delaunay_graph_hierarchy_2
|
||||||
*/
|
*/
|
||||||
std::istream& operator>>(std::istream& is, Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS> svdh);
|
std::istream& operator>>(std::istream& is, const Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>& svdh);
|
||||||
|
|
||||||
} /* end namespace CGAL */
|
} /* end namespace CGAL */
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
||||||
The class `Segment_Delaunay_graph_hierarchy_vertex_base_2` provides a model for the
|
The class `Segment_Delaunay_graph_hierarchy_vertex_base_2` provides a model for the
|
||||||
`SegmentDelaunayGraphHierarchyVertexBase_2` concept, which is the
|
`SegmentDelaunayGraphHierarchyVertexBase_2` concept, which is the
|
||||||
vertex base required by the
|
vertex base required by the
|
||||||
`Segment_Delaunay_graph_hierarchy_2<Gt,DS>` class.
|
`Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>` class.
|
||||||
|
|
||||||
\tparam Vbb must be a model of the `SegmentDelaunayGraphVertexBase_2` concept.
|
\tparam Vbb must be a model of the `SegmentDelaunayGraphVertexBase_2` concept.
|
||||||
|
|
||||||
|
|
@ -16,9 +16,9 @@ vertex base required by the
|
||||||
\sa `SegmentDelaunayGraphVertexBase_2`
|
\sa `SegmentDelaunayGraphVertexBase_2`
|
||||||
\sa `SegmentDelaunayGraphHierarchyVertexBase_2`
|
\sa `SegmentDelaunayGraphHierarchyVertexBase_2`
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
\sa `SegmentDelaunayGraphDataStructure_2`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt,SSTag>`
|
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<St,Vb>`
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template< typename Vbb >
|
template< typename Vbb >
|
||||||
|
|
|
||||||
|
|
@ -7,20 +7,13 @@ namespace CGAL {
|
||||||
The class `Segment_Delaunay_graph_storage_site_2` is a model for the concept
|
The class `Segment_Delaunay_graph_storage_site_2` is a model for the concept
|
||||||
`SegmentDelaunayGraphStorageSite_2`.
|
`SegmentDelaunayGraphStorageSite_2`.
|
||||||
|
|
||||||
\tparam Gt must be a model of the `SegmentDelaunayGraphTraits_2` concept.
|
\tparam Gt must be a model of the `SegmentDelaunayGraphStorageTraits_2` concept.
|
||||||
|
|
||||||
\cgalModels `SegmentDelaunayGraphStorageSite_2`
|
\cgalModels `SegmentDelaunayGraphStorageSite_2`
|
||||||
|
|
||||||
\sa `SegmentDelaunayGraphSite_2`
|
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_site_2<K>`
|
\sa `CGAL::Segment_Delaunay_graph_site_2<K>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template< typename Gt >
|
template< typename St >
|
||||||
class Segment_Delaunay_graph_storage_site_2 {
|
class Segment_Delaunay_graph_storage_site_2 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -31,9 +24,9 @@ public:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the template parameter `Gt`.
|
A type for the template parameter `St`.
|
||||||
*/
|
*/
|
||||||
typedef Gt Geom_traits;
|
typedef St Storage_traits;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
namespace CGAL {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSegmentDelaunayGraph2Ref
|
||||||
|
|
||||||
|
The class `Segment_Delaunay_graph_storage_traits_2` provides a model for the
|
||||||
|
`SegmentDelaunayGraphStorageTraits_2` concept.
|
||||||
|
|
||||||
|
To avoid redundancy in the storage of points, the input points of a segment Delaunay graph
|
||||||
|
are stored in a container, and the various types of sites (input points and segments,
|
||||||
|
points of intersection, subsegments with one or two points of intersection as endpoints)
|
||||||
|
only store handles to the points in the container.
|
||||||
|
|
||||||
|
See section \ref Segment_Delaunay_graph_2StronglyIntersecting for more information.
|
||||||
|
|
||||||
|
\tparam Gt must be a model of the concept `SegmentDelaunayGraphTraits_2`.
|
||||||
|
|
||||||
|
\cgalModels `SegmentDelaunayGraphStorageTraits_2`
|
||||||
|
|
||||||
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
*/
|
||||||
|
template<class Gt>
|
||||||
|
class Segment_Delaunay_graph_storage_traits_2
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/*!
|
||||||
|
*/
|
||||||
|
typedef unspecified_type Storage_site_2;
|
||||||
|
};
|
||||||
|
|
||||||
|
} //namespace CGAL
|
||||||
|
|
@ -28,8 +28,8 @@ part).
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
\sa `CGAL::Field_tag`
|
\sa `CGAL::Field_tag`
|
||||||
\sa `CGAL::Field_with_sqrt_tag`
|
\sa `CGAL::Field_with_sqrt_tag`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
@ -101,8 +101,8 @@ part).
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
\sa `CGAL::Euclidean_ring_tag`
|
\sa `CGAL::Euclidean_ring_tag`
|
||||||
\sa `CGAL::Field_with_sqrt_tag`
|
\sa `CGAL::Field_with_sqrt_tag`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
|
||||||
|
|
@ -4,33 +4,23 @@ namespace CGAL {
|
||||||
/*!
|
/*!
|
||||||
\ingroup PkgSegmentDelaunayGraph2Ref
|
\ingroup PkgSegmentDelaunayGraph2Ref
|
||||||
|
|
||||||
|
\cgalModels `SegmentDelaunayGraphVertexBase_2`
|
||||||
|
|
||||||
The class `Segment_Delaunay_graph_vertex_base_2` provides a model for the
|
The class `Segment_Delaunay_graph_vertex_base_2` provides a model for the
|
||||||
`SegmentDelaunayGraphVertexBase_2` concept which is the vertex
|
`SegmentDelaunayGraphVertexBase_2` concept which is the vertex
|
||||||
base required by the `SegmentDelaunayGraphDataStructure_2`
|
base required by the `SegmentDelaunayGraphDataStructure_2`
|
||||||
concept.
|
concept.
|
||||||
|
|
||||||
\tparam Gt must be a model of the concept `SegmentDelaunayGraphTraits_2`.
|
\tparam St must be a model of the concept `SegmentDelaunayGraphStorageTraits_2`.
|
||||||
\tparam SSTag indicates whether
|
This type must be template parameter used for `CGAL::Segment_Delaunay_graph_2`.
|
||||||
or not to use the simple storage site that does not support
|
|
||||||
intersecting segments, or the full storage site, that supports
|
|
||||||
intersecting segments. The possible values are `Tag_true`
|
|
||||||
and `Tag_false`. `Tag_true` indicates that the
|
|
||||||
full storage site is to be used, whereas `Tag_false`
|
|
||||||
indicates that the simple storage site is to be used.
|
|
||||||
|
|
||||||
\cgalModels `SegmentDelaunayGraphVertexBase_2`
|
\tparam Vb is a vertex base class from which `Segment_Delaunay_graph_vertex_base_2` derives.
|
||||||
|
It must be a model of the `TriangulationVertexBase_2` concept.
|
||||||
\sa `SegmentDelaunayGraphVertexBase_2`
|
It has the default value `CGAL::Triangulation_vertex_base_2<St::Geom_traits>`.
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
|
||||||
|
|
||||||
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vb>`
|
||||||
*/
|
*/
|
||||||
template< typename Gt, typename SSTag >
|
template< typename St, typename Vb >
|
||||||
class Segment_Delaunay_graph_vertex_base_2 {
|
class Segment_Delaunay_graph_vertex_base_2 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSegmentDelaunayGraph2Concepts
|
||||||
|
\cgalConcept
|
||||||
|
|
||||||
|
The concept `SegmentDelaunayGraphFaceBase_2` describes the
|
||||||
|
requirements for the face base class of the
|
||||||
|
`SegmentDelaunayGraphDataStructure_2` concept.
|
||||||
|
|
||||||
|
\cgalRefines `TriangulationFaceBase_2`
|
||||||
|
|
||||||
|
\cgalHasModel `CGAL::Segment_Delaunay_graph_face_base_2<Gt>`
|
||||||
|
|
||||||
|
\sa `SegmentDelaunayGraphDataStructure_2`
|
||||||
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
|
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||||
|
*/
|
||||||
|
class SegmentDelaunayGraphFaceBase_2 {
|
||||||
|
public:
|
||||||
|
|
||||||
|
}; /* end SegmentDelaunayGraphFaceBase_2 */
|
||||||
|
|
||||||
|
|
@ -26,13 +26,13 @@ The `SegmentDelaunayGraphHierarchyVertexBase_2` concept does not
|
||||||
introduce any constructors in addition to those of the
|
introduce any constructors in addition to those of the
|
||||||
`SegmentDelaunayGraphVertexBase_2` concept.
|
`SegmentDelaunayGraphVertexBase_2` concept.
|
||||||
|
|
||||||
\cgalHasModel CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<CGAL::Segment_Delaunay_graph_vertex_base_2<Gt,SSTag> >
|
\cgalHasModel CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<CGAL::Segment_Delaunay_graph_vertex_base_2<St> >
|
||||||
|
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
\sa `SegmentDelaunayGraphDataStructure_2`
|
||||||
\sa `SegmentDelaunayGraphVertexBase_2`
|
\sa `SegmentDelaunayGraphVertexBase_2`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,SSTag,DS>`
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt,SSTag>`
|
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<St,Vb>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ typedef unspecified_type RT;
|
||||||
|
|
||||||
/// \name Creation
|
/// \name Creation
|
||||||
/// In addition to the default and copy constructors the following
|
/// In addition to the default and copy constructors the following
|
||||||
/// static methods are available for constructing sites:
|
/// static methods must be available for constructing sites:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,92 @@
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSegmentDelaunayGraph2Concepts
|
||||||
|
\cgalConcept
|
||||||
|
|
||||||
|
The concept `SegmentDelaunayGraphStorageTraits_2` provides the
|
||||||
|
requirements for the storage traits of a segment Delaunay graph.
|
||||||
|
|
||||||
|
To avoid redundancy in the storage of points, the input points of a segment Delaunay graph
|
||||||
|
are stored in a container, and the various types of sites (input points and segments,
|
||||||
|
points of intersection, subsegments with one or two points of intersection as endpoints)
|
||||||
|
only store handles to the points in the container.
|
||||||
|
|
||||||
|
See section \ref Segment_Delaunay_graph_2StronglyIntersecting for more information.
|
||||||
|
|
||||||
|
\cgalRefines `DefaultConstructible`
|
||||||
|
\cgalRefines `CopyConstructible`
|
||||||
|
\cgalRefines `Assignable`
|
||||||
|
|
||||||
|
\cgalHasModel `CGAL::Segment_Delaunay_graph_storage_traits_2<K>`
|
||||||
|
|
||||||
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SegmentDelaunayGraphStorageTraits_2 {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/// \name Types
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
The geometric traits type. It must be a model of `SegmentDelaunayGraphTraits_2`.
|
||||||
|
*/
|
||||||
|
typedef unspecified_type Geom_traits;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
A container of unique points, used to associate a unique handle to each
|
||||||
|
unique input geometric position.
|
||||||
|
*/
|
||||||
|
typedef std::set<typename Geom_traits::Point_2> Point_container;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
*/
|
||||||
|
typedef Point_container::iterator Point_handle;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
*/
|
||||||
|
typedef Point_container::const_iterator const_Point_handle;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Type for the storage site. It must be a model of `SegmentDelaunayGraphStorageSite_2`.
|
||||||
|
*/
|
||||||
|
typedef unspecified_type Storage_site_2;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Type of the storage site construction functor.
|
||||||
|
*/
|
||||||
|
typedef CGAL::SegmentDelaunayGraph_2::Construct_storage_site_2<Self> Construct_storage_site_2;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Creation
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructor.
|
||||||
|
*/
|
||||||
|
SegmentDelaunayGraphStorageTraits_2(const Geom_traits& gt = Geom_traits());
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Access Functions
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
returns the geometric traits.
|
||||||
|
*/
|
||||||
|
const Geom_traits& geom_traits() const;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Constructions
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
returns a functor of type `Construct_storage_site_2`.
|
||||||
|
*/
|
||||||
|
Construct_storage_site_2 construct_storage_site_2_object() const
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
}; /* end SegmentDelaunayGraphStorageTraits_2 */
|
||||||
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\ingroup PkgSegmentDelaunayGraph2Concepts
|
\ingroup PkgSegmentDelaunayGraph2Concepts
|
||||||
|
|
||||||
\cgalConcept
|
\cgalConcept
|
||||||
|
|
||||||
\cgalRefines `TriangulationTraits_2`
|
\cgalRefines `TriangulationTraits_2`
|
||||||
|
|
||||||
The concept `SegmentDelaunayGraphTraits_2` provides the traits
|
The concept `SegmentDelaunayGraphTraits_2` provides the traits
|
||||||
requirements for the `CGAL::Segment_Delaunay_graph_2<Gt,DS>` and
|
requirements for the `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>` and
|
||||||
`CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>` classes. In
|
`CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>` classes.
|
||||||
particular, it provides a type `Site_2`, which must be a model of
|
In particular, it provides a type `Site_2`, which must be a model of
|
||||||
the concept `SegmentDelaunayGraphSite_2`. It also provides
|
the concept `SegmentDelaunayGraphSite_2`. It also provides
|
||||||
constructions for sites and several function object
|
constructions for sites and several function object
|
||||||
types for the predicates.
|
types for the predicates.
|
||||||
|
|
@ -19,8 +20,8 @@ types for the predicates.
|
||||||
\cgalHasModel `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
\cgalHasModel `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
||||||
\sa `SegmentDelaunayGraphSite_2`
|
\sa `SegmentDelaunayGraphSite_2`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
\sa `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
\sa `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
\sa `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,15 @@ requirements for the vertex base class of the
|
||||||
site of the segment Delaunay graph and provides access to one of its
|
site of the segment Delaunay graph and provides access to one of its
|
||||||
incident faces through a `Face_handle`.
|
incident faces through a `Face_handle`.
|
||||||
|
|
||||||
\cgalHasModel `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt>`
|
\cgalHasModel `CGAL::Segment_Delaunay_graph_vertex_base_2<St>`
|
||||||
|
|
||||||
\sa `SegmentDelaunayGraphDataStructure_2`
|
|
||||||
\sa `SegmentDelaunayGraphTraits_2`
|
\sa `SegmentDelaunayGraphTraits_2`
|
||||||
\sa `SegmentDelaunayGraphSite_2`
|
\sa `SegmentDelaunayGraphSite_2`
|
||||||
\sa `SegmentDelaunayGraphStorageSite_2`
|
\sa `SegmentDelaunayGraphStorageSite_2`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt>`
|
|
||||||
\sa `CGAL::Segment_Delaunay_graph_site_2<K>`
|
\sa `CGAL::Segment_Delaunay_graph_site_2<K>`
|
||||||
\sa `CGAL::Segment_Delaunay_graph_storage_site_2<Gt,SSTag>`
|
\sa `CGAL::Segment_Delaunay_graph_storage_site_2<Gt,SSTag>`
|
||||||
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
\sa `CGAL::Triangulation_data_structure_2<Vb,Fb>`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class SegmentDelaunayGraphVertexBase_2 {
|
class SegmentDelaunayGraphVertexBase_2 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -31,46 +27,40 @@ public:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the geometric traits that defines
|
A type for the geometric traits that defines the site.
|
||||||
the site. \pre The type `Geom_traits` must define the type `Site_2`.
|
\pre The type `Geom_traits` must define the type `Site_2`.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Geom_traits;
|
typedef unspecified_type Geom_traits;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the site. This type must coincide
|
A type for the site. This type must coincide with the type `Geom_traits::Site_2`.
|
||||||
with the type `Geom_traits::Site_2`.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Site_2;
|
typedef unspecified_type Site_2;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type that indicates what kind of
|
A type that indicates what kind of storage type to use.
|
||||||
storage type to use. `Storage_site_tag` must either be
|
`Storage_site_tag` must either be `CGAL::Tag_true` or `CGAL::Tag_false`.
|
||||||
`CGAL::Tag_true` or `CGAL::Tag_false`.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Storage_site_tag;
|
typedef unspecified_type Storage_site_tag;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the internal representation
|
A type for the internal representation of sites.
|
||||||
of sites. This type must satisfy the requirements of the concept
|
This type must satisfy the requirements of the concept `SegmentDelaunayGraphStorageSite_2`.
|
||||||
`SegmentDelaunayGraphStorageSite_2`.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Storage_site_2;
|
typedef unspecified_type Storage_site_2;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the
|
A type for the underlying data structure, to which the vertex belongs to.
|
||||||
underlying data structure, to which the vertex belongs to.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Data_structure;
|
typedef unspecified_type Data_structure;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the vertex handle of the
|
A type for the vertex handle of the segment Delaunay graph data structure.
|
||||||
segment Delaunay graph data structure.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Vertex_handle;
|
typedef unspecified_type Vertex_handle;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
A type for the face handle of the
|
A type for the face handle of the segment Delaunay graph data structure.
|
||||||
segment Delaunay graph data structure.
|
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Face_handle;
|
typedef unspecified_type Face_handle;
|
||||||
|
|
||||||
|
|
@ -82,18 +72,15 @@ typedef unspecified_type Face_handle;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Constructs a vertex associated with the site represented by the
|
Constructs a vertex associated with the site represented by the storage site `ss`.
|
||||||
storage site `ss`.
|
|
||||||
*/
|
*/
|
||||||
SegmentDelaunayGraphVertexBase_2(Storage_site_2 ss);
|
SegmentDelaunayGraphVertexBase_2(const Storage_site_2& ss);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Constructs a vertex associated with
|
Constructs a vertex associated with the site represented by the storage site `ss`,
|
||||||
the site represented by the storage site `ss`,
|
|
||||||
and pointing to the face associated with the face handle `f`.
|
and pointing to the face associated with the face handle `f`.
|
||||||
*/
|
*/
|
||||||
SegmentDelaunayGraphVertexBase_2(Storage_site_2 ss,
|
SegmentDelaunayGraphVertexBase_2(const Storage_site_2& ss, Face_handle f);
|
||||||
Face_handle f);
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -103,7 +90,7 @@ Face_handle f);
|
||||||
/*!
|
/*!
|
||||||
Returns the storage site representing the site.
|
Returns the storage site representing the site.
|
||||||
*/
|
*/
|
||||||
Storage_site_2 storage_site();
|
const Storage_site_2& storage_site();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the site.
|
Returns the site.
|
||||||
|
|
@ -123,7 +110,7 @@ Face_handle face();
|
||||||
/*!
|
/*!
|
||||||
Sets the storage site.
|
Sets the storage site.
|
||||||
*/
|
*/
|
||||||
void set_site(Storage_site_2 ss);
|
void set_site(const Storage_site_2& ss);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the incident face.
|
Sets the incident face.
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
\cgalPkgShortInfoEnd
|
\cgalPkgShortInfoEnd
|
||||||
\cgalPkgDescriptionEnd
|
\cgalPkgDescriptionEnd
|
||||||
|
|
||||||
\cgal provides the class `CGAL::Segment_Delaunay_graph_2<Gt,DS>` for
|
\cgal provides the class `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>` for
|
||||||
computing the 2D Delaunay graph of segments and points. The two
|
computing the 2D Delaunay graph of segments and points. The two
|
||||||
template parameters must be models of the
|
template parameters must be models of the
|
||||||
`SegmentDelaunayGraphTraits_2` and
|
`SegmentDelaunayGraphTraits_2` and
|
||||||
|
|
@ -44,6 +44,7 @@ the class
|
||||||
|
|
||||||
- `SegmentDelaunayGraphSite_2`
|
- `SegmentDelaunayGraphSite_2`
|
||||||
- `SegmentDelaunayGraphStorageSite_2`
|
- `SegmentDelaunayGraphStorageSite_2`
|
||||||
|
- `SegmentDelaunayGraphStorageTraits_2`
|
||||||
- `SegmentDelaunayGraphDataStructure_2`
|
- `SegmentDelaunayGraphDataStructure_2`
|
||||||
- `SegmentDelaunayGraphVertexBase_2`
|
- `SegmentDelaunayGraphVertexBase_2`
|
||||||
- `SegmentDelaunayGraphTraits_2`
|
- `SegmentDelaunayGraphTraits_2`
|
||||||
|
|
@ -51,15 +52,17 @@ the class
|
||||||
|
|
||||||
\cgalCRPSection{Classes}
|
\cgalCRPSection{Classes}
|
||||||
|
|
||||||
- `CGAL::Segment_Delaunay_graph_2<Gt,DS>`
|
- `CGAL::Segment_Delaunay_graph_2<Gt,St,DS>`
|
||||||
- `CGAL::Segment_Delaunay_graph_site_2<K>`
|
- `CGAL::Segment_Delaunay_graph_site_2<K>`
|
||||||
- `CGAL::Segment_Delaunay_graph_storage_site_2<Gt>`
|
- `CGAL::Segment_Delaunay_graph_storage_site_2<Gt>`
|
||||||
- `CGAL::Segment_Delaunay_graph_vertex_base_2<Gt,SSTag>`
|
- `CGAL::Segment_Delaunay_graph_storage_traits_2<Gt>`
|
||||||
|
- `CGAL::Segment_Delaunay_graph_vertex_base_2<St,Vb>`
|
||||||
|
- `CGAL::Segment_Delaunay_graph_face_base_2<Gt,Fb>`
|
||||||
- `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
- `CGAL::Segment_Delaunay_graph_traits_2<K,MTag>`
|
||||||
- `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
- `CGAL::Segment_Delaunay_graph_traits_without_intersections_2<K,MTag>`
|
||||||
- `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
- `CGAL::Segment_Delaunay_graph_filtered_traits_2<CK,CM,EK,EM,FK,FM>`
|
||||||
- `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
- `CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>`
|
||||||
- `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,STag,DS>`
|
- `CGAL::Segment_Delaunay_graph_hierarchy_2<Gt,St,STag,DS>`
|
||||||
- `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
- `CGAL::Segment_Delaunay_graph_hierarchy_vertex_base_2<Vbb>`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -294,8 +294,8 @@ points of intersection. To avoid this redundancy, input points are
|
||||||
stored in a container, and the various types of sites (input points
|
stored in a container, and the various types of sites (input points
|
||||||
and segments, points of intersection, subsegments with one or two
|
and segments, points of intersection, subsegments with one or two
|
||||||
points of intersection as endpoints) only store handles to the points
|
points of intersection as endpoints) only store handles to the points
|
||||||
in the container. This is achieved by the
|
in the container. This is achieved with the
|
||||||
`Segment_Delaunay_graph_storage_site_2<Gt>` class which is a
|
`Segment_Delaunay_graph_storage_site_2<Gt>` class, which is a
|
||||||
model of the corresponding concept:
|
model of the corresponding concept:
|
||||||
`SegmentDelaunayGraphStorageSite_2`. This concept enforces a site
|
`SegmentDelaunayGraphStorageSite_2`. This concept enforces a site
|
||||||
to be represented by up to 6 handles (which are very lightweight
|
to be represented by up to 6 handles (which are very lightweight
|
||||||
|
|
@ -449,9 +449,8 @@ class is used, the possible values are `Field_with_sqrt_tag` and
|
||||||
|
|
||||||
\section secsdg2hierarchy The Segment Delaunay Graph Hierarchy
|
\section secsdg2hierarchy The Segment Delaunay Graph Hierarchy
|
||||||
|
|
||||||
The
|
The `Segment_Delaunay_graph_hierarchy_2<SegmentDelaunayGraphTraits_2, SegmentDelaunayGraphStorageTraits_2, SSTag, SegmentDelaunayGraphDataStructure_2>`
|
||||||
`Segment_Delaunay_graph_hierarchy_2<SegmentDelaunayGraphTraits_2, SSTag, SegmentDelaunayGraphDataStructure_2>` class is the analogue
|
class is the analogue of the `Triangulation_hierarchy_2` or the
|
||||||
of the `Triangulation_hierarchy_2` or the
|
|
||||||
`Apollonius_graph_hierarchy_2` classes, applied to the segment
|
`Apollonius_graph_hierarchy_2` classes, applied to the segment
|
||||||
Delaunay graph. It consists of a hierarchy of
|
Delaunay graph. It consists of a hierarchy of
|
||||||
segment Delaunay graphs constructed in a manner analogous to the
|
segment Delaunay graphs constructed in a manner analogous to the
|
||||||
|
|
@ -480,9 +479,9 @@ Delaunay graphs. If `SSTag` is set to `true`, we have segment
|
||||||
Delaunay graphs at all levels of the hierarchy.
|
Delaunay graphs at all levels of the hierarchy.
|
||||||
|
|
||||||
The class
|
The class
|
||||||
`Segment_Delaunay_graph_hierarchy_2<SegmentDelaunayGraphTraits_2, SSTag, SegmentDelaunayGraphDataStructure_2>`
|
`Segment_Delaunay_graph_hierarchy_2<SegmentDelaunayGraphTraits_2, SegmentDelaunayGraphStorageTraits_2, SSTag, SegmentDelaunayGraphDataStructure_2>`
|
||||||
has exactly the same interface and functionality as the
|
has exactly the same interface and functionality as the
|
||||||
`Segment_Delaunay_graph_2<SegmentDelaunayGraphTraits_2,SegmentDelaunayGraphDataStructure_2>`
|
`Segment_Delaunay_graph_2<SegmentDelaunayGraphTraits_2,SegmentDelaunayGraphStorageTraits_2,SegmentDelaunayGraphDataStructure_2>`
|
||||||
class. Using the segment Delaunay graph hierarchy involves an
|
class. Using the segment Delaunay graph hierarchy involves an
|
||||||
additional cost in space and time for maintaining the hierarchy. Our
|
additional cost in space and time for maintaining the hierarchy. Our
|
||||||
experiments have shown that it usually pays off to use the hierarchy
|
experiments have shown that it usually pays off to use the hierarchy
|
||||||
|
|
|
||||||
|
|
@ -22,15 +22,15 @@
|
||||||
|
|
||||||
#include <CGAL/Segment_Delaunay_graph_2/basic.h>
|
#include <CGAL/Segment_Delaunay_graph_2/basic.h>
|
||||||
|
|
||||||
#include <CGAL/Triangulation_ds_vertex_base_2.h>
|
#include <CGAL/Triangulation_vertex_base_2.h>
|
||||||
#include <CGAL/Segment_Delaunay_graph_storage_site_2.h>
|
#include <CGAL/Segment_Delaunay_graph_storage_site_2.h>
|
||||||
#include <CGAL/Segment_Delaunay_graph_simple_storage_site_2.h>
|
#include <CGAL/Segment_Delaunay_graph_simple_storage_site_2.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
template < class STraits, class Vb = Triangulation_ds_vertex_base_2<> >
|
template < class STraits,
|
||||||
|
class Vb = Triangulation_vertex_base_2<
|
||||||
|
typename STraits::Geom_traits> >
|
||||||
class Segment_Delaunay_graph_vertex_base_2
|
class Segment_Delaunay_graph_vertex_base_2
|
||||||
: public Vb
|
: public Vb
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,6 @@ guarantee the combinatorial validity of the resulting data structure.
|
||||||
template< typename VertexBase, typename FaceBase >
|
template< typename VertexBase, typename FaceBase >
|
||||||
class Triangulation_data_structure_2 {
|
class Triangulation_data_structure_2 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
/// \name Types
|
/// \name Types
|
||||||
|
|
||||||
/// @{
|
/// @{
|
||||||
|
|
@ -60,10 +58,9 @@ public:
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \name
|
/// \name Ranges
|
||||||
/// \cgalAdvancedBegin
|
/// \cgalAdvancedBegin
|
||||||
/// In addition to the interface documented in the concept,
|
/// In addition to the interface documented in the concept, the class offers the following types.
|
||||||
/// the class offers the following types.
|
|
||||||
/// \cgalAdvancedEnd
|
/// \cgalAdvancedEnd
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
|
@ -87,24 +84,24 @@ typedef Compact_container<Face> Face_range;
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a reference to the container of faces.
|
returns a reference to the container of faces.
|
||||||
*/
|
*/
|
||||||
Face_range & faces() const;
|
Face_range& faces() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a reference to the container of faces.
|
returns a reference to the container of faces.
|
||||||
*/
|
*/
|
||||||
Face_range & faces();
|
Face_range& faces();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a reference to the container of vertices.
|
returns a reference to the container of vertices.
|
||||||
*/
|
*/
|
||||||
Vertex_range & vertices() const;
|
Vertex_range& vertices() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns a reference to the container of vertices.
|
returns a reference to the container of vertices.
|
||||||
*/
|
*/
|
||||||
Vertex_range & vertices();
|
Vertex_range& vertices();
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
@ -112,67 +109,58 @@ Vertex_range & vertices();
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Joins
|
joins the vertices that are endpoints of the edge `(f,i)`, and returns a vertex handle to common vertex
|
||||||
the vertices that are endpoints of the edge `(f,i)`, and returns
|
(see Fig.\ \ref figtdssplitjoin).
|
||||||
a vertex handle to common vertex (see
|
|
||||||
Fig.\ \ref figtdssplitjoin).
|
|
||||||
\pre `f` must be different from `Face_handle()` and `i` must be `0`, `1` or `2`.
|
\pre `f` must be different from `Face_handle()` and `i` must be `0`, `1` or `2`.
|
||||||
*/
|
*/
|
||||||
Vertex_handle join_vertices(Face_handle f, int i);
|
Vertex_handle join_vertices(Face_handle f, int i);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Joins
|
joins the vertices that are endpoints of the edge `e`, and returns a vertex handle to common vertex.
|
||||||
the vertices that are endpoints of the edge `e`, and returns
|
|
||||||
a vertex handle to common vertex.
|
|
||||||
*/
|
*/
|
||||||
Vertex_handle join_vertices(Edge e);
|
Vertex_handle join_vertices(Edge e);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Joins
|
joins the vertices that are endpoints of the edge `*eit`, and returns a vertex handle to common vertex.
|
||||||
the vertices that are endpoints of the edge `*eit`, and returns
|
|
||||||
a vertex handle to common vertex.
|
|
||||||
*/
|
*/
|
||||||
Vertex_handle join_vertices(Edge_iterator eit);
|
Vertex_handle join_vertices(Edge_iterator eit);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Joins
|
joins the vertices that are endpoints of the edge `*ec`, and returns a vertex handle to common vertex.
|
||||||
the vertices that are endpoints of the edge `*ec`, and returns
|
|
||||||
a vertex handle to common vertex.
|
|
||||||
*/
|
*/
|
||||||
Vertex_handle join_vertices(Edges_circulator ec);
|
Vertex_handle join_vertices(Edges_circulator ec);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Splits the vertex `v` into two vertices `v1` and
|
splits the vertex `v` into two vertices `v1` and `v2`.
|
||||||
`v2`. The common faces `f` and `g` of `v1` and
|
|
||||||
`v2` are created after (in the counter-clockwise sense) the
|
The common faces `f` and `g` of `v1` and `v2` are created after (in the counter-clockwise sense) the
|
||||||
faces `f1` and `f2`. The 4-tuple `(v1,v2,f,g)` is
|
faces `f1` and `f2`. The 4-tuple `(v1,v2,f,g)` is returned (see Fig. \ref figtdssplitjoin).
|
||||||
returned (see Fig. \ref figtdssplitjoin).
|
|
||||||
\pre `dimension()` must be equal to `2`, `f1` and `f2` must be different from `Face_handle()` and `v` must be a vertex of both `f1` and `f2`.
|
\pre `dimension()` must be equal to `2`, `f1` and `f2` must be different from `Face_handle()` and `v` must be a vertex of both `f1` and `f2`.
|
||||||
*/
|
*/
|
||||||
boost::tuples::tuple<Vertex_handle, Vertex_handle, Face_handle,
|
boost::tuples::tuple<Vertex_handle, Vertex_handle, Face_handle, Face_handle>
|
||||||
Face_handle>
|
split_vertex(Vertex_handle v, Face_handle f1, Face_handle f2);
|
||||||
split_vertex(Vertex_handle v, Face_handle f1, Face_handle
|
|
||||||
f2);
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts
|
inserts a degree two vertex and two faces adjacent to it that have two common edges.
|
||||||
a degree two vertex and two faces adjacent to it that have two common
|
|
||||||
edges. The edge defined by the face handle `f` and the integer
|
The edge defined by the face handle `f` and the integer `i` is duplicated. It returns a handle
|
||||||
`i` is duplicated. It returns a handle to the vertex created
|
to the vertex created (see Fig. \ref figtdsirdeg2).
|
||||||
(see Fig. \ref figtdsirdeg2).
|
|
||||||
*/
|
*/
|
||||||
Vertex_handle insert_degree_2(Face_handle f, int i);
|
Vertex_handle insert_degree_2(Face_handle f, int i); // @fixme Missing from SDG concept. Remove from here? Picture in Apollonius and SDG?
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Removes a degree 2
|
removes a degree 2 vertex and the two faces adjacent to it.
|
||||||
vertex and the two faces adjacent to it. The two edges of the star of
|
|
||||||
`v` that are not incident to it are collapsed
|
The two edges of the star of `v` that are not incident to it are collapsed (see Fig. \ref figtdsirdeg2).
|
||||||
(see Fig. \ref figtdsirdeg2).
|
|
||||||
\pre The degree of `v` must be equal to 2.
|
\pre The degree of `v` must be equal to 2.
|
||||||
*/
|
*/
|
||||||
void remove_degree_2(Vertex_handle v);
|
void remove_degree_2(Vertex_handle v); // @fixme Missing from SDG concept. Remove from here? Picture in Apollonius and SDG?
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
}; /* end Triangulation_data_structure_2 */
|
}; /* end Triangulation_data_structure_2 */
|
||||||
|
|
||||||
} /* end namespace CGAL */
|
} /* end namespace CGAL */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue