diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_3.h index ce4f6f6bc79..f299cc4d158 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_3.h @@ -7,18 +7,16 @@ namespace CGAL { The class `Periodic_3_Delaunay_triangulation_3` represents a Delaunay triangulation in three-dimensional periodic space. -\tparam Periodic_3DelaunayTriangulationTraits_3 is the geometric traits class. +\tparam PT must be a model of the concept `Periodic_3DelaunayTriangulationTraits_3`. -\tparam TriangulationDataStructure_3 is the triangulation data structure. -Its default value is -`Triangulation_data_structure_3>,Triangulation_cell_base_3>>`. +\tparam TDS must be a model of the concept `TriangulationDataStructure_3`. Its default value +is `Triangulation_data_structure_3>,Triangulation_cell_base_3>>`. */ -template< typename Periodic_3DelaunayTriangulationTraits_3, typename TriangulationDataStructure_3 > +template< typename PT, typename TDS > class Periodic_3_Delaunay_triangulation_3 : - public Periodic_3_triangulation_3 - { + public Periodic_3_triangulation_3 +{ public: /// \name Creation diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_traits_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_traits_3.h index 8271eeec581..9ce89508170 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_traits_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_Delaunay_triangulation_traits_3.h @@ -8,7 +8,7 @@ The class `Periodic_3_Delaunay_triangulation_traits_3` is designed as a default class `Periodic_3_Delaunay_triangulation_3`. \tparam Traits must be a model of the `DelaunayTriangulationTraits_3` concept. -\tparam Periodic_3Offset_3 must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. +\tparam Offset must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. If `Traits` is a `CGAL::Filtered_kernel` (detected when `Traits::Has_filtered_predicates` exists and is `true`), this class automatically provides filtered predicates. Similarly, statically filtered predicates @@ -18,9 +18,9 @@ By default, this holds for `CGAL::Exact_predicates_inexact_constructions_kernel` \cgalModels Periodic_3DelaunayTriangulationTraits_3 */ -template< typename Traits, typename Periodic_3Offset_3 > +template< typename Traits, typename Offset > class Periodic_3_Delaunay_triangulation_traits_3 - : public Periodic_3_triangulation_traits_base_3 < Traits, Periodic_3Offset_3> { + : public Periodic_3_triangulation_traits_base_3 < Traits, Offset> { public: }; /* end Periodic_3_Delaunay_triangulation_traits_3 */ } /* end namespace CGAL */ diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_3.h index 4867765051c..08f608d4acc 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_3.h @@ -7,19 +7,18 @@ namespace CGAL { The class `Periodic_3_regular_triangulation_3` represents a weighted Delaunay triangulation in three-dimensional periodic space. -\tparam Periodic_3RegularTriangulationTraits_3 is the geometric traits class. +\tparam PT must be a model of the concept `Periodic_3RegularTriangulationTraits_3`. -\tparam TriangulationDataStructure_3 is the triangulation data structure. +\tparam TDS must be a model of the concept `TriangulationDataStructure_3`. Its default value is `Triangulation_data_structure_3 >, Regular_triangulation_cell_base_3>>`. */ -template< typename Periodic_3TriangulationTraits_3, typename TriangulationDataStructure_3 > +template< typename PT, typename TDS > class Periodic_3_regular_triangulation_3 : - public Periodic_3_triangulation_3 - { + public Periodic_3_triangulation_3 +{ public: /// \name Types @@ -230,7 +229,7 @@ specifying where to start the search. \pre `c` is a cell of `rt` and `p` lies in the original domain `domain`. */ -Vertex_handle nearest_power_vertex(const Weighted_point & p, +Vertex_handle nearest_power_vertex(const Bare_point & p, Cell_handle c = Cell_handle()) const; /// @} @@ -343,13 +342,13 @@ Bare_point dual(Cell_handle c) const; /*! Returns the dual of facet `f`, which is a periodic segment. */ -Periodic_segment dual(Facet f) const; +Periodic_segment_3 dual(Facet f) const; /*! same as the previous method for facet `(c,i)`. \pre \f$ i\in\{0,1,2,3\}\f$ */ -Periodic_segment dual(Cell_handle c, int i) const; +Periodic_segment_3 dual(Cell_handle c, int i) const; /*! Returns in the output iterator the points of the dual polygon of diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_traits_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_traits_3.h index b7834a2a68e..e6ba3731ff8 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_traits_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_regular_triangulation_traits_3.h @@ -8,19 +8,18 @@ The class `Periodic_3_regular_triangulation_traits_3` is designed as a default t class `Periodic_3_regular_triangulation_3`. \tparam Traits must be a model of the `RegularTriangulationTraits_3` concept. -\tparam Periodic_3Offset_3 must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. - -\cgalModels Periodic_3RegularTriangulationTraits_3 +\tparam Offset must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. If `Traits` is a `CGAL::Filtered_kernel` (detected when `Traits::Has_filtered_predicates` exists and is `true`), this class automatically provides filtered predicates. By default, this holds for `CGAL::Exact_predicates_inexact_constructions_kernel` and `CGAL::Exact_predicates_exact_constructions_kernel`. +\cgalModels Periodic_3RegularTriangulationTraits_3 */ -template< typename Traits, typename Periodic_3Offset_3 > +template< typename Traits, typename Offset > class Periodic_3_regular_triangulation_traits_3 : - public Periodic_3_triangulation_traits_base_3< Traits, Periodic_3Offset_3 > { + public Periodic_3_triangulation_traits_base_3< Traits, Offset > { public: }; /* end Periodic_3_regular_triangulation_traits_3 */ } /* end namespace CGAL */ diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_3.h index 3615f307ca9..0f7e8c856c3 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_3.h @@ -4,18 +4,18 @@ namespace CGAL { /*! \ingroup PkgPeriodic3Triangulation3MainClasses -The class `Periodic_triangulation_3` represents a 3-dimensional +The class `Periodic_3_triangulation_3` represents a 3-dimensional triangulation of a point set in \f$ \mathbb T_c^3\f$. -\tparam PT must be a model of the `Periodic_3TriangulationTraits_3` concept. +\tparam PT must be a model of the concept `Periodic_3TriangulationTraits_3`. -\tparam TDS must be a model of `TriangulationDataStructure_3` concept -with some additional functionality in cells and vertices. +\tparam TDS must be a model of the concept `TriangulationDataStructure_3` +with some additional functionality in cells and vertices. Its default value is `Triangulation_data_structure_3>,Triangulation_cell_base_3>>`. - \sa `Periodic_3_Delaunay_triangulation_3` +\sa `Periodic_3_regular_triangulation_3` */ template< typename PT, typename TDS > class Periodic_3_triangulation_3 { @@ -53,9 +53,18 @@ store the number of sheets in each direction of space. typedef array Covering_sheets; /*! +The point type of the triangulation. +\note This type is equal to `Geometric_traits::Point_3` when considering periodic +Delaunay triangulations and to `Geometric_traits::Weighted_point_3` when +considering periodic weighted Delaunay triangulations. */ -typedef Geometric_traits::Point_3 Point; +typedef TDS::Vertex::Point Point; + +/*! +The geometric basic 3D point type. +*/ +typedef Geometric_traits::Point_3 Point_3; /*! @@ -73,35 +82,53 @@ typedef Geometric_traits::Triangle_3 Triangle; typedef Geometric_traits::Tetrahedron_3 Tetrahedron; /*! -Represents a point-offset pair. The point in the -pair lies in the original domain. +Represents a point-offset pair. The point in the pair lies in the original domain. +Note that the inner type is `Point`. */ -typedef std::pair< Point, Offset > -Periodic_point; +typedef std::pair< Point, Offset > Periodic_point; /*! - +Represents a point-offset pair. The point in the pair lies in the original domain. +Note that the inner type is `Point_3`. */ -typedef array< Periodic_point, 2> -Periodic_segment; +typedef std::pair< Point_3, Offset > Periodic_point_3; /*! - +A periodic segment. Note that the inner type is `Periodic_point`. */ -typedef array< Periodic_point, 3> -Periodic_triangle; +typedef array< Periodic_point, 2> Periodic_segment; /*! - +A periodic segment. Note that the inner type is `Periodic_point_3`. */ -typedef array< Periodic_point, 4> -Periodic_tetrahedron; +typedef array< Periodic_point_3, 2> Periodic_segment_3; +/*! +A periodic triangle. Note that the inner type is `Periodic_point`. +*/ +typedef array< Periodic_point, 3> Periodic_triangle; + +/*! +A periodic triangle. Note that the inner type is `Periodic_point_3`. +*/ +typedef array< Periodic_point_3, 3> Periodic_triangle_3; + +/*! +A periodic tetrahedron. Note that the inner type is `Periodic_point`. +*/ +typedef array< Periodic_point, 4> Periodic_tetrahedron; + +/*! +A periodic tetrahedron. Note that the inner type is `Periodic_point_3`. +*/ +typedef array< Periodic_point_3, 4> Periodic_tetrahedron_3; /// @} /*! \name -Only vertices (\f$ 0\f$-faces) and cells (\f$ 3\f$-faces) are stored. Edges (\f$ 1\f$-faces) and facets (\f$ 2\f$-faces) are not explicitly represented and thus there are no corresponding classes (see Section \ref P3Triangulation3secintro). +Only vertices (\f$ 0\f$-faces) and cells (\f$ 3\f$-faces) are stored. +Edges (\f$ 1\f$-faces) and facets (\f$ 2\f$-faces) are not explicitly represented +and thus there are no corresponding classes (see Section \ref P3Triangulation3secintro). */ /// @{ @@ -208,6 +235,8 @@ typedef Triangulation_data_structure::Facet_circulator Facet_circulator; /// @} /// \name Geometric Iterators: +/// The following iterators have value type `Periodic_segment`, `Periodic_triangle`, +/// and `Periodic_tetrahedron`, which have inner type `Point`. /// @{ /*! @@ -511,6 +540,8 @@ size_type number_of_stored_facets() const; /// @} /// \name Geometric Access Functions +/// The following functions return object of types `Periodic_segment`, +/// `Periodic_triangle`, and `Periodic_tetrahedron`, which have inner type `Point`. /// @{ /*! @@ -599,33 +630,92 @@ A translation in accordance with `offset` is applied on the point-offet pairs. Periodic_tetrahedron periodic_tetrahedron(const Cell_handle c, Offset offset) const; /// \name +/// \warning The following functions were renamed with %CGAL 4.11 to clarify +/// that they return geometric objects with inner type `Point_3`. +/// /// Note that a traits class providing exact constructions should be /// used in order to guarantee the following operations to be exact /// (as opposed to computing the triangulation only, which requires /// only exact predicates). +/// /// @{ /*! -Converts the `Periodic_point` `s` (point-offset pair) to the -corresponding `Point` in \f$ \mathbb R^3\f$. +Converts the periodic point of type `PP` to a `Point_3`. The type `PP` can be either +`Periodic_point` or `Periodic_point_3`. */ -Point point(const Periodic_point & p ) const; +template +Point_3 construct_point(const PP & pp) const; /*! -Converts the `Periodic_segment` `s` to a `Segment`. +Converts the `Point` `p` to a `Point_3`. */ -Segment segment(const Periodic_segment & s) const; +Point_3 construct_point(const Point & p) const; /*! -Converts the `Periodic_triangle` `t` to a `Triangle`. +Same as above, with offsets. */ -Triangle triangle(const Periodic_triangle & t) const; +template +Point_3 construct_point(const P& p1, const Offset& o1) const; /*! -Converts the `Periodic_tetrahedron` `t` to a `Tetrahedron`. +Converts the periodic segment of type `PS` to a `Segment`. The type `PS` can be +either `Periodic_segment` or `Periodic_segment_3`. */ -Tetrahedron tetrahedron(const Periodic_tetrahedron & t) -const; +template +Segment construct_segment(const PS & s) const; + +/*! +Creates a segment from two points. The type `P` can be either `Point` or `Point_3`. +*/ +template +Segment construct_segment(const P& p1, const P& p2) const; + +/*! +Same as above, with offsets. +*/ +template +Segment construct_segment(const P& p1, const P& p2, const Offset& o1, const Offset& o2) const; + +/*! +Converts the periodic triangle of type `PT` to a `Triangle`. The type `PT` can +be either `Periodic_triangle` or `Periodic_triangle_3`. +*/ +template +Triangle construct_triangle(const PT & t) const; + +/*! +Creates a triangle from three points. The type `P` can be either `Point` or `Point_3`. +*/ +template +Triangle construct_triangle(const P& p1, const P& p2, const P& p3) const; + +/*! +Same as above, with offsets. +*/ +template +Triangle construct_triangle(const P& p1, const P& p2, const P& p3, + const Offset& o1, const Offset& o2, const Offset& o3) const; + +/*! +Converts the periodic tetrahedron of type `PT` to a `Tetrahedron`. The type `PT` +can be either `Periodic_tetrahedron` or `Periodic_tetrahedron_3`. +*/ +template +Tetrahedron construct_tetrahedron(const PT & t) const; + +/*! +Creates a tetrahedron from four points. The type `P` can be either `Point` or `Point_3`. +*/ +template +Tetrahedron construct_tetrahedron(const P& p1, const P& p2, const P& p3, const P& p4) const; + +/*! +Same as above, with offsets. +*/ +template +Tetrahedron construct_tetrahedron(const P& p1, const P& p2, const P& p3, const P& p4, + const Offset& o1, const Offset& o2, const Offset& o3, const Offset& o4) const; /// @} diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_hierarchy_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_hierarchy_3.h index dfbffede3b3..a9fac021ee0 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_hierarchy_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_hierarchy_3.h @@ -10,9 +10,8 @@ location queries. \cgalHeading{Template Parameters} -It is templated by a parameter which must be instantiated by one of the \cgal periodic triangulation classes. In the current -implementation, only `Periodic_3_Delaunay_triangulation_3` is -supported for `PTr`. +\tparam PTr must be one of the \cgal periodic triangulation classes. In the current +implementation, only `Periodic_3_Delaunay_triangulation_3` is supported for. `PTr::Vertex` has to be a model of the concept `Periodic_3TriangulationHierarchyVertexBase_3`. @@ -21,14 +20,14 @@ supported for `PTr`. `Periodic_3DelaunayTriangulationTraits_3`. `Periodic_3_triangulation_hierarchy_3` offers exactly the same functionalities as `PTr`. -Most of them (point location, insertion, removal \f$ \ldots\f$ ) are overloaded to -improve their efficiency by using the hierarchic structure. +Most of these functionalities (point location, insertion, removal \f$ \ldots\f$ ) +are overloaded to improve their efficiency by using the hierarchic structure. Note that, since the algorithms that are provided are randomized, the running time of constructing a triangulation with a hierarchy may be improved when shuffling the data points. -However, the I/O operations are not overloaded. So, writing a +However, the I/O operations are not overloaded. Thus, writing a hierarchy into a file will lose the hierarchic structure and reading it from the file will result in an ordinary triangulation whose efficiency will be the same as `PTr`. diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_traits_3.h b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_traits_3.h index ed1815bf22a..bdf39faa352 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_traits_3.h +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/CGAL/Periodic_3_triangulation_traits_3.h @@ -5,10 +5,10 @@ namespace CGAL { \ingroup PkgPeriodic3Triangulation3TraitsClasses The class `Periodic_3_triangulation_traits_3` is designed as a default traits class for the -class `Periodic_3_triangulation_3`. +class `Periodic_3_triangulation_3`. \tparam Traits must be a model of the `TriangulationTraits_3` concept. -\tparam Periodic_3Offset_3 must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. +\tparam Offset must be a model of the concept `Periodic_3Offset_3` and defaults to `Periodic_3_offset_3`. If `Traits` is a `CGAL::Filtered_kernel` (detected when `Traits::Has_filtered_predicates` exists and is `true`), this class automatically provides filtered predicates. Similarly, statically filtered predicates @@ -18,7 +18,7 @@ By default, this holds for `CGAL::Exact_predicates_inexact_constructions_kernel` \cgalModels Periodic_3TriangulationTraits_3 */ -template< typename Traits, typename Periodic_3Offset_3 > +template< typename Traits, typename Offset > class Periodic_3_triangulation_traits_3 : public Traits { public: }; /* end Periodic_3_triangulation_traits_3 */ diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt index 96ca126e370..9f46b08709b 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/Periodic_3_triangulation_3.txt @@ -273,7 +273,7 @@ The second parameter `Periodic_3Offset_3` defaults to The kernels `Cartesian`, `Homogeneous`, `Simple_cartesian`, `Simple_homogeneous` and -`Filtered_kernel` can all be used as \cgalModels of the concepts +`Filtered_kernel` can all be used as models of the concepts `TriangulationTraits_3`, `DelaunayTriangulationTraits_3`, and `RegularTriangulationTraits_3`. The periodic triangulation classes provide exact @@ -423,7 +423,7 @@ data structure. \cgalExample{Periodic_3_triangulation_3/simple_regular_example.cpp} -\subsubsection Periodic_3_triangulation_3P3TR3FirstExample Point Insertion and Vertex Removal +\subsubsection Periodic_3_triangulation_3P3TR3PointInsertionAndVertexRemoval Point Insertion and Vertex Removal This example shows the incremental construction of a 3D regular triangulation, and the removal of a vertex. It uses the default parameter of the diff --git a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt index 6b8bf6be2bf..ad00038d8be 100644 --- a/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt +++ b/Periodic_3_triangulation_3/doc/Periodic_3_triangulation_3/examples.txt @@ -1,5 +1,6 @@ /*! \example Periodic_3_triangulation_3/simple_example.cpp +\example Periodic_3_triangulation_3/simple_regular_example.cpp \example Periodic_3_triangulation_3/colored_vertices.cpp \example Periodic_3_triangulation_3/periodic_adding_handles.cpp \example Periodic_3_triangulation_3/covering.cpp diff --git a/Triangulation_3/doc/Triangulation_3/CGAL/Robust_weighted_circumcenter_filtered_traits_3.h b/Triangulation_3/doc/Triangulation_3/CGAL/Robust_weighted_circumcenter_filtered_traits_3.h index 135d647b22a..f0f70ffe661 100644 --- a/Triangulation_3/doc/Triangulation_3/CGAL/Robust_weighted_circumcenter_filtered_traits_3.h +++ b/Triangulation_3/doc/Triangulation_3/CGAL/Robust_weighted_circumcenter_filtered_traits_3.h @@ -6,8 +6,8 @@ namespace CGAL * * @class Robust_weighted_circumcenter_filtered_traits_3 * - * Overrides Construct_weighted_circumcenter_3(), Compute_squared_radius_3(), - * and Compute_squared_radius_smallest_orthogonal_sphere_3() with robust versions. + * Overrides the kernel functors Construct_weighted_circumcenter_3, Compute_squared_radius_3, + * and Compute_squared_radius_smallest_orthogonal_sphere_3 with robust versions. * * Robustness is achieved by using exact computations if the geometric configuration * is close to degenerate.