From d8cdbbdc28665634e913f1a5387c66c41a342e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 7 Apr 2021 15:10:32 +0200 Subject: [PATCH] avoid an extra is-degenerate test --- .../include/CGAL/Polyhedral_envelope.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polyhedral_envelope.h b/Polygon_mesh_processing/include/CGAL/Polyhedral_envelope.h index 153e7c518f5..2f1e3ed6152 100644 --- a/Polygon_mesh_processing/include/CGAL/Polyhedral_envelope.h +++ b/Polygon_mesh_processing/include/CGAL/Polyhedral_envelope.h @@ -360,6 +360,7 @@ public: } GeomTraits gt; + std::unordered_set deg_faces; for(face_descriptor f : faces(tmesh)){ if(! Polygon_mesh_processing::is_degenerate_triangle_face(f, tmesh, parameters::geom_traits(gt).vertex_point_map(vpm))){ typename Graph_traits::halfedge_descriptor h = halfedge(f, tmesh); @@ -370,6 +371,8 @@ public: Vector3i face = { i, j, k }; env_faces.push_back(face); } + else + deg_faces.insert(f); } if (is_default_parameter(get_parameter(np, internal_np::face_epsilon_map))) init(epsilon); @@ -388,7 +391,7 @@ public: Constant_property_map(epsilon)); for(face_descriptor f : faces(tmesh)) - if(! Polygon_mesh_processing::is_degenerate_triangle_face(f, tmesh, parameters::geom_traits(gt).vertex_point_map(vpm))) + if(deg_faces.count(f)==0) epsilon_values.push_back( get(epsilon_map, f) ); init(epsilon_values); } @@ -465,6 +468,7 @@ public: return insert_res.first->second; }; + std::unordered_set deg_faces; for(face_descriptor f : face_range){ if(! Polygon_mesh_processing::is_degenerate_triangle_face(f, tmesh, parameters::geom_traits(gt).vertex_point_map(vpm))){ typename boost::graph_traits::halfedge_descriptor h = halfedge(f, tmesh); @@ -475,6 +479,8 @@ public: Vector3i face = { i, j, k }; env_faces.push_back(face); } + else + deg_faces.insert(f); } if (is_default_parameter(get_parameter(np, internal_np::face_epsilon_map))) @@ -494,7 +500,7 @@ public: Constant_property_map(epsilon)); for(face_descriptor f : face_range) - if(! Polygon_mesh_processing::is_degenerate_triangle_face(f, tmesh, parameters::geom_traits(gt).vertex_point_map(vpm))) + if(deg_faces.count(f)==0) epsilon_values.push_back( get(epsilon_map, f) ); init(epsilon_values); }