Merge remote-tracking branch 'cgal/5.6.x-branch' into HEAD

This commit is contained in:
Sébastien Loriot 2025-01-22 10:54:25 +01:00
commit 5139e6ed09
2 changed files with 34 additions and 35 deletions

View File

@ -21,7 +21,7 @@
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h> #include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Triangulation_segment_traverser_3.h> #include <CGAL/Triangulation_simplex_3.h>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
@ -30,8 +30,8 @@
#include <CGAL/Timer.h> #include <CGAL/Timer.h>
// Define the kernel. // Define the kernel.
typedef CGAL::Exact_predicates_exact_constructions_kernel Epeck; using Epeck = CGAL::Exact_predicates_exact_constructions_kernel;
typedef CGAL::Exact_predicates_inexact_constructions_kernel Epick; using Epick = CGAL::Exact_predicates_inexact_constructions_kernel;
template<typename Kernel> template<typename Kernel>
@ -40,11 +40,11 @@ void bench_segment_traverser(const int nb_queries,
const double rad, const double rad,
CGAL::Random& rng) CGAL::Random& rng)
{ {
typedef CGAL::Delaunay_triangulation_3<Kernel> DT; using DT = CGAL::Delaunay_triangulation_3<Kernel>;
typedef CGAL::Triangulation_segment_simplex_iterator_3<DT> Simplex_traverser; using Tds = typename DT::Triangulation_data_structure;
typedef CGAL::Triangulation_segment_cell_iterator_3<DT> Cell_traverser; using Point_3 = typename DT::Point_3;
typedef typename DT::Point_3 Point_3; using Cell_handle = typename DT::Cell_handle;
typedef typename DT::Cell Cell; using Simplex_3 = CGAL::Triangulation_simplex_3<Tds>;
std::cout << "\nBench :\t " << nb_queries << " queries," << std::endl std::cout << "\nBench :\t " << nb_queries << " queries," << std::endl
<< "\t in triangulation of size " << nbv << std::endl << "\t in triangulation of size " << nbv << std::endl
@ -83,29 +83,26 @@ void bench_segment_traverser(const int nb_queries,
{ {
//Simplex traverser //Simplex traverser
timer_st.start(); timer_st.start();
Simplex_traverser st(dt, segments[2*i], segments[2*i + 1]);
// Count the number of finite cells traversed. // Count the number of finite cells traversed.
unsigned int inf = 0, fin = 0; unsigned int inf = 0, fin = 0;
for (; st != st.end(); ++st) for (Simplex_3 st : dt.segment_traverser_simplices(segments[2 * i], segments[2 * i + 1]))
{ {
Cell c = st.cell(); Cell_handle c = st.incident_cell();
// if (dt.is_infinite(c)) ++inf; if (dt.is_infinite(c)) ++inf;
// else ++fin; else ++fin;
} }
timer_st.stop(); timer_st.stop();
//Cell traverser //Cell traverser
timer_ct.start(); timer_ct.start();
Cell_traverser ct(dt, segments[2*i], segments[2*i + 1]);
// Count the number of finite cells traversed. // Count the number of finite cells traversed.
inf = 0, fin = 0; inf = 0, fin = 0;
for (; ct != ct.end(); ++ct) for (Cell_handle c : dt.segment_traverser_cell_handles(segments[2 * i], segments[2 * i + 1]))
{ {
Cell c = ct.cell(); if (dt.is_infinite(c)) ++inf;
// if (dt.is_infinite(c)) ++inf; else ++fin;
// else ++fin;
} }
timer_ct.stop(); timer_ct.stop();
} }
@ -128,4 +125,6 @@ int main(int argc, char* argv[])
// bench_segment_traverser<Epeck>(nb_queries, nbv, rad, rng); // bench_segment_traverser<Epeck>(nb_queries, nbv, rad, rng);
bench_segment_traverser<Epick>(nb_queries, nbv, rad, rng); bench_segment_traverser<Epick>(nb_queries, nbv, rad, rng);
return EXIT_SUCCESS;
} }

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgTriangulation3VertexCellClasses \ingroup PkgTriangulation3VertexCellClasses
The class `Triangulation_simplex_3` stores a simplex of any dimension The class `Triangulation_simplex_3` stores a simplex of any dimension
defined by the `Triangulation_3` class. It also defines the defined by the `TriangulationDataStructure_3` class. It also defines the
operator less such that simplices can be stored in a `map` or a operator less such that simplices can be stored in a `map` or a
`set` of simplices. The simplex is invalidated by any change in `set` of simplices. The simplex is invalidated by any change in
the triangulation. the triangulation.
@ -18,7 +18,7 @@ from.
\sa `CGAL::Triangulation_3<TriangulationTraits_3,TriangulationDataStructure_3>` \sa `CGAL::Triangulation_3<TriangulationTraits_3,TriangulationDataStructure_3>`
*/ */
template< typename Triangulation_3 > template< typename TriangulationDataStructure_3 >
class Triangulation_simplex_3 { class Triangulation_simplex_3 {
public: public:
@ -29,67 +29,67 @@ public:
The simplex class itself. The simplex class itself.
*/ */
typedef Triangulation_simplex_3<Triangulation_3> Simplex; typedef Triangulation_simplex_3<TriangulationDataStructure_3> Simplex;
/*! /*!
*/ */
typedef Triangulation_3::Vertex_handle Vertex_handle; typedef TriangulationDataStructure_3::Vertex_handle Vertex_handle;
/*! /*!
*/ */
typedef Triangulation_3::Edge Edge; typedef TriangulationDataStructure_3::Edge Edge;
/*! /*!
*/ */
typedef Triangulation_3::Facet Facet; typedef TriangulationDataStructure_3::Facet Facet;
/*! /*!
*/ */
typedef Triangulation_3::Cell_handle Cell_handle; typedef TriangulationDataStructure_3::Cell_handle Cell_handle;
/*! /*!
*/ */
typedef Triangulation_3::Cell_circulator Cell_circulator; typedef TriangulationDataStructure_3::Cell_circulator Cell_circulator;
/*! /*!
*/ */
typedef Triangulation_3::Facet_circulator Facet_circulator; typedef TriangulationDataStructure_3::Facet_circulator Facet_circulator;
/*! /*!
*/ */
typedef Triangulation_3::Edge_iterator Edge_iterator; typedef TriangulationDataStructure_3::Edge_iterator Edge_iterator;
/*! /*!
*/ */
typedef Triangulation_3::Facet_iterator Facet_iterator; typedef TriangulationDataStructure_3::Facet_iterator Facet_iterator;
/*! /*!
*/ */
typedef Triangulation_3::Finite_vertices_iterator Finite_vertices_iterator; typedef TriangulationDataStructure_3::Finite_vertices_iterator Finite_vertices_iterator;
/*! /*!
*/ */
typedef Triangulation_3::Finite_edges_iterator Finite_edges_iterator; typedef TriangulationDataStructure_3::Finite_edges_iterator Finite_edges_iterator;
/*! /*!
*/ */
typedef Triangulation_3::Finite_facets_iterator Finite_facets_iterator; typedef TriangulationDataStructure_3::Finite_facets_iterator Finite_facets_iterator;
/*! /*!
*/ */
typedef Triangulation_3::Finite_cells_iterator Finite_cells_iterator; typedef TriangulationDataStructure_3::Finite_cells_iterator Finite_cells_iterator;
/// @} /// @}
@ -188,7 +188,7 @@ Test whether two
simplices are equal. simplices are equal.
*/ */
bool operator==(const bool operator==(const
Triangulation_simplex_3<Triangulation_3> &s1); Triangulation_simplex_3<TriangulationDataStructure_3> &s1);
/*! /*!
Defines a ordering Defines a ordering
@ -196,7 +196,7 @@ on the simplices. This ordering depends on the memory layout and is
independent of the geometry. Therefore, the ordering is not intrinsic independent of the geometry. Therefore, the ordering is not intrinsic
*/ */
bool operator< (const bool operator< (const
Triangulation_simplex_3<Triangulation_3> &s1); Triangulation_simplex_3<TriangulationDataStructure_3> &s1);
/// @} /// @}