diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_metric_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_metric_example.cpp index 0e73e595a7a..26552261f4c 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_metric_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_metric_example.cpp @@ -30,7 +30,7 @@ struct CompactMetric { CompactMetric(const FacetCenterMap &_center_pmap) : center_pmap(_center_pmap) {} - FT operator()(const Facet_const_handle &f, const PointProxy &px) { + FT operator()(const Facet_const_handle &f, const PointProxy &px) const { return FT(std::sqrt(CGAL::to_double( CGAL::squared_distance(center_pmap[f], px.center)))); } @@ -45,7 +45,7 @@ struct PointProxyFitting { area_pmap(_area_pmap) {} template - PointProxy operator()(const FacetIterator beg, const FacetIterator end) { + PointProxy operator()(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); // fitting center diff --git a/Surface_mesh_approximation/include/CGAL/internal/Surface_mesh_approximation/VSA.h b/Surface_mesh_approximation/include/CGAL/internal/Surface_mesh_approximation/VSA.h index 73bcf307415..358a326350e 100644 --- a/Surface_mesh_approximation/include/CGAL/internal/Surface_mesh_approximation/VSA.h +++ b/Surface_mesh_approximation/include/CGAL/internal/Surface_mesh_approximation/VSA.h @@ -65,10 +65,10 @@ private: std::vector proxies; // The error metric. - ErrorMetric fit_error; + const ErrorMetric &fit_error; // The proxy fitting functor. - ProxyFitting proxy_fitting; + const ProxyFitting &proxy_fitting; //member functions public: diff --git a/Surface_mesh_approximation/include/CGAL/vsa_mesh_approximation_traits.h b/Surface_mesh_approximation/include/CGAL/vsa_mesh_approximation_traits.h index 014616619b5..374c2ca1399 100644 --- a/Surface_mesh_approximation/include/CGAL/vsa_mesh_approximation_traits.h +++ b/Surface_mesh_approximation/include/CGAL/vsa_mesh_approximation_traits.h @@ -46,7 +46,7 @@ struct L21Metric typedef typename GeomTraits::Compute_scalar_product_3 Compute_scalar_product_3; typedef typename FacetAreaMap::key_type face_descriptor; - FT operator()(const face_descriptor &f, const PlaneProxy &px) { + FT operator()(const face_descriptor &f, const PlaneProxy &px) const { Vector_3 v = sum_functor(normal_pmap[f], scale_functor(px.normal, FT(-1))); return area_pmap[f] * scalar_product_functor(v, v); } @@ -78,7 +78,7 @@ struct L21ProxyFitting // Fit and construct a proxy template - PlaneProxy operator()(const FacetIterator beg, const FacetIterator end) { + PlaneProxy operator()(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); // fitting normal @@ -222,7 +222,7 @@ struct L2Metric typedef typename boost::graph_traits::face_descriptor face_descriptor; typedef typename boost::graph_traits::halfedge_descriptor halfedge_descriptor; - FT operator()(const face_descriptor &f, const PlaneProxy &px) { + FT operator()(const face_descriptor &f, const PlaneProxy &px) const { halfedge_descriptor he = halfedge(f, mesh); const Point_3 &p0 = point_pmap[source(he, mesh)]; const Point_3 &p1 = point_pmap[target(he, mesh)]; @@ -257,7 +257,7 @@ struct L2ProxyFitting : mesh(_mesh), point_pmap(_point_pmap) {} template - PlaneProxy operator()(const FacetIterator beg, const FacetIterator end) { + PlaneProxy operator()(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); std::list tris;