rename functions, remove useless duplicate, and order switch/case by vertex dim

This commit is contained in:
Jane Tournois 2025-03-17 13:07:56 +01:00
parent a034df31f2
commit 493b78a6d7
3 changed files with 7 additions and 68 deletions

View File

@ -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<decltype(tr.infinite_cell())> 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<Conforming_constrained_Delaunay_triangulation_3>);
static_assert(
std::is_same_v<std::remove_reference_t<decltype(*this)>, 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`.

View File

@ -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<typename Tr>
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;

View File

@ -123,7 +123,7 @@ auto make_conforming_constrained_Delaunay_triangulation_3(const PolygonMesh &mes
using CDT = typename CGAL::Default::Get<Triangulation,
Conforming_constrained_Delaunay_triangulation_3<Mesh_geom_traits>>::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<decltype(remeshing_cdt), CDT>);
return remeshing_cdt;
}