diff --git a/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_2.h b/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_2.h index a7d779586db..ca5f7c65f02 100644 --- a/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_2.h +++ b/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_2.h @@ -13,6 +13,8 @@ The tag `tag` identifies the dimension to be considered from the objects. For po The class `K` is the kernel in which the value type of the `InputIterator` is defined. It can be omitted and deduced automatically from the value type. +The class `Diagonalize_traits` is a model of `DiagonalizeTraits`. It can be omitted: if Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined then an overload using `Eigen_diagonalize_traits` is provided. Otherwise, the internal implementation `Internal_diagonalize_traits` is used. + \cgalHeading{Requirements}
    @@ -35,7 +37,8 @@ InputIterator beyond, typename K::Line_2 & line, typename K::Point_2 & centroid, const Tag & tag, -const K & k); +const K & k, +const Diagonalize_traits& diagonalize_traits); } /* namespace CGAL */ diff --git a/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_3.h b/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_3.h index f3bb5e1313a..414aeb67cf1 100644 --- a/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_3.h +++ b/Principal_component_analysis/doc/Principal_component_analysis/CGAL/linear_least_squares_fitting_3.h @@ -64,6 +64,14 @@ The class `K` is the kernel in which the value type of `InputIterator` is defined. It can be omitted and deduced automatically from the value type. +The class `Diagonalize_traits` is a model of `DiagonalizeTraits`. It +can be omitted: if Eigen 3 (or greater) is available and +`CGAL_EIGEN3_ENABLED` is defined then an overload using +`Eigen_diagonalize_traits` is provided. Otherwise, the internal +implementation `Internal_diagonalize_traits` is used. + + + \cgalHeading{Requirements}
      @@ -84,7 +92,8 @@ InputIterator beyond, typename K::Line_3& line, typename K::Point_3& centroid, const Tag& tag, -const K& k); +const K& k, +const Diagonalize_traits& diagonalize_traits); /*! \brief computes the best fitting 3D plane of a 3D object set in the @@ -100,6 +109,12 @@ of `InputIterator` is defined. It can be omitted and deduced automatically from the value type. The tag `tag` identifies the dimension to be considered from the objects (see above). +The class `Diagonalize_traits` is a model of `DiagonalizeTraits`. It +can be omitted: if Eigen 3 (or greater) is available and +`CGAL_EIGEN3_ENABLED` is defined then an overload using +`Eigen_diagonalize_traits` is provided. Otherwise, the internal +implementation `Internal_diagonalize_traits` is used. + \cgalHeading{Requirements}
        @@ -119,7 +134,8 @@ InputIterator beyond, typename K::Plane_3& plane, typename K::Point_3& centroid, const Tag& tag, -const K& k); +const K& k, +const Diagonalize_traits& diagonalize_traits); /// @} diff --git a/Principal_component_analysis/doc/Principal_component_analysis/dependencies b/Principal_component_analysis/doc/Principal_component_analysis/dependencies index a4d5f76715e..5b5101754b5 100644 --- a/Principal_component_analysis/doc/Principal_component_analysis/dependencies +++ b/Principal_component_analysis/doc/Principal_component_analysis/dependencies @@ -4,3 +4,4 @@ STL_Extension Algebraic_foundations Circulator Stream_support +Solver_interface diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h index 5d2bd42c6c8..a385da3e392 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_2.h @@ -46,7 +46,7 @@ linear_least_squares_fitting_2(InputIterator first, typename Kernel::Point_2& centroid, const Tag& tag, const Kernel& kernel, - const Diagonalize_traits diagonalize_traits) + const Diagonalize_traits& diagonalize_traits) { typedef typename std::iterator_traits::value_type Value_type; return internal::linear_least_squares_fitting_2(first, beyond, line, diff --git a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_3.h b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_3.h index 448bc024725..d0e6189965b 100644 --- a/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_3.h +++ b/Principal_component_analysis/include/CGAL/linear_least_squares_fitting_3.h @@ -52,7 +52,7 @@ linear_least_squares_fitting_3(InputIterator first, typename Kernel::Point_3& centroid, const Tag& tag, // dimension tag, ranges from 0 to 3 const Kernel& kernel, - const Diagonalize_traits diagonalize_traits) + const Diagonalize_traits& diagonalize_traits) { typedef typename std::iterator_traits::value_type Value_type; return internal::linear_least_squares_fitting_3(first, beyond, object,