mirror of https://github.com/CGAL/cgal
Renaming 'VCM' to 'diagonalize'
This commit is contained in:
parent
0f65a35553
commit
28e5432c16
|
|
@ -20,9 +20,9 @@
|
|||
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#else
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <CGAL/Approximate_min_ellipsoid_d.h>
|
||||
|
|
@ -162,10 +162,10 @@ namespace CGAL {
|
|||
CGAL::cpp11::array<double, 2> eigenvalues; // Note: sorted ascendent.
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<double, 2>::diagonalize_selfadjoint_covariance_matrix
|
||||
CGAL::Eigen_diagonalize_traits<double, 2>::diagonalize_selfadjoint_covariance_matrix
|
||||
(matrix, eigenvalues, eigenvectors);
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<double, 2>::diagonalize_selfadjoint_covariance_matrix
|
||||
CGAL::Internal_diagonalize_traits<double, 2>::diagonalize_selfadjoint_covariance_matrix
|
||||
(matrix, eigenvalues, eigenvectors);
|
||||
#endif
|
||||
|
||||
|
|
@ -209,10 +209,10 @@ namespace CGAL {
|
|||
CGAL::cpp11::array<double, 9> eigenvectors; // Note: not necessarily normalized.
|
||||
CGAL::cpp11::array<double, 3> eigenvalues; // Note: sorted ascendent.
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<double, 3>::diagonalize_selfadjoint_covariance_matrix
|
||||
CGAL::Eigen_diagonalize_traits<double, 3>::diagonalize_selfadjoint_covariance_matrix
|
||||
(matrix, eigenvalues, eigenvectors);
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<double, 3>::diagonalize_selfadjoint_covariance_matrix
|
||||
CGAL::Internal_diagonalize_traits<double, 3>::diagonalize_selfadjoint_covariance_matrix
|
||||
(matrix, eigenvalues, eigenvectors);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ namespace CGAL {
|
|||
/// which however would result in selecting more points on sharper regions.
|
||||
/// More details are provided in \cgalCite{cgal:mog-vbcfe-11}.
|
||||
///
|
||||
/// \tparam VCM_traits is a model of `VCMTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_vcm_traits` is provided and this template parameter can be omitted.
|
||||
/// \tparam VCM_traits is a model of `DiagonalizeTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_diagonalize_traits` is provided and this template parameter can be omitted.
|
||||
/// \sa CGAL::compute_vcm()`
|
||||
///
|
||||
template <class FT, class VCM_traits>
|
||||
|
|
@ -73,9 +73,9 @@ vcm_is_on_feature_edge (cpp11::array<FT,6> &cov,
|
|||
{
|
||||
return vcm_is_on_feature_edge(cov, threshold,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<double, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<double, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<double, 3>()
|
||||
CGAL::Internal_diagonalize_traits<double, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@
|
|||
#include <CGAL/Fuzzy_sphere.h>
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#else
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <iterator>
|
||||
|
|
@ -370,8 +370,8 @@ vcm_estimate_normals (ForwardIterator first, ///< iterator over the first input
|
|||
/// @tparam ForwardIterator iterator over input points.
|
||||
/// @tparam PointPMap is a model of `ReadablePropertyMap` with a value_type = `Kernel::Point_3`.
|
||||
/// @tparam NormalPMap is a model of `WritablePropertyMap` with a value_type = `Kernel::Vector_3`.
|
||||
/// \tparam VCM_traits is a model of `VCMTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_vcm_traits` is provided and this template parameter can be omitted.
|
||||
/// \tparam VCM_traits is a model of `DiagonalizeTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_diagonalize_traits` is provided and this template parameter can be omitted.
|
||||
|
||||
// This variant deduces the kernel from the point property map
|
||||
// and uses a radius for the convolution.
|
||||
|
|
@ -411,8 +411,8 @@ vcm_estimate_normals (ForwardIterator first, ///< iterator over the first input
|
|||
/// @tparam ForwardIterator iterator over input points.
|
||||
/// @tparam PointPMap is a model of `ReadablePropertyMap` with a value_type = `Kernel::Point_3`.
|
||||
/// @tparam NormalPMap is a model of `WritablePropertyMap` with a value_type = `Kernel::Vector_3`.
|
||||
/// \tparam VCM_traits is a model of `VCMTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_vcm_traits` is provided and this template parameter can be omitted.
|
||||
/// \tparam VCM_traits is a model of `DiagonalizeTraits`. If Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined
|
||||
/// then an overload using `Eigen_diagonalize_traits` is provided and this template parameter can be omitted.
|
||||
|
||||
// This variant deduces the kernel from the point property map
|
||||
// and uses a number of neighbors for the convolution.
|
||||
|
|
@ -456,9 +456,9 @@ vcm_estimate_normals (ForwardIterator first,
|
|||
{
|
||||
vcm_estimate_normals(first, beyond, point_pmap, normal_pmap, offset_radius, convolution_radius,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<double, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<double, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<double, 3>()
|
||||
CGAL::Internal_diagonalize_traits<double, 3>()
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
|
@ -477,9 +477,9 @@ vcm_estimate_normals (ForwardIterator first,
|
|||
{
|
||||
vcm_estimate_normals(first, beyond, point_pmap, normal_pmap, offset_radius, nb_neighbors_convolve,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<double, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<double, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<double, 3>()
|
||||
CGAL::Internal_diagonalize_traits<double, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@
|
|||
#include <CGAL/linear_least_squares_fitting_circles_2.h>
|
||||
#include <CGAL/linear_least_squares_fitting_rectangles_2.h>
|
||||
#include <CGAL/Dimension.h>
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <iterator>
|
||||
|
|
@ -42,7 +42,7 @@ namespace CGAL {
|
|||
template < typename InputIterator,
|
||||
typename Kernel,
|
||||
typename Tag,
|
||||
typename Vcm_traits>
|
||||
typename Diagonalize_traits>
|
||||
inline
|
||||
typename Kernel::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
|
|
@ -51,16 +51,16 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
typename Kernel::Point_2& centroid,
|
||||
const Tag& tag,
|
||||
const Kernel& kernel,
|
||||
const Vcm_traits vcm_traits)
|
||||
const Diagonalize_traits diagonalize_traits)
|
||||
{
|
||||
typedef typename std::iterator_traits<InputIterator>::value_type Value_type;
|
||||
return internal::linear_least_squares_fitting_2(first, beyond, line,
|
||||
centroid,(Value_type*)NULL,kernel,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
}
|
||||
|
||||
// deduces the kernel from the points in container.
|
||||
// Use default Vcm_traits
|
||||
// Use default Diagonalize_traits
|
||||
template < typename InputIterator,
|
||||
typename Line,
|
||||
typename Point,
|
||||
|
|
@ -78,9 +78,9 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
return CGAL::linear_least_squares_fitting_2
|
||||
(first,beyond,line,centroid,tag,Kernel(),
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
Eigen_vcm_traits<typename Kernel::FT, 2>()
|
||||
Eigen_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#else
|
||||
Internal_vcm_traits<typename Kernel::FT, 2>()
|
||||
Internal_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
|
@ -100,9 +100,9 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
typename Kernel::Point_2 centroid; // unused
|
||||
return CGAL::linear_least_squares_fitting_2(first,beyond,line,centroid,tag,Kernel(),
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
Eigen_vcm_traits<typename Kernel::FT, 2>()
|
||||
Eigen_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#else
|
||||
Internal_vcm_traits<typename Kernel::FT, 2>()
|
||||
Internal_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,9 +29,9 @@
|
|||
#include <CGAL/linear_least_squares_fitting_tetrahedra_3.h>
|
||||
#include <CGAL/linear_least_squares_fitting_spheres_3.h>
|
||||
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <CGAL/Dimension.h>
|
||||
|
|
@ -46,7 +46,7 @@ template < typename InputIterator,
|
|||
typename Object,
|
||||
typename Kernel,
|
||||
typename Tag,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
inline
|
||||
typename Kernel::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
|
|
@ -55,16 +55,16 @@ 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 Vcm_traits vcm_traits)
|
||||
const Diagonalize_traits diagonalize_traits)
|
||||
{
|
||||
typedef typename std::iterator_traits<InputIterator>::value_type Value_type;
|
||||
return internal::linear_least_squares_fitting_3(first, beyond, object,
|
||||
centroid, (Value_type*) NULL, kernel, tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
}
|
||||
|
||||
// deduces kernel from value type of input iterator
|
||||
// use default Vcm_traits
|
||||
// use default Diagonalize_traits
|
||||
template < typename InputIterator,
|
||||
typename Object,
|
||||
typename Point,
|
||||
|
|
@ -81,16 +81,16 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
typedef typename Kernel_traits<Value_type>::Kernel Kernel;
|
||||
return CGAL::linear_least_squares_fitting_3(first,beyond,object,centroid,tag,Kernel(),
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// deduces kernel and does not write centroid
|
||||
// use default Vcm_traits
|
||||
// use default Diagonalize_traits
|
||||
template < typename InputIterator,
|
||||
typename Object,
|
||||
typename Tag>
|
||||
|
|
@ -106,9 +106,9 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
typename Kernel::Point_3 centroid; // not used by caller
|
||||
return CGAL::linear_least_squares_fitting_3(first,beyond,object,centroid,tag,Kernel(),
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace internal {
|
|||
// fits a plane to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -45,7 +45,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -61,7 +61,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
|
@ -69,7 +69,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
// fits a plane to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -78,7 +78,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -94,7 +94,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
|
@ -102,7 +102,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
// fits a plane to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -111,7 +111,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Segment_3 Segment;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -141,14 +141,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),plane,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
||||
// fits a plane to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -157,7 +157,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Point_3 Point;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -183,14 +183,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),plane,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
||||
// fits a line to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -199,7 +199,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -215,14 +215,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
||||
// fits a line to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -231,7 +231,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -247,7 +247,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
|
@ -255,7 +255,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
// fits a line to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -264,7 +264,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Segment_3 Segment;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -294,14 +294,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),line,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
||||
// fits a line to a 3D cuboid set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -310,7 +310,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Iso_cuboid_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Point_3 Point;
|
||||
typedef typename K::Iso_cuboid_3 Iso_cuboid;
|
||||
|
|
@ -336,7 +336,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),line,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_cuboids_3
|
||||
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@
|
|||
#include <CGAL/basic.h>
|
||||
#include <CGAL/centroid.h>
|
||||
#include <CGAL/eigen_2.h>
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <iterator>
|
||||
|
|
@ -43,7 +43,7 @@ namespace internal {
|
|||
// direction by default).
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits>
|
||||
typename Diagonalize_traits>
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -52,7 +52,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Point_2*,// used for indirection
|
||||
const K&, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits&)
|
||||
const Diagonalize_traits&)
|
||||
{
|
||||
// types
|
||||
typedef typename K::FT FT;
|
||||
|
|
@ -91,7 +91,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
// eigen vectors are sorted in accordance.
|
||||
CGAL::cpp11::array<FT, 2> eigen_values = {{ 0. , 0. }};
|
||||
CGAL::cpp11::array<FT, 4> eigen_vectors = {{ 0., 0., 0. }};
|
||||
Vcm_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
Diagonalize_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
(covariance, eigen_values, eigen_vectors);
|
||||
|
||||
// check unicity and build fitting line accordingly
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace internal {
|
|||
// 0 is worst (isotropic case, returns a plane with default direction)
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -44,7 +44,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Point_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -60,7 +60,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
} // end fit plane to point set
|
||||
|
||||
// fits a line to a 3D point set
|
||||
|
|
@ -69,7 +69,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
// 0 is worst (isotropic case, returns a line along x axis)
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -78,7 +78,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Point_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -94,7 +94,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
} // end fit line to point set
|
||||
|
||||
} // end namespace internal
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace internal {
|
|||
// 0 is worst (isotropic case, returns a line with horizontal
|
||||
// direction by default)
|
||||
|
||||
template < typename InputIterator, typename K, typename Vcm_traits >
|
||||
template < typename InputIterator, typename K, typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -47,7 +47,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Iso_rectangle_2*,// used for indirection
|
||||
const K&, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits&)
|
||||
const Diagonalize_traits&)
|
||||
{
|
||||
// types
|
||||
typedef typename K::FT FT;
|
||||
|
|
@ -128,7 +128,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
std::pair<Vector,Vector> eigen_vectors;
|
||||
CGAL::cpp11::array<FT, 2> eigen_values1 = {{ 0. , 0. }};
|
||||
CGAL::cpp11::array<FT, 4> eigen_vectors1 = {{ 0., 0., 0. }};
|
||||
Vcm_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
Diagonalize_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
(covariance, eigen_values1, eigen_vectors1);
|
||||
|
||||
eigen_values = std::make_pair(eigen_values1[1],eigen_values1[0]);
|
||||
|
|
@ -151,7 +151,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
} // end linear_least_squares_fitting_2 for rectangle set with 2D tag
|
||||
|
||||
template < typename InputIterator, typename K, typename Vcm_traits >
|
||||
template < typename InputIterator, typename K, typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -160,7 +160,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Iso_rectangle_2*,// used for indirection
|
||||
const K&, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
// types
|
||||
typedef typename K::Iso_rectangle_2 Iso_rectangle;
|
||||
|
|
@ -182,14 +182,14 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
|
||||
return linear_least_squares_fitting_2(segments.begin(),segments.end(),line,c,K(),tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_2 for rectangle set with 1D tag
|
||||
|
||||
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -198,7 +198,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Iso_rectangle_2*,// used for indirection
|
||||
const K&, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
// types
|
||||
typedef typename K::Iso_rectangle_2 Iso_rectangle;
|
||||
|
|
@ -220,7 +220,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
|
||||
return linear_least_squares_fitting_2(points.begin(),points.end(),line,c,K(),tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_2 for rectangle set with 0D tag
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace internal {
|
|||
// 0 is worst (isotropic case, returns a line with horizontal
|
||||
// direction by default)
|
||||
|
||||
template < typename InputIterator, typename K, typename Vcm_traits >
|
||||
template < typename InputIterator, typename K, typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -47,7 +47,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Segment_2*,// used for indirection
|
||||
const K&, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits&)
|
||||
const Diagonalize_traits&)
|
||||
{
|
||||
// types
|
||||
typedef typename K::FT FT;
|
||||
|
|
@ -116,7 +116,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
std::pair<Vector,Vector> eigen_vectors;
|
||||
CGAL::cpp11::array<FT, 2> eigen_values1 = {{ 0. , 0. }};
|
||||
CGAL::cpp11::array<FT, 4> eigen_vectors1 = {{ 0., 0., 0. }};
|
||||
Vcm_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
Diagonalize_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
(covariance, eigen_values1, eigen_vectors1);
|
||||
|
||||
eigen_values = std::make_pair(eigen_values1[1],eigen_values1[0]);
|
||||
|
|
@ -138,7 +138,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
} // end linear_least_squares_fitting_2 for segment set with 1D tag
|
||||
|
||||
template < typename InputIterator, typename K, typename Vcm_traits >
|
||||
template < typename InputIterator, typename K, typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -147,7 +147,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename K::Segment_2*,// used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
// types
|
||||
typedef typename K::Point_2 Point;
|
||||
|
|
@ -166,7 +166,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
points.push_back(s[1]);
|
||||
}
|
||||
return linear_least_squares_fitting_2(points.begin(),points.end(),line,c,k,(Point*)NULL,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_2 for segment set with 1D tag
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace internal {
|
|||
// fits a plane to a 3D segment set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -44,7 +44,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Segment_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -60,14 +60,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_segments_3
|
||||
|
||||
// fits a plane to a 3D segment set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -76,7 +76,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Segment_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Segment_3 Segment;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -96,14 +96,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),plane,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_segments_3
|
||||
|
||||
// fits a line to a 3D segment set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -112,7 +112,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Segment_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -128,14 +128,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_segments_3
|
||||
|
||||
// fits a plane to a 3D segment set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -144,7 +144,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Segment_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Segment_3 Segment;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -164,7 +164,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),line,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_segments_3
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace internal {
|
|||
// fits a plane to a set of 3D balls (3D)
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -42,7 +42,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Sphere_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Sphere_3 Sphere;
|
||||
|
|
@ -58,14 +58,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_spheres_3
|
||||
|
||||
// fits a plane to a 3D sphere set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -74,7 +74,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Sphere_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Sphere_3 Sphere;
|
||||
|
|
@ -90,7 +90,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_spheres_3
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
// fits a line to a 3D ball set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -107,7 +107,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Sphere_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Sphere_3 Sphere;
|
||||
|
|
@ -124,14 +124,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_spheres_3
|
||||
|
||||
// fits a line to a 3D sphere set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -140,7 +140,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Sphere_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Sphere_3 Sphere;
|
||||
|
|
@ -156,7 +156,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_spheres_3
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace internal {
|
|||
// fits a plane to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -46,7 +46,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
|
|
@ -62,13 +62,13 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a plane to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -77,7 +77,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
|
|
@ -99,14 +99,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(triangles.begin(),triangles.end(),plane,c,(Triangle*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a plane to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -115,7 +115,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -140,14 +140,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),plane,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a plane to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -156,7 +156,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -178,14 +178,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),plane,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a line to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -194,7 +194,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<3>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
|
|
@ -210,14 +210,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a line to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -226,7 +226,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
|
|
@ -248,14 +248,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(triangles.begin(),triangles.end(),line,c,(Triangle*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a line to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -264,7 +264,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -288,14 +288,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),line,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedrons_3
|
||||
|
||||
// fits a line to a 3D tetrahedron set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -304,7 +304,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Tetrahedron_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Tetrahedron_3 Tetrahedron;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -326,7 +326,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),line,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_tetrahedra_3
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ namespace internal {
|
|||
// direction by default)
|
||||
|
||||
template < typename InputIterator,
|
||||
typename Kernel, typename Vcm_traits >
|
||||
typename Kernel, typename Diagonalize_traits >
|
||||
typename Kernel::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -48,7 +48,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename Kernel::Triangle_2*,// used for indirection
|
||||
const Kernel&, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits&)
|
||||
const Diagonalize_traits&)
|
||||
{
|
||||
// types
|
||||
typedef typename Kernel::FT FT;
|
||||
|
|
@ -128,7 +128,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
std::pair<Vector,Vector> eigen_vectors;
|
||||
CGAL::cpp11::array<FT, 2> eigen_values1 = {{ 0. , 0. }};
|
||||
CGAL::cpp11::array<FT, 4> eigen_vectors1 = {{ 0., 0., 0. }};
|
||||
Vcm_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
Diagonalize_traits::diagonalize_selfadjoint_covariance_matrix
|
||||
(covariance, eigen_values1, eigen_vectors1);
|
||||
|
||||
eigen_values = std::make_pair(eigen_values1[1],eigen_values1[0]);
|
||||
|
|
@ -152,7 +152,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
|
||||
template < typename InputIterator,
|
||||
typename Kernel,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename Kernel::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -161,7 +161,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename Kernel::Triangle_2*,// used for indirection
|
||||
const Kernel&, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
// types
|
||||
typedef typename Kernel::Triangle_2 Triangle;
|
||||
|
|
@ -182,13 +182,13 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
|
||||
return linear_least_squares_fitting_2(segments.begin(),segments.end(),line,c,tag,Kernel(),
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_2 for triangle set with 1D tag
|
||||
|
||||
template < typename InputIterator,
|
||||
typename Kernel,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename Kernel::FT
|
||||
linear_least_squares_fitting_2(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -197,7 +197,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
const typename Kernel::Triangle_2*,// used for indirection
|
||||
const Kernel&, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
// types
|
||||
|
||||
|
|
@ -219,7 +219,7 @@ linear_least_squares_fitting_2(InputIterator first,
|
|||
}
|
||||
|
||||
return linear_least_squares_fitting_2(points.begin(),points.end(),line,c,tag,Kernel(),
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_2 for triangle set with 0D tag
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ namespace internal {
|
|||
// fits a plane to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -43,7 +43,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
|
|
@ -59,14 +59,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag);
|
||||
|
||||
// compute fitting plane
|
||||
return fitting_plane_3(covariance,c,plane,k,vcm_traits);
|
||||
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
// fits a plane to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -75,7 +75,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -96,14 +96,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),plane,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
// fits a plane to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -112,7 +112,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -132,14 +132,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting plane
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),plane,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
// fits a line to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -148,7 +148,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<2>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::FT FT;
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
|
|
@ -164,14 +164,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag);
|
||||
|
||||
// compute fitting line
|
||||
return fitting_line_3(covariance,c,line,k,vcm_traits);
|
||||
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
// fits a line to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -180,7 +180,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<1>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
typedef typename K::Segment_3 Segment;
|
||||
|
|
@ -201,14 +201,14 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(segments.begin(),segments.end(),line,c,(Segment*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
// fits a line to a 3D triangle set
|
||||
template < typename InputIterator,
|
||||
typename K,
|
||||
typename Vcm_traits >
|
||||
typename Diagonalize_traits >
|
||||
typename K::FT
|
||||
linear_least_squares_fitting_3(InputIterator first,
|
||||
InputIterator beyond,
|
||||
|
|
@ -217,7 +217,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
const typename K::Triangle_3*, // used for indirection
|
||||
const K& k, // kernel
|
||||
const CGAL::Dimension_tag<0>& tag,
|
||||
const Vcm_traits& vcm_traits)
|
||||
const Diagonalize_traits& diagonalize_traits)
|
||||
{
|
||||
typedef typename K::Triangle_3 Triangle;
|
||||
typedef typename K::Point_3 Point;
|
||||
|
|
@ -237,7 +237,7 @@ linear_least_squares_fitting_3(InputIterator first,
|
|||
|
||||
// compute fitting line
|
||||
return linear_least_squares_fitting_3(points.begin(),points.end(),line,c,(Point*)NULL,k,tag,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
} // end linear_least_squares_fitting_triangles_3
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
#include <CGAL/algorithm.h>
|
||||
#include <CGAL/linear_least_squares_fitting_2.h>
|
||||
#include <CGAL/point_generators_2.h>
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
|
|
@ -38,9 +38,9 @@ void test_2D()
|
|||
quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>());
|
||||
quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>(),k,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 2>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 2>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
@ -85,9 +85,9 @@ void test_2D_point_set(const unsigned int nb_points)
|
|||
quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>());
|
||||
quality = linear_least_squares_fitting_2(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>(),k,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 2>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 2>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 2>()
|
||||
#endif
|
||||
);
|
||||
std::cout << "done (quality: " << quality << ")" << std::endl;
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
|
||||
#include <CGAL/Cartesian.h>
|
||||
#include <CGAL/linear_least_squares_fitting_3.h>
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <cassert>
|
||||
|
|
@ -50,9 +50,9 @@ void fit_point_set(std::list<Point>& points,
|
|||
quality = linear_least_squares_fitting_3(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>());
|
||||
quality = linear_least_squares_fitting_3(points.begin(),points.end(),line,centroid,CGAL::Dimension_tag<0>(),kernel,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
@ -63,9 +63,9 @@ void fit_point_set(std::list<Point>& points,
|
|||
quality = linear_least_squares_fitting_3(points.begin(),points.end(),plane,centroid,CGAL::Dimension_tag<0>());
|
||||
quality = linear_least_squares_fitting_3(points.begin(),points.end(),plane,centroid,CGAL::Dimension_tag<0>(),kernel,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
std::cout << "done (quality: " << quality << ")" << std::endl;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
#include <CGAL/algorithm.h>
|
||||
#include <CGAL/linear_least_squares_fitting_3.h>
|
||||
#include <CGAL/point_generators_3.h>
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
|
|
@ -40,9 +40,9 @@ FT fit_set(std::list<Segment>& segments,
|
|||
quality = linear_least_squares_fitting_3(segments.begin(),segments.end(),line,centroid,CGAL::Dimension_tag<1>());
|
||||
quality = linear_least_squares_fitting_3(segments.begin(),segments.end(),line,centroid,CGAL::Dimension_tag<1>(),kernel,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
@ -51,9 +51,9 @@ FT fit_set(std::list<Segment>& segments,
|
|||
quality = linear_least_squares_fitting_3(segments.begin(),segments.end(),plane,centroid,CGAL::Dimension_tag<1>());
|
||||
quality = linear_least_squares_fitting_3(segments.begin(),segments.end(),plane,centroid,CGAL::Dimension_tag<1>(),kernel,
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 3>()
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 3>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -35,9 +35,9 @@ int main(void)
|
|||
Point centroid;
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
CGAL::Eigen_vcm_traits<typename Kernel::FT, 3> vcm_traits;
|
||||
CGAL::Eigen_diagonalize_traits<typename Kernel::FT, 3> diagonalize_traits;
|
||||
#else
|
||||
CGAL::Internal_vcm_traits<typename Kernel::FT, 3> vcm_traits;
|
||||
CGAL::Internal_diagonalize_traits<typename Kernel::FT, 3> diagonalize_traits;
|
||||
#endif
|
||||
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),line,CGAL::Dimension_tag<3>());
|
||||
|
|
@ -45,17 +45,17 @@ int main(void)
|
|||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),line,centroid,CGAL::Dimension_tag<3>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),line,centroid,CGAL::Dimension_tag<2>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),line,centroid,CGAL::Dimension_tag<3>(),kernel,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),line,centroid,CGAL::Dimension_tag<2>(),kernel,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,CGAL::Dimension_tag<3>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,CGAL::Dimension_tag<2>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,centroid,CGAL::Dimension_tag<3>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,centroid,CGAL::Dimension_tag<2>());
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,centroid,CGAL::Dimension_tag<3>(),kernel,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
linear_least_squares_fitting_3(spheres.begin(),spheres.end(),plane,centroid,CGAL::Dimension_tag<2>(),kernel,
|
||||
vcm_traits);
|
||||
diagonalize_traits);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,14 @@ namespace CGAL {
|
|||
/*!
|
||||
\ingroup PkgSolver
|
||||
|
||||
The class `Eigen_vcm_traits` provides an interface to the diagonalization of Variance-Covariance Matrices of \ref thirdpartyEigen "Eigen".
|
||||
The version 3.1 (or greater) of \ref thirdpartyEigen "Eigen" must be available on the system.
|
||||
The class `Eigen_diagonalize_traits` provides an interface to the
|
||||
diagonalization of covariance matrices of \ref thirdpartyEigen
|
||||
"Eigen".
|
||||
|
||||
\cgalModels `VCMTraits`
|
||||
The version 3.1 (or greater) of \ref thirdpartyEigen "Eigen" must be
|
||||
available on the system.
|
||||
|
||||
\cgalModels `DiagonalizeTraits`
|
||||
|
||||
|
||||
`FT`: floating type
|
||||
|
|
@ -24,7 +28,7 @@ Example
|
|||
|
||||
|
||||
template <typename FT, unsigned int dim = 3>
|
||||
class Eigen_vcm_traits{
|
||||
class Eigen_diagonalize_traits{
|
||||
|
||||
public:
|
||||
static bool
|
||||
|
|
@ -3,9 +3,11 @@ namespace CGAL {
|
|||
/*!
|
||||
\ingroup PkgSolver
|
||||
|
||||
The class `Internal_vcm_traits` provides an internal implementation for the diagonalization of Variance-Covariance Matrices.
|
||||
The class `Internal_diagonalize_traits` provides an internal
|
||||
implementation for the diagonalization of Variance-Covariance
|
||||
Matrices.
|
||||
|
||||
\cgalModels `VCMTraits`
|
||||
\cgalModels `DiagonalizeTraits`
|
||||
|
||||
|
||||
`FT`: floating type
|
||||
|
|
@ -20,7 +22,7 @@ Example
|
|||
|
||||
|
||||
template <typename FT, unsigned int dim = 3>
|
||||
class Internal_vcm_traits{
|
||||
class Internal_diagonalize_traits{
|
||||
|
||||
public:
|
||||
static bool
|
||||
|
|
@ -3,8 +3,9 @@
|
|||
\cgalConcept
|
||||
|
||||
Concept providing functions to extract eigenvectors and eigenvalue
|
||||
from covariance matrices represented by an array `a`. For example, a
|
||||
matrix of dimension 3 is defined as follows:
|
||||
from covariance matrices represented by an array `a`, using symmetric
|
||||
diagonalization. For example, a matrix of dimension 3 is defined as
|
||||
follows:
|
||||
<center>
|
||||
\f$ \begin{bmatrix}
|
||||
a[0] & a[1] & a[2] \\
|
||||
|
|
@ -12,11 +13,11 @@ matrix of dimension 3 is defined as follows:
|
|||
a[2] & a[4] & a[5] \\
|
||||
\end{bmatrix}\f$
|
||||
</center>
|
||||
\cgalHasModel `CGAL::Eigen_vcm_traits`
|
||||
\cgalHasModel `CGAL::Internal_vcm_traits`
|
||||
\cgalHasModel `CGAL::Eigen_diagonalize_traits`
|
||||
\cgalHasModel `CGAL::Internal_diagonalize_traits`
|
||||
*/
|
||||
template <typename FT, unsigned int dim = 3>
|
||||
class VCMTraits
|
||||
class DiagonalizeTraits
|
||||
{
|
||||
public:
|
||||
/// fill `eigenvalues` with the eigenvalues of the covariance matrix represented by `cov`.
|
||||
|
|
@ -28,17 +28,19 @@
|
|||
- `SparseLinearAlgebraTraits_d`
|
||||
- `SparseLinearAlgebraTraitsWithFactor_d`
|
||||
- `SvdTraits`
|
||||
- `VCMTraits`
|
||||
- `DiagonalizeTraits`
|
||||
|
||||
## Classes ##
|
||||
|
||||
- `CGAL::Eigen_solver_traits`
|
||||
- `CGAL::Eigen_svd`
|
||||
- `CGAL::Eigen_vcm_traits`
|
||||
- `CGAL::Eigen_diagonalize_traits`
|
||||
- `CGAL::Eigen_matrix`
|
||||
- `CGAL::Eigen_vector`
|
||||
- `CGAL::Eigen_sparse_matrix`
|
||||
- `CGAL::Eigen_sparse_symmetric_matrix`
|
||||
- `CGAL::Internal_diagonalize_traits`
|
||||
- `CGAL::Lapack_svd`
|
||||
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -16,20 +16,20 @@ equivalent models for other solvers, for example those found in the
|
|||
<a href="https://software.intel.com/en-us/intel-mkl">Intel Math Kernel Library (MKL)</a>.
|
||||
|
||||
|
||||
\section SectionSolverVCM Matrix Diagonalization
|
||||
\section SectionSolverDiagonalize Matrix Diagonalization
|
||||
|
||||
The concept `VCMTraits<T,dim>` defines an interface for the
|
||||
The concept `DiagonalizeTraits<T,dim>` defines an interface for the
|
||||
diagonalization and computation of eigenvectors and eigenvalues of a
|
||||
symmetric matrix. `T` is the number type and `dim` is the dimension of
|
||||
the matrices and vector (set to 3 by default). We provide two models
|
||||
for this concept:
|
||||
|
||||
- `Eigen_vcm_traits<T,dim>` uses the \ref thirdpartyEigen library.
|
||||
- `Internal_vcm_traits<T,dim>` is an internal implementation that does not
|
||||
- `Eigen_diagonalize_traits<T,dim>` uses the \ref thirdpartyEigen library.
|
||||
- `Internal_diagonalize_traits<T,dim>` is an internal implementation that does not
|
||||
depend on another library.
|
||||
|
||||
Although both models achieve the same computation,
|
||||
`Eigen_vcm_traits<T,dim>` is faster and should thus be used if the
|
||||
`Eigen_diagonalize_traits<T,dim>` is faster and should thus be used if the
|
||||
\ref thirdpartyEigen library is available. The eigenvalues are stored
|
||||
in ascending order and eigenvectors are stored in accordance.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
#include <iostream>
|
||||
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
#include <CGAL/Eigen_vcm_traits.h>
|
||||
#include <CGAL/Eigen_diagonalize_traits.h>
|
||||
#else
|
||||
#include <CGAL/Internal_vcm_traits.h>
|
||||
#include <CGAL/Internal_diagonalize_traits.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
|
@ -12,9 +12,9 @@ typedef CGAL::cpp11::array<FT, 6> Eigen_matrix;
|
|||
typedef CGAL::cpp11::array<FT, 3> Eigen_vector;
|
||||
typedef CGAL::cpp11::array<FT, 9> Eigen_three_vectors;
|
||||
#ifdef CGAL_EIGEN3_ENABLED
|
||||
typedef CGAL::Eigen_vcm_traits<FT, 3> Vcm_traits;
|
||||
typedef CGAL::Eigen_diagonalize_traits<FT, 3> Diagonalize_traits;
|
||||
#else
|
||||
typedef CGAL::Internal_vcm_traits<FT, 3> Vcm_traits;
|
||||
typedef CGAL::Internal_diagonalize_traits<FT, 3> Diagonalize_traits;
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
|
|
@ -27,9 +27,9 @@ int main(void)
|
|||
Eigen_vector eigenvalues;
|
||||
Eigen_three_vectors eigenvectors;
|
||||
|
||||
if (!(Vcm_traits::diagonalize_selfadjoint_covariance_matrix (covariance,
|
||||
eigenvalues,
|
||||
eigenvectors)))
|
||||
if (!(Diagonalize_traits::diagonalize_selfadjoint_covariance_matrix (covariance,
|
||||
eigenvalues,
|
||||
eigenvectors)))
|
||||
{
|
||||
std::cerr << "Error: cannot diagonalize matrix" << std::endl;
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
// Author(s) : Jocelyn Meyron and Quentin Mérigot
|
||||
//
|
||||
|
||||
#ifndef CGAL_EIGEN_VCM_TRAITS_H
|
||||
#define CGAL_EIGEN_VCM_TRAITS_H
|
||||
#ifndef CGAL_EIGEN_DIAGONALIZE_TRAITS_H
|
||||
#define CGAL_EIGEN_DIAGONALIZE_TRAITS_H
|
||||
|
||||
#include <Eigen/Dense>
|
||||
#include <Eigen/Eigenvalues>
|
||||
|
|
@ -28,11 +28,11 @@
|
|||
|
||||
namespace CGAL {
|
||||
|
||||
/// A model of the concept `VCMTraits` using \ref thirdpartyEigen.
|
||||
/// \cgalModels `VCMTraits`
|
||||
/// A model of the concept `DiagonalizeTraits` using \ref thirdpartyEigen.
|
||||
/// \cgalModels `DiagonalizeTraits`
|
||||
|
||||
template <typename FT, unsigned int dim = 3>
|
||||
class Eigen_vcm_traits{
|
||||
class Eigen_diagonalize_traits{
|
||||
|
||||
typedef Eigen::Matrix<FT, dim, dim> Matrix;
|
||||
typedef Eigen::Matrix<FT, dim, 1> Vector;
|
||||
|
|
@ -146,4 +146,4 @@ public:
|
|||
|
||||
} // namespace CGAL
|
||||
|
||||
#endif // CGAL_EIGEN_VCM_TRAITS_H
|
||||
#endif // CGAL_EIGEN_DIAGONALIZE_TRAITS_H
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
#ifndef CGAL_INTERNAL_VCM_TRAITS_H
|
||||
#define CGAL_INTERNAL_VCM_TRAITS_H
|
||||
#ifndef CGAL_INTERNAL_DIAGONALIZE_TRAITS_H
|
||||
#define CGAL_INTERNAL_DIAGONALIZE_TRAITS_H
|
||||
|
||||
#include <CGAL/array.h>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
/// A model of the concept `VCMTraits`
|
||||
/// \cgalModels `VCMTraits`
|
||||
/// A model of the concept `DiagonalizeTraits`
|
||||
/// \cgalModels `DiagonalizeTraits`
|
||||
|
||||
template <typename FT, unsigned int dim = 3>
|
||||
class Internal_vcm_traits{
|
||||
class Internal_diagonalize_traits{
|
||||
|
||||
public:
|
||||
static bool
|
||||
|
|
@ -244,4 +244,4 @@ class Internal_vcm_traits{
|
|||
|
||||
} // namespace CGAL
|
||||
|
||||
#endif // CGAL_INTERNAL_VCM_TRAITS_H
|
||||
#endif // CGAL_INTERNAL_DIAGONALIZE_TRAITS_H
|
||||
Loading…
Reference in New Issue