Renaming 'VCM' to 'diagonalize'

This commit is contained in:
Simon Giraudot 2015-08-31 08:08:26 +02:00
parent 0f65a35553
commit 28e5432c16
27 changed files with 237 additions and 228 deletions

View File

@ -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

View File

@ -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
);

View File

@ -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
);

View File

@ -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
);
}

View File

@ -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
);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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
);

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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`.

View File

@ -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`
*/

View File

@ -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.

View File

@ -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;

View File

@ -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

View File

@ -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