From 56a3e64a16fa6fb212e7f49f8c9108c46f005743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Mon, 14 Mar 2022 20:51:57 +0100 Subject: [PATCH] Move GH calculators to internal namespace --- .../GarlandHeckbert_plane_policies.h | 19 ++++++++------ ...andHeckbert_probabilistic_plane_policies.h | 23 +++++++++-------- ...Heckbert_probabilistic_triangle_policies.h | 25 +++++++++++-------- .../GarlandHeckbert_triangle_policies.h | 19 ++++++++------ 4 files changed, 49 insertions(+), 37 deletions(-) diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_plane_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_plane_policies.h index afb4e706b83..39004fadcf5 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_plane_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_plane_policies.h @@ -21,12 +21,13 @@ namespace CGAL { namespace Surface_mesh_simplification { +namespace internal { template class Plane_quadric_calculator { - typedef typename internal::GarlandHeckbert_matrix_types::Mat_4 Mat_4; - typedef typename internal::GarlandHeckbert_matrix_types::Col_4 Col_4; + typedef typename GarlandHeckbert_matrix_types::Mat_4 Mat_4; + typedef typename GarlandHeckbert_matrix_types::Col_4 Col_4; public: Plane_quadric_calculator() { } @@ -37,7 +38,7 @@ public: const VertexPointMap point_map, const GeomTraits& gt) const { - return internal::construct_classic_plane_quadric_from_edge(he, tmesh, point_map, gt); + return construct_classic_plane_quadric_from_edge(he, tmesh, point_map, gt); } template @@ -46,7 +47,7 @@ public: const VertexPointMap point_map, const GeomTraits& gt) const { - return internal::construct_classic_plane_quadric_from_face(f, tmesh, point_map, gt); + return construct_classic_plane_quadric_from_face(f, tmesh, point_map, gt); } // @fixme unused? @@ -73,19 +74,21 @@ public: const Col_4& p0, const Col_4& p1) const { - return internal::construct_optimal_point_singular(quadric, p0, p1); + return construct_optimal_point_singular(quadric, p0, p1); } }; +} // namespace internal + template class GarlandHeckbert_plane_policies : public internal::GarlandHeckbert_placement_base< - Plane_quadric_calculator, TriangleMesh, GeomTraits>, + internal::Plane_quadric_calculator, TriangleMesh, GeomTraits>, public internal::GarlandHeckbert_cost_base< - Plane_quadric_calculator, TriangleMesh, GeomTraits> + internal::Plane_quadric_calculator, TriangleMesh, GeomTraits> { public: - typedef Plane_quadric_calculator Quadric_calculator; + typedef internal::Plane_quadric_calculator Quadric_calculator; private: typedef internal::GarlandHeckbert_placement_base< diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h index 56f3b4a7a73..43fba11cd4a 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_plane_policies.h @@ -27,6 +27,7 @@ namespace CGAL { namespace Surface_mesh_simplification { +namespace internal { template class Probabilistic_plane_quadric_calculator @@ -39,8 +40,8 @@ class Probabilistic_plane_quadric_calculator typedef Constant_property_map > Default_FVM; typedef typename Default::Get::type Face_variance_map; - typedef typename internal::GarlandHeckbert_matrix_types::Mat_4 Mat_4; - typedef typename internal::GarlandHeckbert_matrix_types::Col_4 Col_4; + typedef typename GarlandHeckbert_matrix_types::Mat_4 Mat_4; + typedef typename GarlandHeckbert_matrix_types::Col_4 Col_4; private: // @fixme check the magic values @@ -83,13 +84,13 @@ public: typedef typename GeomTraits::Point_3 Point_3; typedef typename GeomTraits::Vector_3 Vector_3; - const Vector_3 normal = internal::construct_edge_normal(he, tmesh, vpm, gt); + const Vector_3 normal = construct_edge_normal(he, tmesh, vpm, gt); const Point_3 p = get(vpm, source(he, tmesh)); FT n_variance, p_variance; std::tie(n_variance, p_variance) = get(m_face_variance_map, face(he, tmesh)); - return internal::construct_prob_plane_quadric_from_normal(normal, p, gt, n_variance, p_variance); + return construct_prob_plane_quadric_from_normal(normal, p, gt, n_variance, p_variance); } template @@ -102,13 +103,13 @@ public: typedef typename GeomTraits::Point_3 Point_3; typedef typename GeomTraits::Vector_3 Vector_3; - const Vector_3 normal = internal::construct_unit_normal_from_face(f, tmesh, vpm, gt); + const Vector_3 normal = construct_unit_normal_from_face(f, tmesh, vpm, gt); const Point_3 p = get(vpm, source(halfedge(f, tmesh), tmesh)); FT n_variance, p_variance; std::tie(n_variance, p_variance) = get(m_face_variance_map, f); - return internal::construct_prob_plane_quadric_from_normal(normal, p, gt, n_variance, p_variance); + return construct_prob_plane_quadric_from_normal(normal, p, gt, n_variance, p_variance); } Col_4 construct_optimal_point(const Mat_4& quadric, @@ -116,10 +117,12 @@ public: const Col_4& /*p1*/) const { // @fixme check this - return internal::construct_optimal_point_invertible(quadric); + return construct_optimal_point_invertible(quadric); } }; +} // namespace internal + // Implements probabilistic plane quadrics, // optionally takes a face variance map giving a per-face variance template class GarlandHeckbert_probabilistic_plane_policies : public internal::GarlandHeckbert_placement_base< - Probabilistic_plane_quadric_calculator, + internal::Probabilistic_plane_quadric_calculator, TriangleMesh, GeomTraits>, public internal::GarlandHeckbert_cost_base< - Probabilistic_plane_quadric_calculator, + internal::Probabilistic_plane_quadric_calculator, TriangleMesh, GeomTraits> { public: - typedef Probabilistic_plane_quadric_calculator< + typedef internal::Probabilistic_plane_quadric_calculator< TriangleMesh, GeomTraits, FaceVarianceMap> Quadric_calculator; private: diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h index 14bf4f800c1..83d64d1ddcc 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_probabilistic_triangle_policies.h @@ -24,6 +24,7 @@ namespace CGAL { namespace Surface_mesh_simplification { +namespace internal { template class Probabilistic_triangle_quadric_calculator @@ -37,8 +38,8 @@ class Probabilistic_triangle_quadric_calculator typedef Constant_property_map Default_FVM; typedef typename Default::Get::type Face_variance_map; - typedef typename internal::GarlandHeckbert_matrix_types::Mat_4 Mat_4; - typedef typename internal::GarlandHeckbert_matrix_types::Col_4 Col_4; + typedef typename GarlandHeckbert_matrix_types::Mat_4 Mat_4; + typedef typename GarlandHeckbert_matrix_types::Col_4 Col_4; private: // same meaning as for probabilistic plane quadrics @@ -65,7 +66,7 @@ public: // parameters are constants defined for this class FT variance, discard_position; std::tie(variance, discard_position) = - internal::estimate_variances(tmesh, GeomTraits(), default_variance_unit, position_variance_factor); + estimate_variances(tmesh, GeomTraits(), default_variance_unit, position_variance_factor); // see probabilistic plane quadrics m_face_variance_map = Default_FVM { variance }; @@ -81,14 +82,14 @@ public: const GeomTraits& gt) const { // same as in probabilistic plane policy - const Vector_3 normal = internal::construct_edge_normal(he, tmesh, point_map, gt); + const Vector_3 normal = construct_edge_normal(he, tmesh, point_map, gt); const Point_3 p = get(point_map, source(he, tmesh)); const FT variance = get(m_face_variance_map, face(he, tmesh)); // @fixme plane? - return internal::construct_prob_plane_quadric_from_normal(normal, p, gt, variance, - position_variance_factor * variance); + return construct_prob_plane_quadric_from_normal(normal, p, gt, variance, + position_variance_factor * variance); } template @@ -99,16 +100,18 @@ public: { const FT variance = get(m_face_variance_map, f); - return internal::construct_prob_triangle_quadric_from_face(f, variance, tmesh, point_map, gt); + return construct_prob_triangle_quadric_from_face(f, variance, tmesh, point_map, gt); } Col_4 construct_optimal_point(const Mat_4& quadric, const Col_4& /*p0*/, const Col_4& /*p1*/) const { // @fixme check this - return internal::construct_optimal_point_invertible(quadric); + return construct_optimal_point_invertible(quadric); } }; +} // namespace internal + // implements probabilistic triangle faces and optionally takes a face variance map // analogously to probabilistic plane quadrics template class GarlandHeckbert_probabilistic_triangle_policies : public internal::GarlandHeckbert_placement_base< - Probabilistic_triangle_quadric_calculator, + internal::Probabilistic_triangle_quadric_calculator, TriangleMesh, GeomTraits>, public internal::GarlandHeckbert_cost_base< - Probabilistic_triangle_quadric_calculator, + internal::Probabilistic_triangle_quadric_calculator, TriangleMesh, GeomTraits> { public: - typedef Probabilistic_triangle_quadric_calculator< + typedef internal::Probabilistic_triangle_quadric_calculator< TriangleMesh, GeomTraits, FaceVarianceMap> Quadric_calculator; private: diff --git a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_triangle_policies.h b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_triangle_policies.h index 26fe9fdf477..c12503378af 100644 --- a/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_triangle_policies.h +++ b/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/Policies/Edge_collapse/GarlandHeckbert_triangle_policies.h @@ -21,12 +21,13 @@ namespace CGAL { namespace Surface_mesh_simplification { +namespace internal { template class Triangle_quadric_calculator { - typedef typename internal::GarlandHeckbert_matrix_types::Mat_4 Mat_4; - typedef typename internal::GarlandHeckbert_matrix_types::Col_4 Col_4; + typedef typename GarlandHeckbert_matrix_types::Mat_4 Mat_4; + typedef typename GarlandHeckbert_matrix_types::Col_4 Col_4; public: Triangle_quadric_calculator() { } @@ -38,7 +39,7 @@ public: const GeomTraits& gt) const { // @fixme "plane"? why not incident triangles? - return internal::construct_classic_plane_quadric_from_edge(he, tmesh, point_map, gt); + return construct_classic_plane_quadric_from_edge(he, tmesh, point_map, gt); } template @@ -47,17 +48,19 @@ public: const VertexPointMap point_map, const GeomTraits& gt) const { - return internal::construct_classic_triangle_quadric_from_face(f, tmesh, point_map, gt); + return construct_classic_triangle_quadric_from_face(f, tmesh, point_map, gt); } Col_4 construct_optimal_point(const Mat_4& quadric, const Col_4& p0, const Col_4& p1) const { - return internal::construct_optimal_point_singular(quadric, p0, p1); + return construct_optimal_point_singular(quadric, p0, p1); } }; +} // namespace internal + // use triangle quadrics for the faces, classical plane quadrics for the edges // and optimize with a check for singular matrices // @@ -65,12 +68,12 @@ public: template class GarlandHeckbert_triangle_policies : public internal::GarlandHeckbert_placement_base< - Triangle_quadric_calculator, TriangleMesh, GeomTraits>, + internal::Triangle_quadric_calculator, TriangleMesh, GeomTraits>, public internal::GarlandHeckbert_cost_base< - Triangle_quadric_calculator, TriangleMesh, GeomTraits> + internal::Triangle_quadric_calculator, TriangleMesh, GeomTraits> { public: - typedef Triangle_quadric_calculator Quadric_calculator; + typedef internal::Triangle_quadric_calculator Quadric_calculator; private: typedef internal::GarlandHeckbert_placement_base<