mirror of https://github.com/CGAL/cgal
Misc fixes
This commit is contained in:
parent
5759ce49ae
commit
f41e69a5fe
|
|
@ -198,7 +198,7 @@ public:
|
||||||
|
|
||||||
/// \name
|
/// \name
|
||||||
/// A point-offset pair (`p`,`off`) is said to be in conflict with a
|
/// A point-offset pair (`p`,`off`) is said to be in conflict with a
|
||||||
/// cell `c` iff `dt`.`side_of_circle(c, p, off)` returns
|
/// face `f` iff `dt`.`side_of_circle(f, p, off)` returns
|
||||||
/// `ON_BOUNDED_SIDE`. The set of faces that are in conflict with
|
/// `ON_BOUNDED_SIDE`. The set of faces that are in conflict with
|
||||||
/// (`p`,`off`) is star-shaped.
|
/// (`p`,`off`) is star-shaped.
|
||||||
/// @{
|
/// @{
|
||||||
|
|
@ -309,7 +309,7 @@ public:
|
||||||
Checks the combinatorial validity of the triangulation and the
|
Checks the combinatorial validity of the triangulation and the
|
||||||
validity of its geometric embedding (see
|
validity of its geometric embedding (see
|
||||||
Section \ref P2Triangulation2secintro). Also checks that all the
|
Section \ref P2Triangulation2secintro). Also checks that all the
|
||||||
circumscribing circles of cells are empty.
|
circumscribing circles of faces are empty.
|
||||||
|
|
||||||
When `verbose` is set to true, messages describing the first
|
When `verbose` is set to true, messages describing the first
|
||||||
invalidity encountered are printed.
|
invalidity encountered are printed.
|
||||||
|
|
@ -321,9 +321,9 @@ public:
|
||||||
/*!
|
/*!
|
||||||
\cgalAdvancedFunction
|
\cgalAdvancedFunction
|
||||||
\cgalAdvancedBegin
|
\cgalAdvancedBegin
|
||||||
Checks the combinatorial and geometric validity of the cell (see
|
Checks the combinatorial and geometric validity of the face (see
|
||||||
Section \ref P2Triangulation2secintro). Also checks that the
|
Section \ref P2Triangulation2secintro). Also checks that the
|
||||||
circumscribing circle of cells is empty.
|
circumscribing circle of faces is empty.
|
||||||
|
|
||||||
When `verbose` is set to true, messages are printed to give
|
When `verbose` is set to true, messages are printed to give
|
||||||
a precise indication of the kind of invalidity encountered.
|
a precise indication of the kind of invalidity encountered.
|
||||||
|
|
|
||||||
|
|
@ -65,10 +65,10 @@ concepts `Periodic_2TriangulationFaceBase_2` and
|
||||||
A triangulation is stored as a collection of vertices and faces that
|
A triangulation is stored as a collection of vertices and faces that
|
||||||
are linked together through incidence and adjacency relations. Each
|
are linked together through incidence and adjacency relations. Each
|
||||||
face gives access to its three incident vertices and to its three
|
face gives access to its three incident vertices and to its three
|
||||||
adjacent cells. Each vertex gives access to one of its incident
|
adjacent faces. Each vertex gives access to one of its incident
|
||||||
faces.
|
faces.
|
||||||
|
|
||||||
The three vertices of a cell are indexed with 0, 1, and 2 in positive
|
The three vertices of a face are indexed with 0, 1, and 2 in positive
|
||||||
orientation, the positive orientation being defined by the orientation
|
orientation, the positive orientation being defined by the orientation
|
||||||
of the underlying space \f$ \mathbb T_c^3\f$. The neighbors of a face are
|
of the underlying space \f$ \mathbb T_c^3\f$. The neighbors of a face are
|
||||||
also indexed with 0, 1, 2 in such a way that the neighbor indexed
|
also indexed with 0, 1, 2 in such a way that the neighbor indexed
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ A periodic triangulation is said to be `locally valid` iff
|
||||||
data structure, is `locally valid`
|
data structure, is `locally valid`
|
||||||
(see Chapter \ref Chapter_2D_Triangulation_Data_Structure)
|
(see Chapter \ref Chapter_2D_Triangulation_Data_Structure)
|
||||||
|
|
||||||
<B>(c)</B> Any cell has its vertices ordered according to positive
|
<B>(c)</B> Any face has its vertices ordered according to positive
|
||||||
orientation. See \cgalFigureRef{P2Triangulation2figorient}.
|
orientation. See \cgalFigureRef{P2Triangulation2figorient}.
|
||||||
|
|
||||||
\section P2T2_Delaunay Delaunay Triangulation
|
\section P2T2_Delaunay Delaunay Triangulation
|
||||||
|
|
@ -264,7 +264,7 @@ to support periodicity: the vertex and face must be models of
|
||||||
`Periodic_2TriangulationVertexBase_2` and `Periodic_2TriangulationFaceBase_2`.
|
`Periodic_2TriangulationVertexBase_2` and `Periodic_2TriangulationFaceBase_2`.
|
||||||
A model of such concept is `CGAL::Triangulation_data_structure_2`. It is
|
A model of such concept is `CGAL::Triangulation_data_structure_2`. It is
|
||||||
parameterized by a vertex base class and a face base class, which gives the
|
parameterized by a vertex base class and a face base class, which gives the
|
||||||
possibility to customize the vertices and cells used by the triangulation data
|
possibility to customize the vertices and faces used by the triangulation data
|
||||||
structure, and hence by the geometric triangulation using it.
|
structure, and hence by the geometric triangulation using it.
|
||||||
Basic models of the vertex and face concepts are provided: `CGAL::Periodic_2_triangulation_vertex_base_2`
|
Basic models of the vertex and face concepts are provided: `CGAL::Periodic_2_triangulation_vertex_base_2`
|
||||||
and `CGAL::Periodic_2_triangulation_face_base_2`.
|
and `CGAL::Periodic_2_triangulation_face_base_2`.
|
||||||
|
|
@ -272,7 +272,7 @@ and `CGAL::Periodic_2_triangulation_face_base_2`.
|
||||||
A default value for the triangulation data structure parameter is provided in
|
A default value for the triangulation data structure parameter is provided in
|
||||||
all the triangulation classes, so it does not need to be specified by
|
all the triangulation classes, so it does not need to be specified by
|
||||||
the user unless he wants to use a different triangulation data
|
the user unless he wants to use a different triangulation data
|
||||||
structure or a different vertex or cell base class.
|
structure or a different vertex or face base class.
|
||||||
|
|
||||||
\subsection P2T2FlexDesign Flexibility of the Design
|
\subsection P2T2FlexDesign Flexibility of the Design
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,13 +37,10 @@ int main()
|
||||||
if (lt == Delaunay::VERTEX)
|
if (lt == Delaunay::VERTEX)
|
||||||
continue; // Point already exists
|
continue; // Point already exists
|
||||||
|
|
||||||
// Get the cells that conflict with p in a vector V,
|
// Get the faces that conflict with p in a vector V.
|
||||||
// and a facet on the boundary of this hole in f.
|
|
||||||
std::vector<Face_handle> V;
|
std::vector<Face_handle> V;
|
||||||
|
|
||||||
T.get_conflicts(p,
|
T.get_conflicts(p, std::back_inserter(V), f);
|
||||||
std::back_inserter(V), // Conflict cells in V
|
|
||||||
f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "Final triangulation has " << T.number_of_vertices()
|
std::cout << "Final triangulation has " << T.number_of_vertices()
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ public:
|
||||||
typedef Face_iterator Finite_faces_iterator;
|
typedef Face_iterator Finite_faces_iterator;
|
||||||
typedef Edge_iterator Finite_edges_iterator;
|
typedef Edge_iterator Finite_edges_iterator;
|
||||||
typedef Vertex_iterator Finite_vertices_iterator;
|
typedef Vertex_iterator Finite_vertices_iterator;
|
||||||
|
typedef Vertex_iterator All_vertices_iterator;
|
||||||
typedef Face_iterator All_faces_iterator;
|
typedef Face_iterator All_faces_iterator;
|
||||||
// \}
|
// \}
|
||||||
|
|
||||||
|
|
@ -389,10 +390,11 @@ public:
|
||||||
/// Checks whether the triangulation is a valid simplicial complex in the one cover.
|
/// Checks whether the triangulation is a valid simplicial complex in the one cover.
|
||||||
bool is_triangulation_in_1_sheet() const;
|
bool is_triangulation_in_1_sheet() const;
|
||||||
|
|
||||||
/// Convert a 9 sheeted cover (used for sparse triangulations) to a single sheeted cover.
|
/// Converts a 9 sheeted cover (used for sparse triangulations) to a single sheeted cover.
|
||||||
/// \pre !is_1_cover();
|
/// \pre !is_1_cover();
|
||||||
void convert_to_1_sheeted_covering();
|
void convert_to_1_sheeted_covering();
|
||||||
/// Convert a single sheeted cover (used for dense triangulations) to a 9 sheeted cover.
|
|
||||||
|
/// Converts a single sheeted cover (used for dense triangulations) to a 9 sheeted cover.
|
||||||
/// \pre is_1_cover();
|
/// \pre is_1_cover();
|
||||||
void convert_to_9_sheeted_covering();
|
void convert_to_9_sheeted_covering();
|
||||||
// \}
|
// \}
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,11 @@
|
||||||
|
|
||||||
#include <CGAL/license/Periodic_2_triangulation_2.h>
|
#include <CGAL/license/Periodic_2_triangulation_2.h>
|
||||||
|
|
||||||
|
|
||||||
#include <CGAL/assertions.h>
|
#include <CGAL/assertions.h>
|
||||||
#include <CGAL/iterator.h>
|
#include <CGAL/iterator.h>
|
||||||
#include <CGAL/array.h>
|
#include <CGAL/array.h>
|
||||||
|
|
||||||
namespace CGAL
|
namespace CGAL {
|
||||||
{
|
|
||||||
|
|
||||||
template < class T >
|
template < class T >
|
||||||
class Periodic_2_triangulation_triangle_iterator_2
|
class Periodic_2_triangulation_triangle_iterator_2
|
||||||
|
|
@ -234,7 +232,7 @@ private:
|
||||||
// intersect the boundary of the periodic domain. In UNIQUE mode
|
// intersect the boundary of the periodic domain. In UNIQUE mode
|
||||||
// this means that the offset with respect to drawing should
|
// this means that the offset with respect to drawing should
|
||||||
// differ in some entries. Otherwise we consider the offsets
|
// differ in some entries. Otherwise we consider the offsets
|
||||||
// internally stored inside the cell telling us that this cell
|
// internally stored inside the face telling us that this face
|
||||||
// wraps around the domain.
|
// wraps around the domain.
|
||||||
if (_it == T::UNIQUE_COVER_DOMAIN)
|
if (_it == T::UNIQUE_COVER_DOMAIN)
|
||||||
_t->get_offsets(pos, off0, off1, off2);
|
_t->get_offsets(pos, off0, off1, off2);
|
||||||
|
|
@ -502,7 +500,7 @@ private:
|
||||||
// intersect the boundary of the periodic domain. In UNIQUE mode
|
// intersect the boundary of the periodic domain. In UNIQUE mode
|
||||||
// this means that the offset with respect to drawing should
|
// this means that the offset with respect to drawing should
|
||||||
// differ in some entries. Otherwise we consider the offsets
|
// differ in some entries. Otherwise we consider the offsets
|
||||||
// internally stored inside the cell telling us that this cell
|
// internally stored inside the face telling us that this face
|
||||||
// wraps around the domain.
|
// wraps around the domain.
|
||||||
if (_it == T::UNIQUE_COVER_DOMAIN)
|
if (_it == T::UNIQUE_COVER_DOMAIN)
|
||||||
_t->get_offsets(*pos, off0, off1);
|
_t->get_offsets(*pos, off0, off1);
|
||||||
|
|
@ -797,7 +795,6 @@ template <class T>
|
||||||
class Periodic_2_triangulation_unique_vertex_iterator_2
|
class Periodic_2_triangulation_unique_vertex_iterator_2
|
||||||
: public Filter_iterator<typename T::Vertex_iterator, Periodic_2_triangulation_2_internal::Domain_tester<T> >
|
: public Filter_iterator<typename T::Vertex_iterator, Periodic_2_triangulation_2_internal::Domain_tester<T> >
|
||||||
{
|
{
|
||||||
|
|
||||||
typedef typename T::Vertex_handle Vertex_handle;
|
typedef typename T::Vertex_handle Vertex_handle;
|
||||||
typedef typename T::Vertex_iterator Vertex_iterator;
|
typedef typename T::Vertex_iterator Vertex_iterator;
|
||||||
|
|
||||||
|
|
@ -805,8 +802,8 @@ class Periodic_2_triangulation_unique_vertex_iterator_2
|
||||||
|
|
||||||
typedef Filter_iterator<Vertex_iterator, Tester > Base;
|
typedef Filter_iterator<Vertex_iterator, Tester > Base;
|
||||||
typedef Periodic_2_triangulation_unique_vertex_iterator_2 Self;
|
typedef Periodic_2_triangulation_unique_vertex_iterator_2 Self;
|
||||||
public:
|
|
||||||
|
|
||||||
|
public:
|
||||||
Periodic_2_triangulation_unique_vertex_iterator_2() : Base() {}
|
Periodic_2_triangulation_unique_vertex_iterator_2() : Base() {}
|
||||||
Periodic_2_triangulation_unique_vertex_iterator_2(const Base &b) : Base(b) {}
|
Periodic_2_triangulation_unique_vertex_iterator_2(const Base &b) : Base(b) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,8 @@ void test_iterators()
|
||||||
Vertex_handle vh2 = t.insert(Point(0.7, 0.7));
|
Vertex_handle vh2 = t.insert(Point(0.7, 0.7));
|
||||||
CGAL_USE(vh2);
|
CGAL_USE(vh2);
|
||||||
|
|
||||||
|
std::cout << "Cover = " << t.number_of_sheets()[0] << " " << t.number_of_sheets()[1] << std::endl;
|
||||||
|
|
||||||
// vertices
|
// vertices
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
for (typename T::Vertex_iterator vit = t_const.vertices_begin();
|
for (typename T::Vertex_iterator vit = t_const.vertices_begin();
|
||||||
|
|
|
||||||
|
|
@ -1703,6 +1703,8 @@ public:
|
||||||
return _tds.facets_end();
|
return _tds.facets_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finite iterators (= all iterators, for periodic triangulations)
|
||||||
|
|
||||||
Cell_iterator finite_cells_begin() const {
|
Cell_iterator finite_cells_begin() const {
|
||||||
return _tds.cells_begin();
|
return _tds.cells_begin();
|
||||||
}
|
}
|
||||||
|
|
@ -1731,6 +1733,8 @@ public:
|
||||||
return _tds.facets_end();
|
return _tds.facets_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// All iterators (= finite, for periodic triangulations)
|
||||||
|
|
||||||
All_cells_iterator all_cells_begin() const {
|
All_cells_iterator all_cells_begin() const {
|
||||||
return _tds.cells_begin();
|
return _tds.cells_begin();
|
||||||
}
|
}
|
||||||
|
|
@ -1831,6 +1835,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Circulators
|
// Circulators
|
||||||
|
|
||||||
Cell_circulator incident_cells(const Edge& e) const {
|
Cell_circulator incident_cells(const Edge& e) const {
|
||||||
return _tds.incident_cells(e);
|
return _tds.incident_cells(e);
|
||||||
}
|
}
|
||||||
|
|
@ -3451,7 +3456,7 @@ periodic_remove(Vertex_handle v,
|
||||||
nr_vec.push_back(boost::make_tuple(o_ch,o_i,new_ch));
|
nr_vec.push_back(boost::make_tuple(o_ch,o_i,new_ch));
|
||||||
nr_vec.push_back(boost::make_tuple(new_ch,i_i,o_ch));
|
nr_vec.push_back(boost::make_tuple(new_ch,i_i,o_ch));
|
||||||
|
|
||||||
// for the other faces check, if they can also be glued
|
// for the other facets check, if they can also be glued
|
||||||
for(unsigned int i = 0; i < 4; i++) {
|
for(unsigned int i = 0; i < 4; i++) {
|
||||||
if(i != i_i) {
|
if(i != i_i) {
|
||||||
Facet f = std::pair<Cell_handle,int>(new_ch,i);
|
Facet f = std::pair<Cell_handle,int>(new_ch,i);
|
||||||
|
|
@ -3463,7 +3468,7 @@ periodic_remove(Vertex_handle v,
|
||||||
std::swap(vt.second,vt.third);
|
std::swap(vt.second,vt.third);
|
||||||
outer_map[vt]= f;
|
outer_map[vt]= f;
|
||||||
} else {
|
} else {
|
||||||
// glue the faces
|
// glue the facets
|
||||||
typename Vertex_triple_Facet_map::value_type o_vt_f_pair2 = *oit2;
|
typename Vertex_triple_Facet_map::value_type o_vt_f_pair2 = *oit2;
|
||||||
Cell_handle o_ch2 = o_vt_f_pair2.second.first;
|
Cell_handle o_ch2 = o_vt_f_pair2.second.first;
|
||||||
int o_i2 = o_vt_f_pair2.second.second;
|
int o_i2 = o_vt_f_pair2.second.second;
|
||||||
|
|
|
||||||
|
|
@ -918,15 +918,15 @@ public:
|
||||||
// between a normal Vertex_iterator and this iterator
|
// between a normal Vertex_iterator and this iterator
|
||||||
template <class T>
|
template <class T>
|
||||||
class Periodic_3_triangulation_unique_vertex_iterator_3
|
class Periodic_3_triangulation_unique_vertex_iterator_3
|
||||||
: public Filter_iterator<typename T::Vertex_iterator, Domain_tester<T> > {
|
: public Filter_iterator<typename T::Vertex_iterator, Domain_tester<T> >
|
||||||
|
{
|
||||||
typedef typename T::Vertex_handle Vertex_handle;
|
typedef typename T::Vertex_handle Vertex_handle;
|
||||||
typedef typename T::Vertex_iterator Vertex_iterator;
|
typedef typename T::Vertex_iterator Vertex_iterator;
|
||||||
|
|
||||||
typedef Filter_iterator<Vertex_iterator, Domain_tester<T> > Base;
|
typedef Filter_iterator<Vertex_iterator, Domain_tester<T> > Base;
|
||||||
typedef Periodic_3_triangulation_unique_vertex_iterator_3 Self;
|
typedef Periodic_3_triangulation_unique_vertex_iterator_3 Self;
|
||||||
public:
|
|
||||||
|
|
||||||
|
public:
|
||||||
Periodic_3_triangulation_unique_vertex_iterator_3() : Base() {}
|
Periodic_3_triangulation_unique_vertex_iterator_3() : Base() {}
|
||||||
Periodic_3_triangulation_unique_vertex_iterator_3(const Base &b) : Base(b) {}
|
Periodic_3_triangulation_unique_vertex_iterator_3(const Base &b) : Base(b) {}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue