update cell selector after collapse

This commit is contained in:
Jane Tournois 2022-10-28 13:13:36 +02:00
parent 7a0cb92e43
commit 1891985a82
1 changed files with 9 additions and 8 deletions

View File

@ -744,10 +744,11 @@ void merge_surface_patch_indices(const typename C3t3::Facet& f1,
}
}
template<typename C3t3>
template<typename C3t3, typename CellSelector>
typename C3t3::Vertex_handle
collapse(const typename C3t3::Cell_handle ch,
const int to, const int from,
CellSelector& cell_selector,
C3t3& c3t3)
{
typedef typename C3t3::Triangulation Tr;
@ -913,8 +914,7 @@ collapse(const typename C3t3::Cell_handle ch,
for (Cell_handle cell_to_remove : cells_to_remove)
{
// remove cell
if (c3t3.is_in_complex(cell_to_remove))
c3t3.remove_from_complex(cell_to_remove);
treat_before_delete(cell_to_remove, cell_selector, c3t3);
c3t3.triangulation().tds().delete_cell(cell_to_remove);
}
@ -927,9 +927,10 @@ collapse(const typename C3t3::Cell_handle ch,
}
template<typename C3t3>
template<typename C3t3, typename CellSelector>
typename C3t3::Vertex_handle collapse(typename C3t3::Edge& edge,
const Collapse_type& collapse_type,
CellSelector& cell_selector,
C3t3& c3t3)
{
typedef typename C3t3::Vertex_handle Vertex_handle;
@ -953,7 +954,7 @@ typename C3t3::Vertex_handle collapse(typename C3t3::Edge& edge,
vh0->set_point(new_position);
vh1->set_point(new_position);
vh = collapse(edge.first, edge.second, edge.third, c3t3);
vh = collapse(edge.first, edge.second, edge.third, cell_selector, c3t3);
c3t3.set_dimension(vh, (std::min)(dim_vh0, dim_vh1));
}
else //Collapse at vertex
@ -961,7 +962,7 @@ typename C3t3::Vertex_handle collapse(typename C3t3::Edge& edge,
if (collapse_type == TO_V1)
{
vh0->set_point(p1);
vh = collapse(edge.first, edge.third, edge.second, c3t3);
vh = collapse(edge.first, edge.third, edge.second, cell_selector, c3t3);
c3t3.set_dimension(vh, (std::min)(dim_vh0, dim_vh1));
}
else //Collapse at v0
@ -969,7 +970,7 @@ typename C3t3::Vertex_handle collapse(typename C3t3::Edge& edge,
if (collapse_type == TO_V0)
{
vh1->set_point(p0);
vh = collapse(edge.first, edge.second, edge.third, c3t3);
vh = collapse(edge.first, edge.second, edge.third, cell_selector, c3t3);
c3t3.set_dimension(vh, (std::min)(dim_vh0, dim_vh1));
}
else
@ -1133,7 +1134,7 @@ typename C3t3::Vertex_handle collapse_edge(typename C3t3::Edge& edge,
if (in_cx)
nb_valid_collapse++;
#endif
return collapse(edge, collapse_type, c3t3);
return collapse(edge, collapse_type, cell_selector, c3t3);
}
}
#ifdef CGAL_DEBUG_TET_REMESHING_IN_PLUGIN