From 22c110e22a1da67c82f4f3e82de029c3c975f562 Mon Sep 17 00:00:00 2001 From: Dmitry Anisimov Date: Tue, 4 Aug 2020 09:49:37 +0200 Subject: [PATCH] using traits functor for projection --- .../Hole_filling/Triangulate_hole_polyline.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h index 7b31d96b06f..83ba81e9c08 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h @@ -1224,14 +1224,17 @@ template bool is_planar_2( const std::vector& points, const typename Traits::Vector_3& avg_normal, - const typename Traits::FT max_distance, + const typename Traits::FT max_sq_distance, const Traits& traits) { typedef typename Traits::FT FT; typedef typename Traits::Point_3 Point_3; typedef typename Traits::Plane_3 Plane_3; + typedef typename Traits::Construct_projected_point_3 Projection_3; typedef typename Traits::Compute_squared_distance_3 Squared_distance_3; + const Projection_3 projection_3 = + traits.construct_projected_point_3_object(); const Squared_distance_3 squared_distance_3 = traits.compute_squared_distance_3_object(); @@ -1275,14 +1278,13 @@ bool is_planar_2( FT avg_sq_distance = FT(0); for (std::size_t i = 0; i < n; ++i) { const Point_3& p = points[i]; - const Point_3 q = plane.projection(p); + const Point_3 q = projection_3(plane, p); avg_sq_distance += squared_distance_3(p, q); } avg_sq_distance /= static_cast(n); // std::cout << "avg squared distance: " << avg_sq_distance << std::endl; - const FT sq_tolerance = CGAL::square(max_distance); - if (avg_sq_distance > sq_tolerance) { + if (avg_sq_distance > max_sq_distance) { return false; // the user distance criteria are not satisfied! } @@ -1359,8 +1361,8 @@ triangulate_hole_polyline_with_cdt(const PointRange& points, // std::cout << "avg normal: " << avg_normal << std::endl; // Checking the hole planarity. - const FT max_distance = FT(2) / FT(100); - if (!is_planar_2(P, avg_normal, max_distance, traits)) { + const FT max_sq_distance = FT(4) / FT(10000); + if (!is_planar_2(P, avg_normal, max_sq_distance, traits)) { return false; }