diff --git a/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_3.h b/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_3.h index e709b9f6ee9..69aa9ead435 100644 --- a/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_3.h +++ b/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_3.h @@ -844,7 +844,7 @@ public: Conforming_constrained_Delaunay_triangulation_3 convert_for_remeshing() && { auto& tr = cdt_impl; for(auto vh : tr.all_vertex_handles()) { - vh->sync(); + vh->sync_vertex_type_with_dimension_and_index(tr); } for(auto ch : tr.all_cell_handles()) { @@ -875,43 +875,6 @@ public: /// \endcond // end SKIP_IN_MANUAL for convert_for_remeshing - /// \cond SKIP_IN_MANUAL - Conforming_constrained_Delaunay_triangulation_3 prepare_for_tetrahedral_remeshing() && - { - auto& tr = cdt_impl; - for(auto vh : tr.all_vertex_handles()) { - vh->reset_for_remeshing(tr); - } - - for(auto ch : tr.all_cell_handles()) { - ch->set_subdomain_index(1); - } - - std::stack stack; - stack.push(tr.infinite_cell()); - while(!stack.empty()) { - auto ch = stack.top(); - stack.pop(); - ch->set_subdomain_index(0); - for(int i = 0; i < 4; ++i) { - if(ch->is_facet_on_surface(i)) - continue; - auto n = ch->neighbor(i); - if(n->subdomain_index() == 1) { - stack.push(n); - } - } - } - Conforming_constrained_Delaunay_triangulation_3 result{std::move(*this)}; - // static_assert(CGAL::is_nothrow_movable_v); - static_assert( - std::is_same_v, Conforming_constrained_Delaunay_triangulation_3>); - *this = Conforming_constrained_Delaunay_triangulation_3{}; - return result; - } - /// \endcond - // end SKIP_IN_MANUAL for convert_for_remeshing - /** * A bidirectional iterator for visiting all constrained facets of the triangulation. * The value type of this iterator is `Triangulation::Facet`. diff --git a/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_vertex_base_3.h b/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_vertex_base_3.h index 8ee2371d566..721bee0c432 100644 --- a/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_vertex_base_3.h +++ b/Constrained_triangulation_3/include/CGAL/Conforming_constrained_Delaunay_triangulation_vertex_base_3.h @@ -76,39 +76,11 @@ public: std::size_t cached_number_of_incident_facets() const { return number_of_incident_facets_; } std::size_t cached_number_of_components() const { return number_of_components_; } - void sync() { - switch(ccdt_3_data().vertex_type()) { - case CDT_3_vertex_type::FREE: - set_dimension(3); - set_index(0); - break; - case CDT_3_vertex_type::CORNER: - set_dimension(0); - set_index(0); - break; - case CDT_3_vertex_type::STEINER_ON_EDGE: - set_dimension(1); - set_index(0); - break; - case CDT_3_vertex_type::STEINER_IN_FACE: - set_dimension(2); - set_index(ccdt_3_data().face_index()); - break; - default: - CGAL_error(); - break; - } - } - template - void reset_for_remeshing(const Tr& tr) + void sync_vertex_type_with_dimension_and_index(const Tr& tr) { switch(ccdt_3_data().vertex_type()) { - case CDT_3_vertex_type::FREE: - set_dimension(3); - set_index(0); - break; case CDT_3_vertex_type::CORNER: set_dimension(0); set_index(0); @@ -121,6 +93,10 @@ public: set_dimension(2); set_index(ccdt_3_data().face_index()); break; + case CDT_3_vertex_type::FREE: + set_dimension(3); + set_index(1); + break; default: CGAL_error(); break; diff --git a/Constrained_triangulation_3/include/CGAL/make_conforming_constrained_Delaunay_triangulation_3.h b/Constrained_triangulation_3/include/CGAL/make_conforming_constrained_Delaunay_triangulation_3.h index 0f5a265a0e2..6de883acd4d 100644 --- a/Constrained_triangulation_3/include/CGAL/make_conforming_constrained_Delaunay_triangulation_3.h +++ b/Constrained_triangulation_3/include/CGAL/make_conforming_constrained_Delaunay_triangulation_3.h @@ -123,7 +123,7 @@ auto make_conforming_constrained_Delaunay_triangulation_3(const PolygonMesh &mes using CDT = typename CGAL::Default::Get>::type; CDT cdt(mesh, np); - auto remeshing_cdt{std::move(cdt).prepare_for_tetrahedral_remeshing()}; + auto remeshing_cdt{std::move(cdt).convert_for_remeshing()}; static_assert(std::is_same_v); return remeshing_cdt; }