This commit is contained in:
Laurent Rineau 2024-04-03 17:10:44 +02:00
parent 1711b842f6
commit 9d63c10175
2 changed files with 4 additions and 3 deletions

View File

@ -198,7 +198,7 @@ protected:
template <class InputIterator> template <class InputIterator>
void process_cells_in_conflict(InputIterator cell_it, InputIterator end) { void process_cells_in_conflict(InputIterator cell_it, InputIterator end) {
auto d = self.tr.dimension() auto d = self.tr.dimension();
for( ; cell_it != end; ++cell_it ) for( ; cell_it != end; ++cell_it )
for( int i = 0; i < d; ++i ) for( int i = 0; i < d; ++i )
for( int j = i+1; j <= d; ++j ) { for( int j = i+1; j <= d; ++j ) {

View File

@ -2332,7 +2332,6 @@ private:
triangulate_cavity(original_intersecting_cells, original_facets_of_upper_cavity, original_vertices_of_upper_cavity); triangulate_cavity(original_intersecting_cells, original_facets_of_upper_cavity, original_vertices_of_upper_cavity);
std::for_each(interior_constrained_faces_upper.begin(), interior_constrained_faces_upper.end(), std::for_each(interior_constrained_faces_upper.begin(), interior_constrained_faces_upper.end(),
register_internal_constrained_facet); register_internal_constrained_facet);
insert_in_conflict_visitor.process_cells_in_conflict(cells_of_upper_cavity.begin(), cells_of_upper_cavity.end());
if(this->debug_copy_triangulation_into_hole()) { if(this->debug_copy_triangulation_into_hole()) {
std::cerr << "# lower cavity\n"; std::cerr << "# lower cavity\n";
} }
@ -2342,7 +2341,6 @@ private:
triangulate_cavity(original_intersecting_cells, original_facets_of_lower_cavity, original_vertices_of_lower_cavity); triangulate_cavity(original_intersecting_cells, original_facets_of_lower_cavity, original_vertices_of_lower_cavity);
std::for_each(interior_constrained_faces_lower.begin(), interior_constrained_faces_lower.end(), std::for_each(interior_constrained_faces_lower.begin(), interior_constrained_faces_lower.end(),
register_internal_constrained_facet); register_internal_constrained_facet);
insert_in_conflict_visitor.process_cells_in_conflict(cells_of_lower_cavity.begin(), cells_of_lower_cavity.end());
// the following transform_reduce is like `std::any_of` but without the fast-exit // the following transform_reduce is like `std::any_of` but without the fast-exit
if(std::transform_reduce(fh_region.begin(), fh_region.end(), false, std::logical_or<bool>{}, [&](auto fh) { if(std::transform_reduce(fh_region.begin(), fh_region.end(), false, std::logical_or<bool>{}, [&](auto fh) {
@ -2410,6 +2408,9 @@ private:
throw Next_region{"missing facet in polygon", fh_region[0]}; throw Next_region{"missing facet in polygon", fh_region[0]};
} }
insert_in_conflict_visitor.process_cells_in_conflict(cells_of_upper_cavity.begin(), cells_of_upper_cavity.end());
insert_in_conflict_visitor.process_cells_in_conflict(cells_of_lower_cavity.begin(), cells_of_lower_cavity.end());
if(this->debug_copy_triangulation_into_hole()) { if(this->debug_copy_triangulation_into_hole()) {
std::cerr << "# glu the upper triangulation of the cavity\n"; std::cerr << "# glu the upper triangulation of the cavity\n";
if(cells_of_lower_cavity.size() > original_intersecting_cells.size() || if(cells_of_lower_cavity.size() > original_intersecting_cells.size() ||