diff --git a/Surface_mesh_approximation/include/CGAL/L21_metric.h b/Surface_mesh_approximation/include/CGAL/L21_metric.h index d077f1abafb..f2535a93aaf 100644 --- a/Surface_mesh_approximation/include/CGAL/L21_metric.h +++ b/Surface_mesh_approximation/include/CGAL/L21_metric.h @@ -11,18 +11,16 @@ namespace CGAL { -/*! - * \ingroup PkgTSMA - * @brief Approximation L21 metric. - * - * \cgalModels`ErrorMetric` - * - * @tparam TriangleMesh a triangle `FaceListGraph` - * @tparam VertexPointMap a property map with `boost::graph_traits::%vertex_descriptor` - as key type, GeomTraits::Point_3 as value type - * @tparam with_area_weighing set `true` to activate area weighing - * @tparam GeomTraits geometric traits - */ +/// \ingroup PkgTSMA +/// @brief Approximation L21 metric. +/// +/// \cgalModels `ErrorMetric` +/// +/// @tparam TriangleMesh a triangle `FaceListGraph` +/// @tparam VertexPointMap a property map with `boost::graph_traits::%vertex_descriptor` +/// as key type, GeomTraits::Point_3 as value type +/// @tparam with_area_weighing set `true` to activate area weighing +/// @tparam GeomTraits geometric traits template ::type, @@ -46,10 +44,18 @@ class L21_metric { typedef typename CGAL::internal::dynamic_property_map::type Face_area_map; public: - // type required by the `ErrorMetric` concept + /// \name Types + /// @{ typedef typename GeomTraits::Vector_3 Proxy; + /// @} - // constructor + /// \name Constructor + /// @{ + /*! + * @brief Constructor + * @param tm a triangle mesh + * @param vpmap vertex point map + */ L21_metric(const TriangleMesh &tm, const VertexPointMap &vpmap) { GeomTraits traits; m_scalar_product_functor = traits.compute_scalar_product_3_object(); @@ -70,16 +76,26 @@ public: put(m_famap, f, std::sqrt(CGAL::to_double(CGAL::squared_area(p0, p1, p2)))); } } + /// @} - // member function required by the `ErrorMetric` concept - // It is a function that takes a facet and a proxy, returns the L21 error between them. + /// \name Operations + /*! + * @brief Computes the L21 error between a facet and a proxy. + * @param f face_descriptor of a face + * @param px proxy + * @return computed error + */ FT compute_error(const face_descriptor &f, const Proxy &px) const { Vector_3 v = m_sum_functor(get(m_fnmap, f), m_scale_functor(px, FT(-1.0))); return get(m_famap, f) * m_scalar_product_functor(v, v); } - // member function required by the `ErrorMetric` concept - // It returns the proxy fitted from the facets from beg to end. + /*! + * @brief Fits a proxy from a face range. + * @param beg face range begin + * @param end face range end + * @return fitted proxy + */ template Proxy fit_proxy(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); @@ -95,6 +111,7 @@ public: return norm; } + /// @} private: Face_normal_map m_fnmap; @@ -128,10 +145,10 @@ class L21_metric::type Face_area_map; public: - // type required by the `ErrorMetric` concept + // Public types typedef typename GeomTraits::Vector_3 Proxy; - // constructor + // Constructor. L21_metric(const TriangleMesh &tm, const VertexPointMap &vpmap) { GeomTraits traits; m_scalar_product_functor = traits.compute_scalar_product_3_object(); @@ -151,15 +168,13 @@ public: } } - // member function required by the `ErrorMetric` concept - // It is a function that takes a facet and a proxy, returns the L21 error between them. + // Computes the L21 error between a facet and a proxy. FT compute_error(const face_descriptor &f, const Proxy &px) const { Vector_3 v = m_sum_functor(get(m_fnmap, f), m_scale_functor(px, FT(-1.0))); return m_scalar_product_functor(v, v); } - // member function required by the `ErrorMetric` concept - // It returns the proxy fitted from the facets from beg to end. + // Fits a proxy from a face range. template Proxy fit_proxy(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); diff --git a/Surface_mesh_approximation/include/CGAL/L2_metric.h b/Surface_mesh_approximation/include/CGAL/L2_metric.h index 391eaaabb31..2799dbc2e87 100644 --- a/Surface_mesh_approximation/include/CGAL/L2_metric.h +++ b/Surface_mesh_approximation/include/CGAL/L2_metric.h @@ -14,17 +14,15 @@ namespace CGAL { -/*! - * \ingroup PkgTSMA - * @brief Approximation L2 metric. - * - * \cgalModels`ErrorMetric` - * - * @tparam TriangleMesh a triangle `FaceListGraph` - * @tparam VertexPointMap a property map with `boost::graph_traits::%vertex_descriptor` - as key type, GeomTraits::Point_3 as value type - * @tparam GeomTraits geometric traits - */ +/// \ingroup PkgTSMA +/// @brief Approximation L2 metric. +/// +/// \cgalModels `ErrorMetric` +/// +/// @tparam TriangleMesh a triangle `FaceListGraph` +/// @tparam VertexPointMap a property map with `boost::graph_traits::%vertex_descriptor` +/// as key type, GeomTraits::Point_3 as value type +/// @tparam GeomTraits geometric traits template ::type, @@ -42,10 +40,18 @@ class L2_metric { typedef typename CGAL::internal::dynamic_property_map::type Face_area_map; public: - // type required by the `ErrorMetric` concept + /// \name Types + /// @{ typedef typename GeomTraits::Plane_3 Proxy; + /// @} - // constructor + /// \name Constructor + /// @{ + /*! + * @brief Constructor + * @param tm a triangle mesh + * @param vpmap vertex point map + */ L2_metric(const TriangleMesh &tm, const VertexPointMap &vpmap) : m_tm(&tm), m_vpmap(vpmap){ m_famap = CGAL::internal::add_property( @@ -59,9 +65,15 @@ public: put(m_famap, f, std::sqrt(CGAL::to_double(CGAL::squared_area(p0, p1, p2)))); } } + /// @} - // member function required by the `ErrorMetric` concept - // It is a function that takes a facet and a proxy, returns the L21 error between them. + /// \name Operations + /*! + * @brief Computes the L21 error between a facet and a proxy. + * @param f face_descriptor of a face + * @param px proxy + * @return computed error + */ FT compute_error(const face_descriptor &f, const Proxy &px) const { halfedge_descriptor he = halfedge(f, *m_tm); const Point_3 &p0 = m_vpmap[source(he, *m_tm)]; @@ -77,8 +89,12 @@ public: return (sq_d0 + sq_d1 + sq_d2 + d0 * d1 + d1 * d2 + d2 * d0) * get(m_famap, f) / FT(6.0); } - // member function required by the `ErrorMetric` concept - // It returns the proxy fitted from the facets from beg to end. + /*! + * @brief Fits a proxy from a face range. + * @param beg face range begin + * @param end face range end + * @return fitted proxy + */ template Proxy fit_proxy(const FacetIterator beg, const FacetIterator end) const { CGAL_assertion(beg != end); @@ -104,6 +120,7 @@ public: return px; } + /// @} private: const TriangleMesh *m_tm;