From f05ca0bb236aebde5720fb8b34e0a9ce29e1cc2a Mon Sep 17 00:00:00 2001 From: Nico Kruithof Date: Mon, 4 Mar 2013 21:25:48 +0100 Subject: [PATCH] Working on the vertex/face structs, renaming. Working on the hierarchy --- .../Periodic_2_Delaunay_triangulation_2.h | 4 +- .../CGAL/Periodic_2_triangulation_2.h | 2 +- ...eriodic_2_triangulation_ds_vertex_base_2.h | 26 - ...=> Periodic_2_triangulation_face_base_2.h} | 10 +- .../Periodic_2_triangulation_vertex_base_2.h | 26 + .../Periodic_2_triangulation_2/Classified.txt | 8 +- ....h => Periodic_2TriangulationFaceBase_2.h} | 12 +- ... => Periodic_2TriangulationVertexBase_2.h} | 14 +- .../PackageDescription.txt | 4 +- .../Periodic_2_triangulation_2.txt | 24 +- .../p2t2_adding_handles.cpp | 14 +- .../p2t2_colored_vertices.cpp | 6 +- .../p2t2_info_insert_with_pair_iterator_2.cpp | 2 +- ..._info_insert_with_transform_iterator_2.cpp | 2 +- .../p2t2_info_insert_with_zip_iterator_2.cpp | 2 +- .../Periodic_2_Delaunay_triangulation_2.h | 5 +- .../include/CGAL/Periodic_2_triangulation_2.h | 104 +-- .../Periodic_2_triangulation_ds_face_base_2.h | 427 ------------- .../CGAL/Periodic_2_triangulation_dummy_12.h | 6 +- .../Periodic_2_triangulation_face_base_2.h | 140 +++++ .../Periodic_2_triangulation_hierarchy_2.h | 595 ++++++++++++++++++ .../Periodic_2_triangulation_iterators_2.h | 6 +- ... Periodic_2_triangulation_vertex_base_2.h} | 72 +-- .../p2t2_interface_triang_2.cpp | 3 + .../test/Periodic_2_triangulation_2/types.h | 15 +- 25 files changed, 919 insertions(+), 610 deletions(-) delete mode 100644 Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h rename Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/{Periodic_2_triangulation_ds_face_base_2.h => Periodic_2_triangulation_face_base_2.h} (76%) create mode 100644 Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_vertex_base_2.h rename Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/{Periodic_2TriangulationDSFaceBase_2.h => Periodic_2TriangulationFaceBase_2.h} (74%) rename Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/{Periodic_2TriangulationDSVertexBase_2.h => Periodic_2TriangulationVertexBase_2.h} (73%) delete mode 100644 Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_face_base_2.h create mode 100644 Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_face_base_2.h create mode 100644 Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_hierarchy_2.h rename Periodic_2_triangulation_2/include/CGAL/{Periodic_2_triangulation_ds_vertex_base_2.h => Periodic_2_triangulation_vertex_base_2.h} (58%) diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h index 1c3148e2ae8..44e5d570d05 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_Delaunay_triangulation_2.h @@ -18,7 +18,7 @@ instantiated by a model of the concept `TriangulationDataStructure_2` with some additional functionality in faces. By default, the triangulation data structure is instantiated by -`CGAL::Triangulation_data_structure_2 < CGAL::Triangulation_ds_vertex_base_2, CGAL::Periodic_2_triangulation_ds_face_base_2 > >`. +`CGAL::Triangulation_data_structure_2 < CGAL::Triangulation_vertex_base_2, CGAL::Periodic_2_triangulation_face_base_2 > >`. ### Implementation ### @@ -42,7 +42,7 @@ vertices distributed uniformly at random and any query point. \sa `CGAL::Delaunay_triangulation_2` \sa `TriangulationDataStructure_2` \sa `Periodic_2DelaunayTriangulationTraits_2` -\sa `CGAL::Triangulation_hierarchy_2` +\sa `CGAL::Periodic_2_triangulation_hierarchy_2` */ template< typename Traits, typename Tds > diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h index 7efd156584e..4fd47f52c97 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_2.h @@ -18,7 +18,7 @@ it has to be instantiated by a model of the concept `TriangulationDataStructure_2` with some additional functionality in faces. By default, the triangulation data structure is instantiated by -`CGAL::Triangulation_data_structure_2 < CGAL::Triangulation_ds_vertex_base_2, CGAL::Periodic_2_triangulation_ds_face_base_2 > >`. +`CGAL::Triangulation_data_structure_2 < CGAL::Triangulation_vertex_base_2, CGAL::Periodic_2_triangulation_face_base_2 > >`. ### Traversal of the Triangulation ### diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h deleted file mode 100644 index 24290addc59..00000000000 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h +++ /dev/null @@ -1,26 +0,0 @@ - -namespace CGAL { - -/*! -\ingroup PkgPeriodic2Triangulation2MainClasses - -The class `Periodic_2_triangulation_ds_vertex_base_2` is a model -of the concept `Periodic_2TriangulationDSVertexBase_2` to be used by -`Triangulation_data_structure_2` to represent vertices of a -periodic triangulation. - -\cgalModels `Periodic_2TriangulationDSVertexBase_2` - -\sa `CGAL::Periodic_2_triangulation_ds_face_base_2` -\sa `CGAL::Triangulation_vertex_base_2` -\sa `CGAL::Triangulation_vertex_base_with_info_2` - -*/ -template< > -class Periodic_2_triangulation_ds_vertex_base_2 { -public: - -/// @} - -}; /* end Periodic_2_triangulation_ds_vertex_base_2 */ -} /* end namespace CGAL */ diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_face_base_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_face_base_2.h similarity index 76% rename from Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_face_base_2.h rename to Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_face_base_2.h index 83adf2e254d..6fa9448ff29 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_ds_face_base_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_face_base_2.h @@ -4,8 +4,8 @@ namespace CGAL { /*! \ingroup PkgPeriodic2Triangulation2 -The class `Periodic_2_triangulation_ds_face_base_2` is a model of -the concept `Periodic_2TriangulationDSFaceBase_2` to be used by +The class `Periodic_2_triangulation_face_base_2` is a model of +the concept `Periodic_2TriangulationFaceBase_2` to be used by `Triangulation_data_structure_2` to represent faces of a periodic triangulation. @@ -20,7 +20,7 @@ the offset corresponding to vertex \f$ i\f$. The implementation of `has_zero_offsets()` results in checking whether all offsets are zero. -\cgalModels ::Periodic_2TriangulationDSFaceBase_2 +\cgalModels ::Periodic_2TriangulationFaceBase_2 \sa `CGAL::Triangulation_face_base_2` \sa `CGAL::Triangulation_face_base_with_info_2` @@ -28,10 +28,10 @@ whether all offsets are zero. */ template< > -class Periodic_2_triangulation_ds_face_base_2 { +class Periodic_2_triangulation_face_base_2 { public: /// @} -}; /* end Periodic_2_triangulation_ds_face_base_2 */ +}; /* end Periodic_2_triangulation_face_base_2 */ } /* end namespace CGAL */ diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_vertex_base_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_vertex_base_2.h new file mode 100644 index 00000000000..6df7eb36a33 --- /dev/null +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/CGAL/Periodic_2_triangulation_vertex_base_2.h @@ -0,0 +1,26 @@ + +namespace CGAL { + +/*! +\ingroup PkgPeriodic2Triangulation2MainClasses + +The class `Periodic_2_triangulation_vertex_base_2` is a model +of the concept `Periodic_2TriangulationVertexBase_2` to be used by +`Triangulation_data_structure_2` to represent vertices of a +periodic triangulation. + +\cgalModels `Periodic_2TriangulationVertexBase_2` + +\sa `CGAL::Periodic_2_triangulation_face_base_2` +\sa `CGAL::Triangulation_vertex_base_2` +\sa `CGAL::Triangulation_vertex_base_with_info_2` + +*/ +template< > +class Periodic_2_triangulation_vertex_base_2 { +public: + +/// @} + +}; /* end Periodic_2_triangulation_vertex_base_2 */ +} /* end namespace CGAL */ diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Classified.txt b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Classified.txt index 048c7428243..f363a40d772 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Classified.txt +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Classified.txt @@ -14,9 +14,9 @@ functions in the triangulation classes. The package uses the `Triangulation_data_structure_2` to represent the triangulation. The faces need to be a model of the concept -`Periodic_2TriangulationDSFaceBase_2` and the vertices can be a +`Periodic_2TriangulationFaceBase_2` and the vertices can be a model of the Euclidean vertex concept -`TriangulationDSVertexBase_2`. A triangulation is stored as a +`TriangulationVertexBase_2`. A triangulation is stored as a collection of vertices and faces that are linked together through incidence and adjacency relations. Each face gives access to its three incident vertices and to its three adjacent faces. Each vertex gives @@ -44,7 +44,7 @@ concept `Periodic_2Offset_2`. `TriangulationDataStructure_2` -`Periodic_2TriangulationDSFaceBase_2` +`Periodic_2TriangulationFaceBase_2` `TriangulationVertexBase_2` @@ -60,7 +60,7 @@ concept `Periodic_2Offset_2`. \ref ::CGAL::Periodic_2_triangulation_hierarchy_2 -\ref ::CGAL::Periodic_2_triangulation_ds_face_base_2<> +\ref ::CGAL::Periodic_2_triangulation_face_base_2<> \ref ::CGAL::Periodic_2_offset_2 diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSFaceBase_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationFaceBase_2.h similarity index 74% rename from Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSFaceBase_2.h rename to Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationFaceBase_2.h index f1ac9754f88..f70a509ab46 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSFaceBase_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationFaceBase_2.h @@ -9,17 +9,17 @@ its four vertices and to its four neighbor faces. The vertices and neighbors are indexed 0, 1 and 2. Neighbor \f$ i\f$ lies opposite to vertex \f$ i\f$. -\cgalRefines ::TriangulationDSFaceBase_2 +\cgalRefines ::TriangulationFaceBase_2 -\cgalHasModel CGAL::Periodic_2_triangulation_ds_face_base_2 +\cgalHasModel CGAL::Periodic_2_triangulation_face_base_2 \sa `TriangulationDataStructure_2` -\sa `TriangulationDSFaceBase_2` -\sa `Periodic_2TriangulationDSVertexBase_2` +\sa `TriangulationFaceBase_2` +\sa `Periodic_2TriangulationVertexBase_2` */ -class Periodic_2TriangulationDSFaceBase_2 { +class Periodic_2TriangulationFaceBase_2 { public: /// \name Access Functions @@ -48,5 +48,5 @@ void set_offsets(int off0, int off1, int off2); /// @} -}; /* end Periodic_2TriangulationDSFaceBase_2 */ +}; /* end Periodic_2TriangulationFaceBase_2 */ diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSVertexBase_2.h b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationVertexBase_2.h similarity index 73% rename from Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSVertexBase_2.h rename to Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationVertexBase_2.h index 5e657253359..42c0ef46f92 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationDSVertexBase_2.h +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Concepts/Periodic_2TriangulationVertexBase_2.h @@ -3,7 +3,7 @@ \ingroup PkgPeriodic2Triangulation2Concepts \cgalConcept -A refinement of the concept `TriangulationDSVertexBase_2` +A refinement of the concept `TriangulationVertexBase_2` which adds an API for offset. At the base level of 2D-triangulations (see Section \ref @@ -12,19 +12,19 @@ to one of its incident faces through a handle. The storage of the offset is only needed when a triangulation is copied. -\cgalRefines `TriangulationDSVertexBase_2` +\cgalRefines `TriangulationVertexBase_2` -\cgalHasModel CGAL::Periodic_2_triangulation_ds_vertex_base_2 +\cgalHasModel CGAL::Periodic_2_triangulation_vertex_base_2 \sa `TriangulationDataStructure_2` -\sa `TriangulationDSVertexBase_2` -\sa `Periodic_2TriangulationDSFaceBase_2` +\sa `TriangulationVertexBase_2` +\sa `Periodic_2TriangulationFaceBase_2` */ -class Periodic_2TriangulationDSVertexBase_2 { +class Periodic_2TriangulationVertexBase_2 { public: /// \name Types @@ -63,5 +63,5 @@ void clear_offset(); /// @} -}; /* end Periodic_2TriangulationDSVertexBase_2 */ +}; /* end Periodic_2TriangulationVertexBase_2 */ diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/PackageDescription.txt b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/PackageDescription.txt index e1037e523d3..1cf0494618f 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/PackageDescription.txt +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/PackageDescription.txt @@ -51,8 +51,8 @@ triangulation classes. The package uses `Triangulation_data_structure_2` to represent the triangulation. The faces and vertices need to be alModels of the -concepts `Periodic_2TriangulationDSFaceBase_2` and -`TriangulationDSVertexBase_2`, respectively. +concepts `Periodic_2TriangulationFaceBase_2` and +`TriangulationVertexBase_2`, respectively. A triangulation is stored as a collection of vertices and faces that are linked together through incidence and adjacency relations. Each face gives access to its three incident vertices and to its three diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt index 5d2fc4e70fc..c86c9ec261c 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt @@ -155,14 +155,14 @@ The class `Periodic_2_triangulation_hierarchy_2` is the adaptation of the hierarchical structure described in Chapter \ref Chapter_2D_Triangulations, Section \ref Section_2D_Triangulations_Hierarchy to the periodic -case. (NGHK: TODO, hierarchy is not implemented yet) +case. -The class `Triangulation_hierarchy_2` inherits from the -triangulation type passed as template parameter `Tr`. -The `insert`, `move`, and `remove` member functions -are overwritten to update the data structure at each operation. -The locate queries are also overwritten to take advantage of the data -structure for a fast processing. +The class `Periodic_2_triangulation_hierarchy_2` inherits from the +triangulation type passed as template parameter `Tr`. The `insert`, +`move`, and `remove` member functions are overwritten to update the +data structure at each operation. The locate queries are also +overwritten to take advantage of the data structure for a fast +processing. \section P2Triangulation2secdesign Software Design @@ -201,9 +201,9 @@ parameters: combinatorial structure, described in Section \ref P2Triangulation2sectds and in more detail in Chapter \ref Chapter_2D_Triangulation_Data_Structure. The triangulation data - structure needs alModels of the concepts - `Periodic_2TriangulationDSFaceBase_2` and - `Periodic_2TriangulationDSVertexBase_2` as template parameters. + structure needs Models of the concepts + `Periodic_2TriangulationFaceBase_2` and + `Periodic_2TriangulationVertexBase_2` as template parameters. \subsection P2Triangulation2secTraits The Geometric Traits Parameter @@ -263,8 +263,8 @@ possibility to customize the vertices and cells used by the triangulation data structure, and hence by the geometric triangulation using it. To represent periodic triangulations the cell base and vertex base classes need to meet the concepts -`Periodic_2TriangulationDSFaceBase_2` and -`Periodic_2TriangulationDSVertexBase_2`. +`Periodic_2TriangulationFaceBase_2` and +`Periodic_2TriangulationVertexBase_2`. 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 diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_adding_handles.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_adding_handles.cpp index 5268c1517c8..59cb77d2d13 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_adding_handles.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_adding_handles.cpp @@ -13,9 +13,9 @@ public: typedef typename Vb::Face_handle Face_handle; typedef typename Vb::Point Point; - template < class TDS2 > - struct Rebind_TDS { - typedef typename Vb::template Rebind_TDS::Other Vb2; + template < class Tds2 > + struct Rebind_Tds { + typedef typename Vb::template Rebind_Tds::Other Vb2; typedef My_vertex_base Other; }; @@ -35,12 +35,12 @@ public: typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Periodic_2_triangulation_filtered_traits_2 GT; -typedef CGAL::Triangulation_ds_vertex_base_2<> VbDS; -typedef CGAL::Periodic_2_triangulation_ds_face_base_2<> FbDS; +typedef CGAL::Triangulation_vertex_base_2<> VbDS; +typedef CGAL::Periodic_2_triangulation_face_base_2<> FbDS; typedef CGAL::Triangulation_face_base_2 Fb; -typedef CGAL::Triangulation_data_structure_2, Fb> TDS; -typedef CGAL::Periodic_2_Delaunay_triangulation_2 PDT; +typedef CGAL::Triangulation_data_structure_2, Fb> Tds; +typedef CGAL::Periodic_2_Delaunay_triangulation_2 PDT; typedef PDT::Vertex_handle Vertex_handle; typedef PDT::Point Point; diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp index 66f4c87ce76..2903fa55251 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp @@ -9,12 +9,12 @@ typedef CGAL::Periodic_2_triangulation_filtered_traits_2 GT; typedef CGAL::Triangulation_vertex_base_2 Vb; -typedef CGAL::Periodic_2_triangulation_ds_face_base_2<> FbDS; +typedef CGAL::Periodic_2_triangulation_face_base_2<> FbDS; typedef CGAL::Triangulation_face_base_2 Fb; typedef CGAL::Triangulation_vertex_base_with_info_2 VbInfo; -typedef CGAL::Triangulation_data_structure_2 TDS; -typedef CGAL::Periodic_2_Delaunay_triangulation_2 PDT; +typedef CGAL::Triangulation_data_structure_2 Tds; +typedef CGAL::Periodic_2_Delaunay_triangulation_2 PDT; typedef PDT::Point Point; diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_pair_iterator_2.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_pair_iterator_2.cpp index 43636749f17..2ed7e5051ac 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_pair_iterator_2.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_pair_iterator_2.cpp @@ -7,7 +7,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Periodic_2_triangulation_traits_2 Gt; typedef CGAL::Triangulation_vertex_base_with_info_2 Vb; -typedef CGAL::Periodic_2_triangulation_ds_face_base_2<> FbDS; +typedef CGAL::Periodic_2_triangulation_face_base_2<> FbDS; typedef CGAL::Triangulation_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 Tds; typedef CGAL::Periodic_2_Delaunay_triangulation_2 Delaunay; diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_transform_iterator_2.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_transform_iterator_2.cpp index 64b13266e7d..72229ced2f9 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_transform_iterator_2.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_transform_iterator_2.cpp @@ -7,7 +7,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Periodic_2_triangulation_traits_2 Gt; typedef CGAL::Triangulation_vertex_base_with_info_2 Vb; -typedef CGAL::Periodic_2_triangulation_ds_face_base_2<> FbDS; +typedef CGAL::Periodic_2_triangulation_face_base_2<> FbDS; typedef CGAL::Triangulation_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 Tds; typedef CGAL::Periodic_2_Delaunay_triangulation_2 Delaunay; diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_zip_iterator_2.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_zip_iterator_2.cpp index 43c569104e2..64bd98b78c6 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_zip_iterator_2.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_info_insert_with_zip_iterator_2.cpp @@ -7,7 +7,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Periodic_2_triangulation_traits_2 Gt; typedef CGAL::Triangulation_vertex_base_with_info_2 Vb; -typedef CGAL::Periodic_2_triangulation_ds_face_base_2<> FbDS; +typedef CGAL::Periodic_2_triangulation_face_base_2<> FbDS; typedef CGAL::Triangulation_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 Tds; typedef CGAL::Periodic_2_Delaunay_triangulation_2 Delaunay; diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_Delaunay_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_Delaunay_triangulation_2.h index 29851c360ef..b0d0d0f7b7b 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_Delaunay_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_Delaunay_triangulation_2.h @@ -37,9 +37,8 @@ namespace CGAL { template < class Gt, class Tds = Triangulation_data_structure_2< - Periodic_2_triangulation_ds_vertex_base_2, - Triangulation_face_base_2 > > > + Periodic_2_triangulation_vertex_base_2, + Periodic_2_triangulation_face_base_2 > > class Periodic_2_Delaunay_triangulation_2 : public Periodic_2_triangulation_2 { typedef Periodic_2_Delaunay_triangulation_2 Self; diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h index 415ac02f526..cbcec91fdaf 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h @@ -39,8 +39,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -57,10 +57,10 @@ namespace CGAL { /// - Insertion of points /// - Deletion of points /// - Point location -template, - Triangulation_face_base_2 > > > +template, + Periodic_2_triangulation_face_base_2 > > class Periodic_2_triangulation_2: public Triangulation_cw_ccw_2 { typedef Periodic_2_triangulation_2 Self; @@ -1539,8 +1539,8 @@ Periodic_2_triangulation_2::operator=( } // Helping functions -template < class GT, class TDS > -class Periodic_2_triangulation_2::Finder { +template < class GT, class Tds > +class Periodic_2_triangulation_2::Finder { const Self* _t; const Point & _p; public: @@ -1550,10 +1550,10 @@ public: } }; -template < class GT, class TDS > +template < class GT, class Tds > inline void -Periodic_2_triangulation_2:: -copy_multiple_covering(const Periodic_2_triangulation_2 & tr) { +Periodic_2_triangulation_2:: +copy_multiple_covering(const Periodic_2_triangulation_2 & tr) { // Write the respective offsets in the vertices to make them // automatically copy with the tds. for (Vertex_iterator vit = tr.vertices_begin() ; @@ -3308,8 +3308,8 @@ void Periodic_2_triangulation_2::convert_to_9_sheeted_covering() { // iterate over all edges and store the ones that are longer than // edge_length_threshold in edges. Return the number of too long edges. -template -inline int Periodic_2_triangulation_2::find_too_long_edges(std::map< +template +inline int Periodic_2_triangulation_2::find_too_long_edges(std::map< Vertex_handle, std::list >& edges) const { Point p1, p2; int counter = 0; @@ -3343,8 +3343,8 @@ inline int Periodic_2_triangulation_2::find_too_long_edges(std::map< * So if we are working in 3-cover we translate it to the neighboring * 3-cover and not only to the neighboring domain. */ -template -inline void Periodic_2_triangulation_2::get_vertex(Face_handle fh, +template +inline void Periodic_2_triangulation_2::get_vertex(Face_handle fh, int i, Vertex_handle &vh, Offset &off) const { off = combine_offsets(Offset(), int_to_off(fh->offset(i))); vh = fh->vertex(i); @@ -3356,8 +3356,8 @@ inline void Periodic_2_triangulation_2::get_vertex(Face_handle fh, return; } -template -inline void Periodic_2_triangulation_2::get_vertex(Vertex_handle vh_i, +template +inline void Periodic_2_triangulation_2::get_vertex(Vertex_handle vh_i, Vertex_handle &vh, Offset &off) const { Virtual_vertex_map_it it = _virtual_vertices.find(vh_i); @@ -3382,9 +3382,9 @@ inline void Periodic_2_triangulation_2::get_vertex(Vertex_handle vh_i, * Iterates over all faces and compare the three vertices of each face * with the three vertices in vh. */ -template -inline typename Periodic_2_triangulation_2::Face_handle Periodic_2_triangulation_2< - GT, TDS>::get_face(const Vertex_handle* vh) const { +template +inline typename Periodic_2_triangulation_2::Face_handle Periodic_2_triangulation_2< + GT, Tds>::get_face(const Vertex_handle* vh) const { bool contains_v[2]; Face_circulator fc = incident_faces(vh[2]); Face_circulator done(fc); @@ -3970,8 +3970,8 @@ bool Periodic_2_triangulation_2::edge_is_too_long(const Point &p1, return squared_distance(p1, p2) > _edge_length_threshold; } -template -inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_1_sheet_h1() const { +template +inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_1_sheet_h1() const { if (!is_1_cover()) { if (_too_long_edge_counter == 0) return true; @@ -3990,8 +3990,8 @@ inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_ } } -template -inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_1_sheet_h2() const { +template +inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_1_sheet_h2() const { typedef typename Geom_traits::Construct_circumcenter_2 Construct_circumcenter; typedef typename Geom_traits::FT FT; Construct_circumcenter construct_circumcenter = @@ -4009,8 +4009,8 @@ inline bool Periodic_2_triangulation_2::is_extensible_triangulation_in_ return true; } -template -inline bool Periodic_2_triangulation_2::is_triangulation_in_1_sheet() const { +template +inline bool Periodic_2_triangulation_2::is_triangulation_in_1_sheet() const { if (is_1_cover()) return true; for (Vertex_iterator vit = vertices_begin(); vit != vertices_end(); ++vit) { @@ -4326,16 +4326,16 @@ namespace internal { /// Internal function used by operator==. //TODO: introduce offsets - template + template bool - test_next(const Periodic_2_triangulation_2 &t1, - const Periodic_2_triangulation_2 &t2, - typename Periodic_2_triangulation_2::Face_handle c1, - typename Periodic_2_triangulation_2::Face_handle c2, - std::map::Face_handle, - typename Periodic_2_triangulation_2::Face_handle> &Cmap, - std::map::Vertex_handle, - typename Periodic_2_triangulation_2::Vertex_handle> &Vmap) + test_next(const Periodic_2_triangulation_2 &t1, + const Periodic_2_triangulation_2 &t2, + typename Periodic_2_triangulation_2::Face_handle c1, + typename Periodic_2_triangulation_2::Face_handle c2, + std::map::Face_handle, + typename Periodic_2_triangulation_2::Face_handle> &Cmap, + std::map::Vertex_handle, + typename Periodic_2_triangulation_2::Vertex_handle> &Vmap) { // This function tests and registers the 4 neighbors of c1/c2, // and recursively calls itself over them. @@ -4348,8 +4348,8 @@ namespace internal { CGAL_triangulation_precondition(Vmap.find(c1->vertex(1)) != Vmap.end()); CGAL_triangulation_precondition(Vmap.find(c1->vertex(2)) != Vmap.end()); - typedef Periodic_2_triangulation_2 Tr1; - typedef Periodic_2_triangulation_2 Tr2; + typedef Periodic_2_triangulation_2 Tr1; + typedef Periodic_2_triangulation_2 Tr2; typedef typename Tr1::Vertex_handle Vertex_handle1; typedef typename Tr1::Face_handle Face_handle1; typedef typename Tr2::Vertex_handle Vertex_handle2; @@ -4414,27 +4414,27 @@ operator<<(std::ostream& os, Periodic_2_triangulation_2 &tr) { return tr.save(os); } -template < class GT, class TDS1, class TDS2 > +template < class GT, class Tds1, class Tds2 > bool -operator==(const Periodic_2_triangulation_2 &t1, - const Periodic_2_triangulation_2 &t2) +operator==(const Periodic_2_triangulation_2 &t1, + const Periodic_2_triangulation_2 &t2) { - typedef typename Periodic_2_triangulation_2::Vertex_handle + typedef typename Periodic_2_triangulation_2::Vertex_handle Vertex_handle1; - typedef typename Periodic_2_triangulation_2::Face_handle + typedef typename Periodic_2_triangulation_2::Face_handle Face_handle1; - typedef typename Periodic_2_triangulation_2::Vertex_handle + typedef typename Periodic_2_triangulation_2::Vertex_handle Vertex_handle2; - typedef typename Periodic_2_triangulation_2::Vertex_handle + typedef typename Periodic_2_triangulation_2::Vertex_handle Vertex_iterator2; - typedef typename Periodic_2_triangulation_2::Face_handle + typedef typename Periodic_2_triangulation_2::Face_handle Face_handle2; - typedef typename Periodic_2_triangulation_2::Face_circulator + typedef typename Periodic_2_triangulation_2::Face_circulator Face_circulator2; - typedef typename Periodic_2_triangulation_2::Point Point; - typedef typename Periodic_2_triangulation_2::Offset Offset; - typedef typename Periodic_2_triangulation_2 + typedef typename Periodic_2_triangulation_2::Point Point; + typedef typename Periodic_2_triangulation_2::Offset Offset; + typedef typename Periodic_2_triangulation_2 ::Geom_traits::Compare_xy_2 Compare_xy_2; // Some quick checks. @@ -4515,11 +4515,11 @@ operator==(const Periodic_2_triangulation_2 &t1, Cmap.begin()->first, Cmap.begin()->second, Cmap, Vmap); } -template < class GT, class TDS1, class TDS2 > +template < class GT, class Tds1, class Tds2 > inline bool -operator!=(const Periodic_2_triangulation_2 &t1, - const Periodic_2_triangulation_2 &t2) +operator!=(const Periodic_2_triangulation_2 &t1, + const Periodic_2_triangulation_2 &t2) { return ! (t1 == t2); } diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_face_base_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_face_base_2.h deleted file mode 100644 index 7ea57034c2a..00000000000 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_face_base_2.h +++ /dev/null @@ -1,427 +0,0 @@ -// Copyright (c) 1997 INRIA Sophia-Antipolis (France). -// All rights reserved. -// -// This file is part of CGAL (www.cgal.org); you may redistribute it under -// the terms of the Q Public License version 1.0. -// See the file LICENSE.QPL distributed with CGAL. -// -// Licensees holding a valid commercial license may use this file in -// accordance with the commercial license agreement provided with the software. -// -// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// $URL$ -// $Id$ -// -// -// Author(s) : Nico Kruithof - -#ifndef CGAL_PERIODIC_2_TRIANGULATION_DS_FACE_BASE_2_H -#define CGAL_PERIODIC_2_TRIANGULATION_DS_FACE_BASE_2_H - -#include -#include -#include -#include - -namespace CGAL { - -template < typename TDS = void> -class Periodic_2_triangulation_ds_face_base_2 -{ -public: - typedef TDS Triangulation_data_structure; - typedef typename TDS::Vertex_handle Vertex_handle; - typedef typename TDS::Face_handle Face_handle; -#ifdef CGAL_TDS2_DATA - typedef typename TDS::Face_data TDS_data; -#endif - - template - struct Rebind_TDS { typedef Periodic_2_triangulation_ds_face_base_2 Other; }; - -private: - Vertex_handle V[3]; - Face_handle N[3]; -#ifdef CGAL_TDS2_DATA - TDS_data _tds_data; -#endif - - // 2 respective bits are the _offset in x and y - // right to left: - // bit[0]-bit[1]: vertex(0), - // bit[2]-bit[3]: vertex(1) and - // bit[4]-bit[5]: vertex(2) - // Thus the underlying data type needs to have at least 6 bit, - // which is true for an unsigned char. - // bit[6]: Used to convert 9 sheeted covering to a 1 sheeted covering - unsigned char _off; - -public: - Periodic_2_triangulation_ds_face_base_2(); - Periodic_2_triangulation_ds_face_base_2(Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2); - Periodic_2_triangulation_ds_face_base_2(Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Face_handle n0, - Face_handle n1, - Face_handle n2); - - Vertex_handle vertex(int i) const; - bool has_vertex(Vertex_handle v) const; - bool has_vertex(Vertex_handle v, int& i) const ; - int index(Vertex_handle v) const ; - - Face_handle neighbor(int i) const ; - bool has_neighbor(Face_handle n) const; - bool has_neighbor(Face_handle n, int& i) const; - int index(Face_handle n) const; - - void set_vertex(int i, Vertex_handle v); - void set_vertices(); - void set_vertices(Vertex_handle v0, Vertex_handle v1, Vertex_handle v2); - void set_neighbor(int i, Face_handle n) ; - void set_neighbors(); - void set_neighbors(Face_handle n0, Face_handle n1, Face_handle n2); - void reorient(); - void ccw_permute(); - void cw_permute(); - - int dimension() const; - //the following trivial is_valid to allow - // the user of derived face base classes - // to add their own purpose checking - bool is_valid(bool /* verbose */ = false, int /* level */ = 0) const - {return true;} - - // For use by Compact_container. - void * for_compact_container() const {return N[0].for_compact_container(); } - void * & for_compact_container() { return N[0].for_compact_container();} - - - static int ccw(int i) {return Triangulation_cw_ccw_2::ccw(i);} - static int cw(int i) {return Triangulation_cw_ccw_2::cw(i);} - -#ifdef CGAL_TDS2_DATA - // TDS internal data access functions. - TDS_data& tds_data() { return _tds_data; } - const TDS_data& tds_data() const { return _tds_data; } -#endif - - /// Periodic functions - int offset(int i) const - { - CGAL_triangulation_precondition( i >= 0 && i < 3 ); - return ((_off>>2*i)&3); - } - bool has_zero_offsets() const { - return (_off&63) == 0; - } - - void set_offsets(unsigned int o0, unsigned int o1, unsigned int o2) { - // 192=11000000 - _off = _off | 192; - unsigned int off0[2] = {(o0>>1)&1, (o0&1)}; - unsigned int off1[2] = {(o1>>1)&1, (o1&1)}; - unsigned int off2[2] = {(o2>>1)&1, (o2&1)}; - for (int i=0; i<2; i++) { - unsigned int _off0 = ( _off &3); - unsigned int _off1 = ((_off>>2)&3); - unsigned int _off2 = ((_off>>4)&3); - - _off0 = ( (_off0<<1) + off0[i]); - _off1 = ( (_off1<<1) + off1[i]); - _off2 = ( (_off2<<1) + off2[i]); - - // 252=11111100 - // 243=11110011 - // 207=11001111 - _off = ((_off&252) | (_off0 )); - _off = ((_off&243) | (_off1<<2)); - _off = ((_off&207) | (_off2<<4)); - } - } - - void set_additional_flag(unsigned char b) { - CGAL_assertion(b < 4); - // 63=00111111 - _off = ((_off & 63) | (b<<6)); - } - unsigned char get_additional_flag() { - return (_off>>6); - } - -}; - -template -Periodic_2_triangulation_ds_face_base_2 :: -Periodic_2_triangulation_ds_face_base_2() -: _off(0) -{ - set_vertices(); - set_neighbors(); -} - -template -Periodic_2_triangulation_ds_face_base_2 :: -Periodic_2_triangulation_ds_face_base_2( Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2) -: _off(0) -{ - set_vertices(v0, v1, v2); - set_neighbors(); -} - -template -Periodic_2_triangulation_ds_face_base_2 :: -Periodic_2_triangulation_ds_face_base_2(Vertex_handle v0, - Vertex_handle v1, - Vertex_handle v2, - Face_handle n0, - Face_handle n1, - Face_handle n2) -: _off(0) -{ - set_vertices(v0, v1, v2); - set_neighbors(n0, n1, n2); -} - - -template -inline -typename Periodic_2_triangulation_ds_face_base_2::Vertex_handle -Periodic_2_triangulation_ds_face_base_2:: -vertex(int i) const -{ - CGAL_triangulation_precondition( i == 0 || i == 1 || i == 2); - return V[i]; -} - - -template -inline bool -Periodic_2_triangulation_ds_face_base_2 :: -has_vertex(Vertex_handle v) const -{ - return (V[0] == v) || (V[1] == v) || (V[2]== v); -} - -template -inline bool -Periodic_2_triangulation_ds_face_base_2 :: -has_vertex(Vertex_handle v, int& i) const -{ - if (v == V[0]) { - i = 0; - return true; - } - if (v == V[1]) { - i = 1; - return true; - } - if (v == V[2]) { - i = 2; - return true; - } - return false; -} - -template -inline int -Periodic_2_triangulation_ds_face_base_2 :: -index(Vertex_handle v) const -{ - if (v == V[0]) return 0; - if (v == V[1]) return 1; - CGAL_triangulation_assertion( v == V[2] ); - return 2; -} - -template -inline -typename Periodic_2_triangulation_ds_face_base_2::Face_handle -Periodic_2_triangulation_ds_face_base_2:: -neighbor(int i) const -{ - CGAL_triangulation_precondition( i == 0 || i == 1 || i == 2); - return N[i]; -} - -template -inline bool -Periodic_2_triangulation_ds_face_base_2 :: -has_neighbor(Face_handle n) const -{ - return (N[0] == n) || (N[1] == n) || (N[2] == n); -} - - -template -inline bool -Periodic_2_triangulation_ds_face_base_2 :: -has_neighbor(Face_handle n, int& i) const -{ - if(n == N[0]){ - i = 0; - return true; - } - if(n == N[1]){ - i = 1; - return true; - } - if(n == N[2]){ - i = 2; - return true; - } - return false; -} - - - -template -inline int -Periodic_2_triangulation_ds_face_base_2 :: -index(Face_handle n) const -{ - if (n == N[0]) return 0; - if (n == N[1]) return 1; - CGAL_triangulation_assertion( n == N[2] ); - return 2; -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_vertex(int i, Vertex_handle v) -{ - CGAL_triangulation_precondition( i == 0 || i == 1 || i == 2); - V[i] = v; -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_neighbor(int i, Face_handle n) -{ - CGAL_triangulation_precondition( i == 0 || i == 1 || i == 2); - CGAL_triangulation_precondition( this != &*n ); - N[i] = n; -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_vertices() -{ - V[0] = V[1] = V[2] = Vertex_handle(); -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_vertices(Vertex_handle v0, Vertex_handle v1, Vertex_handle v2) -{ - V[0] = v0; - V[1] = v1; - V[2] = v2; -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_neighbors() -{ - N[0] = N[1] = N[2] = Face_handle(); -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -set_neighbors(Face_handle n0,Face_handle n1, Face_handle n2) -{ - CGAL_triangulation_precondition( this != &*n0 ); - CGAL_triangulation_precondition( this != &*n1 ); - CGAL_triangulation_precondition( this != &*n2 ); - N[0] = n0; - N[1] = n1; - N[2] = n2; -} - -template -void -Periodic_2_triangulation_ds_face_base_2 :: -reorient() -{ - //exchange the vertices 0 and 1 - set_vertices (V[1],V[0],V[2]); - set_neighbors(N[1],N[0],N[2]); -} - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -ccw_permute() -{ - set_vertices (V[2],V[0],V[1]); - set_neighbors(N[2],N[0],N[1]); -} - - -template -inline void -Periodic_2_triangulation_ds_face_base_2 :: -cw_permute() -{ - set_vertices (V[1],V[2],V[0]); - set_neighbors(N[1],N[2],N[0]); -} - - -template < class TDS> -inline int -Periodic_2_triangulation_ds_face_base_2 :: -dimension() const -{ - if (V[2] != Vertex_handle()) {return 2;} - else return( V[1] != Vertex_handle() ? 1 : 0); -} - -template < class TDS > -inline -std::istream& -operator>>(std::istream &is, Periodic_2_triangulation_ds_face_base_2 &) -// non combinatorial information. Default = nothing -{ - return is; -} - -template < class TDS > -inline -std::ostream& -operator<<(std::ostream &os, const Periodic_2_triangulation_ds_face_base_2 &) -// non combinatorial information. Default = nothing -{ - return os; -} - -// Specialisation for void. -template <> -class Periodic_2_triangulation_ds_face_base_2 -{ -public: - typedef Dummy_tds_2 Triangulation_data_structure; - typedef Triangulation_data_structure::Vertex_handle Vertex_handle; - typedef Triangulation_data_structure::Face_handle Face_handle; - template - struct Rebind_TDS { typedef Periodic_2_triangulation_ds_face_base_2 Other; }; -}; - - - -} //namespace CGAL - -#endif //CGAL_PERIODIC_2_TRIANGULATION_DS_FACE_BASE_2_H diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h index 9f3de7dfb97..7ea0a539658 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h @@ -21,9 +21,9 @@ #ifndef CGAL_PERIODIC_2_TRIANGULATION_DUMMY_12_H #define CGAL_PERIODIC_2_TRIANGULATION_DUMMY_12_H -template < class GT, class TDS > -inline std::vector::Vertex_handle > -Periodic_2_triangulation_2::insert_dummy_points() { +template < class GT, class Tds > +inline std::vector::Vertex_handle > +Periodic_2_triangulation_2::insert_dummy_points() { clear(); Vertex_handle vertices[12]; diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_face_base_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_face_base_2.h new file mode 100644 index 00000000000..badd86615ca --- /dev/null +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_face_base_2.h @@ -0,0 +1,140 @@ +// Copyright (c) 1997 INRIA Sophia-Antipolis (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org); you may redistribute it under +// the terms of the Q Public License version 1.0. +// See the file LICENSE.QPL distributed with CGAL. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL$ +// $Id$ +// +// +// Author(s) : Nico Kruithof + +#ifndef CGAL_PERIODIC_2_TRIANGULATION_FACE_BASE_2_H +#define CGAL_PERIODIC_2_TRIANGULATION_FACE_BASE_2_H + +#include +#include +#include +#include + +namespace CGAL { + +template < typename Gt, typename Fb = Triangulation_face_base_2 > +class Periodic_2_triangulation_face_base_2 + : public Fb +{ + typedef Fb Base; + typedef typename Base::Triangulation_data_structure Tds; +public: + typedef Gt Geom_traits; + typedef Tds Triangulation_data_structure; + typedef typename Tds::Vertex_handle Vertex_handle; + typedef typename Tds::Face_handle Face_handle; + + template < typename TDS2 > + struct Rebind_TDS { + typedef typename Fb::template Rebind_TDS::Other Fb2; + typedef Periodic_2_triangulation_face_base_2 Other; + }; + +public: + Periodic_2_triangulation_face_base_2() + : Fb(), _off(0) {} + + Periodic_2_triangulation_face_base_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2) + : Fb(v0,v1,v2) , _off(0){} + + Periodic_2_triangulation_face_base_2(Vertex_handle v0, + Vertex_handle v1, + Vertex_handle v2, + Face_handle n0, + Face_handle n1, + Face_handle n2) + : Fb(v0,v1,v2,n0,n1,n2), _off(0) {} + + /// Periodic functions + int offset(int i) const + { + CGAL_triangulation_precondition( i >= 0 && i < 3 ); + return ((_off>>2*i)&3); + } + bool has_zero_offsets() const { + return (_off&63) == 0; + } + + void set_offsets(unsigned int o0, unsigned int o1, unsigned int o2) { + // 192=11000000 + _off = _off | 192; + unsigned int off0[2] = {(o0>>1)&1, (o0&1)}; + unsigned int off1[2] = {(o1>>1)&1, (o1&1)}; + unsigned int off2[2] = {(o2>>1)&1, (o2&1)}; + for (int i=0; i<2; i++) { + unsigned int _off0 = ( _off &3); + unsigned int _off1 = ((_off>>2)&3); + unsigned int _off2 = ((_off>>4)&3); + + _off0 = ( (_off0<<1) + off0[i]); + _off1 = ( (_off1<<1) + off1[i]); + _off2 = ( (_off2<<1) + off2[i]); + + // 252=11111100 + // 243=11110011 + // 207=11001111 + _off = ((_off&252) | (_off0 )); + _off = ((_off&243) | (_off1<<2)); + _off = ((_off&207) | (_off2<<4)); + } + } + + void set_additional_flag(unsigned char b) { + CGAL_assertion(b < 4); + // 63=00111111 + _off = ((_off & 63) | (b<<6)); + } + unsigned char get_additional_flag() { + return (_off>>6); + } + +private: + // 2 respective bits are the _offset in x and y + // right to left: + // bit[0]-bit[1]: vertex(0), + // bit[2]-bit[3]: vertex(1) and + // bit[4]-bit[5]: vertex(2) + // Thus the underlying data type needs to have at least 6 bit, + // which is true for an unsigned char. + // bit[6]: Used to convert 9 sheeted covering to a 1 sheeted covering + unsigned char _off; +}; + +template < class Tds > +inline +std::istream& +operator>>(std::istream &is, Periodic_2_triangulation_face_base_2 &) +// non combinatorial information. Default = nothing +{ + return is; +} + +template < class Tds > +inline +std::ostream& +operator<<(std::ostream &os, const Periodic_2_triangulation_face_base_2 &) +// non combinatorial information. Default = nothing +{ + return os; +} + +} //namespace CGAL + +#endif //CGAL_PERIODIC_2_TRIANGULATION_FACE_BASE_2_H diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_hierarchy_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_hierarchy_2.h new file mode 100644 index 00000000000..e803090ff16 --- /dev/null +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_hierarchy_2.h @@ -0,0 +1,595 @@ +// Copyright (c) 1998-2010 INRIA Sophia-Antipolis (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// You can redistribute it and/or modify it under the terms of the GNU +// General Public License as published by the Free Software Foundation, +// either version 3 of the License, or (at your option) any later version. +// +// Licensees holding a valid commercial license may use this file in +// accordance with the commercial license agreement provided with the software. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +// +// $URL$ +// $Id$ +// +// +// Author(s) : Olivier Devillers +// Mariette Yvinec + +#ifndef CGAL_PERIODIC_2_TRIANGULATION_HIERARCHY_2_H +#define CGAL_PERIODIC_2_TRIANGULATION_HIERARCHY_2_H + +#include +#include +#include + +#include +#include +#include + +namespace CGAL { + +template < class PTr> +class Periodic_2_triangulation_hierarchy_2 + : public PTr +{ + // parameterization of the hierarchy + static const int ratio = 30; + static const int minsize = 20; + static const int maxlevel = 5; + // maximal number of points is 30^5 = 24 millions ! + + + public: + typedef PTr PTr_Base; + typedef typename PTr::Geom_traits Geom_traits; + typedef typename PTr::Point Point; + typedef typename PTr::Iso_rectangle Iso_rectangle; + typedef typename PTr::size_type size_type; + typedef typename PTr::Vertex_handle Vertex_handle; + typedef typename PTr::Face_handle Face_handle; + typedef typename PTr::Vertex Vertex; + typedef typename PTr::Locate_type Locate_type; + typedef typename PTr::Finite_vertices_iterator Finite_vertices_iterator; + //typedef typename PTr::Finite_faces_iterator Finite_faces_iterator; + + typedef typename PTr::Weighted_tag Weighted_tag; + +#ifndef CGAL_CFG_USING_BASE_MEMBER_BUG_2 + using PTr_Base::geom_traits; +#endif + + private: + // here is the stack of triangulations which form the hierarchy + PTr_Base* hierarchy[maxlevel]; + boost::rand48 random; + int level_mult_cover; + +public: + Periodic_2_triangulation_hierarchy_2( + const Iso_rectangle& domain = Iso_rectangle(0,0,1,1), + const Geom_traits& traits = Geom_traits()); + + Periodic_2_triangulation_hierarchy_2( + const Periodic_2_triangulation_hierarchy_2& tr); + + template < typename InputIterator > + Periodic_2_triangulation_hierarchy_2(InputIterator first, InputIterator last, + const Iso_rectangle& domain = Iso_rectangle(0,0,1,1), + const Geom_traits& traits = Geom_traits()) + : PTr_Base(domain,traits), level_mult_cover(0) + { + NGHK_NYI; + hierarchy[0] = this; + for(int i=1; i + std::ptrdiff_t insert(InputIterator first, InputIterator last, bool /* is_large_point_set */ = false) + { + NGHK_NYI; + std::ptrdiff_t n = this->number_of_vertices(); + + std::vector points (first, last); + CGAL::spatial_sort (points.begin(), points.end(), geom_traits()); + + // hints[i] is the face of the previously inserted point in level i. + // Thanks to spatial sort, they are better hints than what the hierarchy + // would give us. + Face_handle hints[maxlevel]; + for (typename std::vector::const_iterator p = points.begin(), end = points.end(); + p != end; ++p) + { + int vertex_level = random_level(); + + Vertex_handle v = hierarchy[0]->insert (*p, hints[0]); + hints[0] = v->face(); + + Vertex_handle prev = v; + + for (int level = 1; level <= vertex_level; ++level) { + v = hierarchy[level]->insert (*p, hints[level]); + hints[level] = v->face(); + + v->set_down (prev); + prev->set_up (v); + prev = v; + } + } + std::ptrdiff_t m = this->number_of_vertices(); + return m - n; + } + + void remove(Vertex_handle v); + void remove_first(Vertex_handle v); + void remove_degree_3(Vertex_handle v); + + Vertex_handle move(Vertex_handle v, const Point &p); + Vertex_handle move_if_no_collision(Vertex_handle v, const Point &p); + + //LOCATE + Face_handle + locate(const Point& p, + Locate_type& lt, + int& li, + Face_handle start = Face_handle()) const; + + Face_handle + locate(const Point &p, + Face_handle start = Face_handle()) const; + + Vertex_handle + nearest_vertex(const Point& p, Face_handle start = Face_handle()) const + { + NGHK_NYI; // TODO + return Vertex_handle(); + // return nearest_vertex_dispatch(p, start, Weighted_tag()); + } + +private: + void locate_in_all(const Point& p, + Locate_type& lt, + int& li, + Face_handle loc, + Face_handle pos[maxlevel]) const; + int random_level(); +}; + + + +template +Periodic_2_triangulation_hierarchy_2:: +Periodic_2_triangulation_hierarchy_2(const Iso_rectangle& domain, const Geom_traits& traits) + : PTr_Base(domain, traits) +{ + hierarchy[0] = this; + for(int i=1;i +Periodic_2_triangulation_hierarchy_2:: +Periodic_2_triangulation_hierarchy_2(const Periodic_2_triangulation_hierarchy_2 &tr) + : PTr_Base() +{ + NGHK_NYI; + // create an empty triangulation to be able to delete it ! + hierarchy[0] = this; + for(int i=1;i +Periodic_2_triangulation_hierarchy_2 & +Periodic_2_triangulation_hierarchy_2:: +operator=(const Periodic_2_triangulation_hierarchy_2 &tr) +{ + NGHK_NYI; + Periodic_2_triangulation_hierarchy_2 tmp(tr); + swap(tmp); + return *this; +} + + +template +void +Periodic_2_triangulation_hierarchy_2:: +copy_triangulation(const Periodic_2_triangulation_hierarchy_2 &tr) +{ + NGHK_NYI; + { + for(int i=0;icopy_triangulation(*tr.hierarchy[i]); + } + + + //up and down have been copied in straightforward way + // compute a map at lower level + std::map V; + { + for( Finite_vertices_iterator it=hierarchy[0]->finite_vertices_begin(); + it != hierarchy[0]->finite_vertices_end(); ++it) { + if (it->up() != Vertex_handle()) V[ it->up()->down() ] = it; + } + } + + add_hidden_vertices_into_map(Weighted_tag(), V); + + { + for(int i=1;ifinite_vertices_begin(); + it != hierarchy[i]->finite_vertices_end(); ++it) { + // down pointer goes in original instead in copied triangulation + it->set_down(V[it->down()]); + // make reverse link + it->down()->set_up(it); + // I think the next line is unnecessary (my) + // make map for next level + if (it->up()!= Vertex_handle() ) V[ it->up()->down() ] = it; + } + } + } +} + +/* template */ +/* void */ +/* Periodic_2_triangulation_hierarchy_2:: */ +/* add_hidden_vertices_into_map(Tag_false, */ +/* std::map& V) { */ +/* return; */ +/* } */ + + +/* template */ +/* void */ +/* Periodic_2_triangulation_hierarchy_2:: */ +/* add_hidden_vertices_into_map(Tag_true, */ +/* std::map& V) */ +/* { */ +/* for (typename PTr_Base::Hidden_vertices_iterator */ +/* it=hierarchy[0]->hidden_vertices_begin(); */ +/* it != hierarchy[0]->hidden_vertices_end(); ++it) { */ +/* if (it->up() != Vertex_handle()) V[ it->up()->down() ] = it; */ +/* } */ +/* } */ + + +template +void +Periodic_2_triangulation_hierarchy_2:: +swap(Periodic_2_triangulation_hierarchy_2 &tr) +{ + NGHK_NYI; + PTr_Base* temp; + PTr_Base::swap(tr); + for(int i= 1; i +Periodic_2_triangulation_hierarchy_2:: +~Periodic_2_triangulation_hierarchy_2() +{ + clear(); + for(int i= 1; i +void +Periodic_2_triangulation_hierarchy_2:: +clear() +{ + NGHK_NYI; + for(int i=0;iclear(); +} + + +template +bool +Periodic_2_triangulation_hierarchy_2:: +is_valid(bool verbose, int level) const +{ + NGHK_NYI; + bool result = true; + int i; + Finite_vertices_iterator it; + //verify correctness of triangulation at all levels + for(i=0;inumber_of_vertices() << std::endl; + result = result && hierarchy[i]->is_valid(verbose,level); + } + //verify that lower level has no down pointers + for( it = hierarchy[0]->finite_vertices_begin(); + it != hierarchy[0]->finite_vertices_end(); ++it) + result = result && ( it->down() == Vertex_handle()); + //verify that other levels have down pointer and reciprocal link is fine + for(i=1;ifinite_vertices_begin(); + it != hierarchy[i]->finite_vertices_end(); ++it) + result = result && + ( &*(it->down()->up()) == &*(it) ); + //verify that levels have up pointer and reciprocal link is fine + for(i=0;ifinite_vertices_begin(); + it != hierarchy[i]->finite_vertices_end(); ++it) + result = result && ( it->up() == Vertex_handle() || + &*it == &*(it->up())->down() ); + return result; +} + + +template +typename Periodic_2_triangulation_hierarchy_2::Vertex_handle +Periodic_2_triangulation_hierarchy_2:: +insert(const Point &p, Face_handle loc) +{ + NGHK_NYI; + int vertex_level = random_level(); + Locate_type lt; + int i; + // locate using hierarchy + Face_handle positions[maxlevel]; + locate_in_all(p,lt,i,loc,positions); + Vertex_handle vertex=hierarchy[0]->PTr_Base::insert(p,lt,positions[0],i); + Vertex_handle previous=vertex; + Vertex_handle first = vertex; + + int level = 1; + while (level <= vertex_level ){ + vertex=hierarchy[level]->PTr_Base::insert(p,positions[level]); + vertex->set_down(previous);// link with level above + previous->set_up(vertex); + previous=vertex; + level++; + } + return first; +} + +template +typename Periodic_2_triangulation_hierarchy_2::Vertex_handle +Periodic_2_triangulation_hierarchy_2:: +insert(const Point& p, + Locate_type lt, + Face_handle loc, + int li ) +{ + NGHK_NYI; + int vertex_level = random_level(); + //insert at level 0 + Vertex_handle vertex=hierarchy[0]->PTr_Base::insert(p,lt,loc,li); + Vertex_handle previous=vertex; + Vertex_handle first = vertex; + + if (vertex_level > 0) { + // locate using hierarchy + Locate_type ltt; + int lii; + Face_handle positions[maxlevel]; + locate_in_all(p,ltt,lii,loc,positions); + //insert in higher levels + int level = 1; + while (level <= vertex_level ){ + vertex=hierarchy[level]->PTr_Base::insert(p,positions[level]); + vertex->set_down(previous);// link with level above + previous->set_up(vertex); + previous=vertex; + level++; + } + } + return first; +} + +template +inline +typename Periodic_2_triangulation_hierarchy_2::Vertex_handle +Periodic_2_triangulation_hierarchy_2:: +push_back(const Point &p) +{ + return insert(p); +} + +template +void +Periodic_2_triangulation_hierarchy_2:: +remove(Vertex_handle v ) +{ + NGHK_NYI; + Vertex_handle u=v->up(); + int l = 0 ; + while(1){ + hierarchy[l++]->remove(v); + if (u == Vertex_handle()) break; + if (l >= maxlevel) break; + v=u; u=v->up(); + } +} + +template +inline void +Periodic_2_triangulation_hierarchy_2:: +remove_degree_3(Vertex_handle v ) +{ + NGHK_NYI; + remove(v); +} + +template +inline void +Periodic_2_triangulation_hierarchy_2:: +remove_first(Vertex_handle v ) +{ + NGHK_NYI; + remove(v); +} + +template +typename Periodic_2_triangulation_hierarchy_2::Vertex_handle +Periodic_2_triangulation_hierarchy_2:: +move_if_no_collision(Vertex_handle v, const Point &p) { + NGHK_NYI; + Vertex_handle u=v->up(), norm = v; + int l = 0 ; + while(1) { + Vertex_handle w = hierarchy[l++]->move_if_no_collision(v, p); + if(w != v) return w; + if (u == Vertex_handle()) break; + if (l >= maxlevel) break; + v=u; u=v->up(); + } + return norm; +} + +template +typename Periodic_2_triangulation_hierarchy_2::Vertex_handle +Periodic_2_triangulation_hierarchy_2:: +move(Vertex_handle v, const Point &p) { + NGHK_NYI; + CGAL_triangulation_precondition(!this->is_infinite(v)); + Vertex_handle w = move_if_no_collision(v,p); + if(w != v) { + remove(v); + return w; + } + return v; +} + +template +typename Periodic_2_triangulation_hierarchy_2::Face_handle +Periodic_2_triangulation_hierarchy_2:: +locate(const Point& p, Locate_type& lt, int& li, Face_handle loc) const +{ + NGHK_NYI; + Face_handle positions[maxlevel]; + locate_in_all(p,lt,li,loc,positions); + return positions[0]; +} + +template +typename Periodic_2_triangulation_hierarchy_2::Face_handle +Periodic_2_triangulation_hierarchy_2:: +locate(const Point& p, Face_handle loc ) const +{ + NGHK_NYI; + Locate_type lt; + int li; + return locate(p, lt, li, loc); +} + +template +void +Periodic_2_triangulation_hierarchy_2:: +locate_in_all(const Point& p, + Locate_type& lt, + int& li, + Face_handle loc, + Face_handle pos[maxlevel]) const +{ + NGHK_NYI; + Face_handle position; + Vertex_handle nearest; + int level = maxlevel; + typename Geom_traits::Compare_distance_2 + closer = this->geom_traits().compare_distance_2_object(); + + // find the highest level with enough vertices that is at the same time 2D + while ( (hierarchy[--level]->number_of_vertices() + < static_cast (minsize )) + || (hierarchy[level]->dimension()<2) ){ + if ( ! level) break; // do not go below 0 + } + if((level>0) && (hierarchy[level]->dimension()<2)){ + level--; + } + + for (int i=level+1; i 0) { + pos[level]=position=hierarchy[level]->locate(p,position); + // locate at that level from "position" + // result is stored in "position" for the next level + // find the nearest between vertices 0 and 1 + if (hierarchy[level]->is_infinite(position->vertex(0))){ + + nearest = position->vertex(1); + } + else if (hierarchy[level]->is_infinite(position->vertex(1))){ + nearest = position->vertex(0); +} else if ( closer(p, + position->vertex(0)->point(), + position->vertex(1)->point()) == SMALLER){ + nearest = position->vertex(0); +} + else{ + nearest = position->vertex(1); +} + // compare to vertex 2, but only if the triangulation is 2D, because otherwise vertex(2) is NULL + if ( (hierarchy[level]->dimension()==2) && (! hierarchy[level]->is_infinite(position->vertex(2)))){ + if ( closer( p, + position->vertex(2)->point(), + nearest->point()) == SMALLER ){ + nearest = position->vertex(2); + } + } + // go at the same vertex on level below + nearest = nearest->down(); + position = nearest->face(); // incident face + --level; + } + pos[0]=hierarchy[0]->locate(p,lt,li,loc == Face_handle() ? position : loc); // at level 0 +} + +template +int +Periodic_2_triangulation_hierarchy_2:: +random_level() +{ + NGHK_NYI; + if ( level_mult_cover < maxlevel + && hierarchy[level_mult_cover]->number_of_sheets() == make_array(1,1) ) + ++level_mult_cover; + + boost::geometric_distribution<> proba(1.0/ratio); + boost::variate_generator > + die(random, proba); + return (std::min)(die()-1, level_mult_cover); +} + +} //namespace CGAL + +#endif // CGAL_PERIODIC_2_TRIANGULATION_HIERARCHY_2_H diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_iterators_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_iterators_2.h index bb8fa93d9f5..1f5016da3d7 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_iterators_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_iterators_2.h @@ -29,7 +29,7 @@ template < class T > class Periodic_2_triangulation_triangle_iterator_2 { // Iterates over the primitives in a periodic triangulation. // Options: - // - STORED: output each primitive from the TDS exactly once + // - STORED: output each primitive from the Tds exactly once // - UNIQUE: output exactly one periodic copy of each primitive, no matter // whether the current tds stores a n-sheeted covering for n!=1. // - STORED_COVER_DOMAIN: output each primitive whose intersection with the @@ -304,7 +304,7 @@ template < class T > class Periodic_2_triangulation_segment_iterator_2 { // Iterates over the primitives in a periodic triangulation. // Options: - // - STORED: output each primitive from the TDS exactly once + // - STORED: output each primitive from the Tds exactly once // - UNIQUE: output exactly one periodic copy of each primitive, no matter // whether the current tds stores a n-sheeted covering for n!=1. // - STORED_COVER_DOMAIN: output each primitive whose intersection with the @@ -558,7 +558,7 @@ template < class T > class Periodic_2_triangulation_point_iterator_2 { // Iterates over the primitives in a periodic triangulation. // Options: - // - STORED: output each primitive from the TDS exactly once + // - STORED: output each primitive from the Tds exactly once // - UNIQUE: output exactly one periodic copy of each primitive, no matter // whether the current tds stores a n-sheeted covering for n!=1. // - STORED_COVER_DOMAIN: output each primitive whose intersection with the diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_vertex_base_2.h similarity index 58% rename from Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h rename to Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_vertex_base_2.h index dc165ebc9e1..9ae377c70d7 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_vertex_base_2.h @@ -11,16 +11,16 @@ // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // -// $URL: svn+ssh://nicokruithof@scm.gforge.inria.fr/svnroot/cgal/trunk/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_ds_vertex_base_2.h $ -// $Id: Periodic_2_triangulation_ds_vertex_base_2.h 56667 2010-06-09 07:37:13Z sloriot $ +// $URL: svn+ssh://nicokruithof@scm.gforge.inria.fr/svnroot/cgal/trunk/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_vertex_base_2.h $ +// $Id: Periodic_2_triangulation_vertex_base_2.h 56667 2010-06-09 07:37:13Z sloriot $ // // // Author(s) : Monique Teillaud // Manuel Caroli // Nico Kruithof -#ifndef CGAL_PERIODIC_2_TRIANGULATION_DS_VERTEX_BASE_2_H -#define CGAL_PERIODIC_2_TRIANGULATION_DS_VERTEX_BASE_2_H +#ifndef CGAL_PERIODIC_2_TRIANGULATION_VERTEX_BASE_2_H +#define CGAL_PERIODIC_2_TRIANGULATION_VERTEX_BASE_2_H #include #include @@ -29,31 +29,34 @@ namespace CGAL { -/* A vertex class with an additionnal handle */ template < class Gt, class Vb = CGAL::Triangulation_vertex_base_2 > -class Periodic_2_triangulation_ds_vertex_base_2 - : public Vb +class Periodic_2_triangulation_vertex_base_2 + : public Vb { - typedef Vb Base; + typedef Vb Base; + typedef typename Vb::Triangulation_data_structure Tds; public: - typedef typename Vb::Vertex_handle Vertex_handle; - typedef typename Vb::Face_handle Face_handle; - typedef typename Vb::Point Point; - typedef Periodic_2_offset_2 Offset; + typedef Gt Geom_traits; + typedef typename Gt::Point_2 Point; + typedef Tds Triangulation_data_structure; + typedef typename Tds::Face_handle Face_handle; + typedef typename Tds::Vertex_handle Vertex_handle; - template < typename TDS2 > + typedef Periodic_2_offset_2 Offset; + + template < typename Tds2 > struct Rebind_TDS { - typedef typename Vb::template Rebind_TDS::Other Vb2; - typedef Periodic_2_triangulation_ds_vertex_base_2 Other; + typedef typename Vb::template Rebind_TDS::Other Vb2; + typedef Periodic_2_triangulation_vertex_base_2 Other; }; public: - Periodic_2_triangulation_ds_vertex_base_2() : Base() {} - Periodic_2_triangulation_ds_vertex_base_2(const Point & p) + Periodic_2_triangulation_vertex_base_2() : Base() {} + Periodic_2_triangulation_vertex_base_2(const Point & p) : Base(p), _off(), _offset_flag(false) {} - Periodic_2_triangulation_ds_vertex_base_2(const Point & p, Face_handle f) + Periodic_2_triangulation_vertex_base_2(const Point & p, Face_handle f) : Base(f,p), _off(), _offset_flag(false) {} - Periodic_2_triangulation_ds_vertex_base_2(Face_handle f) + Periodic_2_triangulation_vertex_base_2(Face_handle f) : Base(f), _off(), _offset_flag(false) {} const Offset& offset() const { @@ -83,35 +86,22 @@ private: Offset _off; /// The flag is used to test whether _off has been set. bool _offset_flag; - - - // // For use by the Compact_container. - // void * for_compact_container() const - // { return _c.for_compact_container(); } - // void * & for_compact_container() - // { return _c.for_compact_container(); } - -// private: -// Face_handle _c; -// Offset _off; -// int _index; -// bool _offset_flag; }; -template < class TDS > +template < class Tds > inline std::istream& -operator>>(std::istream &is, Periodic_2_triangulation_ds_vertex_base_2 &) +operator>>(std::istream &is, Periodic_2_triangulation_vertex_base_2 &) // no combinatorial information. { return is; } -template < class TDS > +template < class Tds > inline std::ostream& operator<<(std::ostream &os, - const Periodic_2_triangulation_ds_vertex_base_2 &) + const Periodic_2_triangulation_vertex_base_2 &) // no combinatorial information. { return os; @@ -119,18 +109,18 @@ operator<<(std::ostream &os, // Specialization for void. template <> -class Periodic_2_triangulation_ds_vertex_base_2 +class Periodic_2_triangulation_vertex_base_2 { public: typedef Dummy_tds_2 Triangulation_data_structure; typedef Triangulation_data_structure::Vertex_handle Vertex_handle; typedef Triangulation_data_structure::Face_handle Face_handle; - template - struct Rebind_TDS { - typedef Periodic_2_triangulation_ds_vertex_base_2 Other; + template + struct Rebind_Tds { + typedef Periodic_2_triangulation_vertex_base_2 Other; }; }; } //namespace CGAL -#endif // CGAL_PERIODIC_2_TRIANGULATION_DS_VERTEX_BASE_2_H +#endif // CGAL_PERIODIC_2_TRIANGULATION_VERTEX_BASE_2_H diff --git a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/p2t2_interface_triang_2.cpp b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/p2t2_interface_triang_2.cpp index 554229cbc3a..ece2ff98da6 100644 --- a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/p2t2_interface_triang_2.cpp +++ b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/p2t2_interface_triang_2.cpp @@ -497,8 +497,11 @@ int main() { test(); test(); + // test(); + // test(); test_nearest(); + // test_nearest(); return 0; } diff --git a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/types.h b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/types.h index d51cfee0315..127c4beff3f 100644 --- a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/types.h +++ b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/types.h @@ -4,6 +4,8 @@ #include #include #include +#include +// #include #include #include @@ -41,7 +43,14 @@ typedef Triangulation::Periodic_triangle_iterator Periodic_triangle_iterator; typedef Periodic_2_Delaunay_triangulation_2 Delaunay_triangulation; -typedef CGAL::Creator_uniform_2 Creator; -typedef CGAL::Random_points_in_square_2 Random_points_in_square; -typedef CGAL::Random_points_on_circle_2 Random_points_on_circle; +typedef Periodic_2_triangulation_vertex_base_2 PTH_Vbb; +typedef Triangulation_hierarchy_vertex_base_2 PTH_Vb; +typedef Periodic_2_triangulation_face_base_2 PTH_Fb; +typedef Triangulation_data_structure_2 PTH_Tds; +typedef Periodic_2_Delaunay_triangulation_2 PTH_Dt; +typedef Periodic_2_triangulation_hierarchy_2 Delaunay_triangulation_hierarchy; + +typedef Creator_uniform_2 Creator; +typedef Random_points_in_square_2 Random_points_in_square; +typedef Random_points_on_circle_2 Random_points_on_circle; #endif // P2T2_UNIT_TEST_TYPES_H