Try-Catch the CDT constraint insertions

This commit is contained in:
Mael Rouxel-Labbé 2023-03-28 22:42:40 +02:00
parent f570e0ec2e
commit 4d03dbe076
1 changed files with 12 additions and 4 deletions

View File

@ -1442,12 +1442,20 @@ triangulate_hole_polyline_with_cdt(const PointRange& points,
vertices[v->info()] = v; vertices[v->info()] = v;
} }
for (std::size_t i = 0; i < size; ++i) { try
const std::size_t ip = (i + 1) % size; {
if (vertices[i] != vertices[ip]) { for (std::size_t i = 0; i < size; ++i) {
cdt.insert_constraint(vertices[i], vertices[ip]); const std::size_t ip = (i + 1) % size;
if (vertices[i] != vertices[ip]) {
cdt.insert_constraint(vertices[i], vertices[ip]);
}
} }
} }
catch(const typename CDT::Intersection_of_constraints_exception&)
{
visitor.end_planar_phase(false);
return false;
}
// Mark external faces. // Mark external faces.
for (typename CDT::All_faces_iterator fit = cdt.all_faces_begin(), for (typename CDT::All_faces_iterator fit = cdt.all_faces_begin(),