Update PCA functions with diagonalize_traits typenames

This commit is contained in:
Simon Giraudot 2015-10-01 16:31:25 +02:00
parent 394f0e701a
commit f4610bc844
12 changed files with 100 additions and 100 deletions

View File

@ -47,15 +47,17 @@ init_matrix(const int n,
// assemble covariance matrix from a point set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K& , // kernel
const typename K::Point_3*, // used for indirection
const CGAL::Dimension_tag<0>&)
const CGAL::Dimension_tag<0>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Point_3 Point;
@ -84,15 +86,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a triangle set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K&, // kernel
const typename K::Triangle_3*,// used for indirection
const CGAL::Dimension_tag<2>&)
const CGAL::Dimension_tag<2>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Triangle_3 Triangle;
@ -161,15 +165,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a cuboid set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K& , // kernel
const typename K::Iso_cuboid_3*,// used for indirection
const CGAL::Dimension_tag<3>&)
const CGAL::Dimension_tag<3>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
@ -246,15 +252,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a cuboid set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K& , // kernel
const typename K::Iso_cuboid_3*,// used for indirection
const CGAL::Dimension_tag<2>&)
const CGAL::Dimension_tag<2>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
@ -339,15 +347,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a sphere set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K&, // kernel
const typename K::Sphere_3*, // used for indirection
const CGAL::Dimension_tag<3>&)
const CGAL::Dimension_tag<3>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
@ -421,15 +431,17 @@ assemble_covariance_matrix_3(InputIterator first,
}
// assemble covariance matrix from a sphere set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K&, // kernel
const typename K::Sphere_3*, // used for indirection
const CGAL::Dimension_tag<2>&)
const CGAL::Dimension_tag<2>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
@ -505,15 +517,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a tetrahedron set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K& , // kernel
const typename K::Tetrahedron_3*,// used for indirection
const CGAL::Dimension_tag<3>&)
const CGAL::Dimension_tag<3>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Tetrahedron_3 Tetrahedron;
@ -590,15 +604,17 @@ assemble_covariance_matrix_3(InputIterator first,
// assemble covariance matrix from a segment set
template < typename InputIterator,
typename K >
typename K,
typename DiagonalizeTraits >
void
assemble_covariance_matrix_3(InputIterator first,
InputIterator beyond,
CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
const K& , // kernel
const typename K::Segment_3*,// used for indirection
const CGAL::Dimension_tag<1>&)
const CGAL::Dimension_tag<1>&,
const DiagonalizeTraits&)
{
typedef typename K::FT FT;
typedef typename K::Segment_3 Segment;
@ -672,7 +688,7 @@ assemble_covariance_matrix_3(InputIterator first,
// returns fitting quality
template < typename K, typename DiagonalizeTraits >
typename K::FT
fitting_plane_3(CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
fitting_plane_3(typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
typename K::Plane_3& plane, // best fit plane
const K&, // kernel
@ -685,10 +701,10 @@ fitting_plane_3(CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// eigen vectors are sorted in accordance.
CGAL::cpp11::array<FT, 3> eigen_values = {{ 0. , 0., 0. }};
CGAL::cpp11::array<FT, 9> eigen_vectors = {{ 0., 0., 0.,
0., 0., 0.,
0., 0., 0. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0., 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0.,
0., 0., 0.,
0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);
@ -717,7 +733,7 @@ fitting_plane_3(CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance
// returns fitting quality
template < typename K, typename DiagonalizeTraits >
typename K::FT
fitting_line_3(CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance matrix
fitting_line_3(typename DiagonalizeTraits::Covariance_matrix& covariance, // covariance matrix
const typename K::Point_3& c, // centroid
typename K::Line_3& line, // best fit line
const K&, // kernel
@ -730,10 +746,10 @@ fitting_line_3(CGAL::cpp11::array<typename K::FT, 6>& covariance, // covariance
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// eigen vectors are sorted in accordance.
CGAL::cpp11::array<FT, 3> eigen_values = {{ 0. , 0., 0. }};
CGAL::cpp11::array<FT, 9> eigen_vectors = {{ 0., 0., 0.,
0., 0., 0.,
0., 0., 0. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0., 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0.,
0., 0., 0.,
0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -70,7 +70,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 2
//Final combined covariance matrix for all circles and their combined mass
FT mass = 0.0;
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
// assemble 2nd order moment about the origin.
FT temp[4] = {0.25, 0.0,
@ -121,8 +121,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);
@ -175,7 +175,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 2
//Final combined covariance matrix for all circles and their combined mass
FT mass = 0.0;
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
// assemble 2nd order moment about the origin.
FT temp[4] = {1.0, 0.0,
@ -225,8 +225,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -47,7 +47,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
// precondition: at least one element in the container.
@ -57,8 +56,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -80,7 +79,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
// precondition: at least one element in the container.
@ -90,8 +88,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag,diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -201,7 +199,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
// precondition: at least one element in the container.
@ -211,8 +208,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag,diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);
@ -233,7 +230,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Iso_cuboid_3 Iso_cuboid;
// precondition: at least one element in the container.
@ -243,8 +239,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Iso_cuboid*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);

View File

@ -66,7 +66,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 0 1
// 2
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
for(InputIterator it = first;
it != beyond;
@ -82,8 +82,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -46,7 +46,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<0>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Point_3 Point;
// precondition: at least one element in the container.
@ -56,8 +55,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -80,7 +79,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<0>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Point_3 Point;
// precondition: at least one element in the container.
@ -90,8 +88,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Point*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);

View File

@ -69,7 +69,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 1 2
//Final combined covariance matrix for all rectangles and their combined mass
FT mass = 0.0;
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
// assemble 2nd order moment about the origin.
FT temp[4] = {1/3.0, 0.25,
@ -124,8 +124,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -68,7 +68,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 1 2
//Final combined covariance matrix for all segments and their combined mass
FT mass = 0.0;
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
// assemble 2nd order moment about the origin.
FT temp[4] = {1.0, 0.5, 0.5, 1.0};
@ -112,8 +112,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -46,7 +46,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<1>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Segment_3 Segment;
// precondition: at least one element in the container.
@ -56,8 +55,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -114,7 +113,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<1>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Segment_3 Segment;
// precondition: at least one element in the container.
@ -124,8 +122,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,k,tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Segment*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);

View File

@ -44,7 +44,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
// precondition: at least one element in the container.
@ -54,8 +53,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -76,7 +75,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
// precondition: at least one element in the container.
@ -86,8 +84,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -109,7 +107,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
// precondition: at least one element in the container.
@ -119,8 +116,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag, diagonalize_traits);
// compute fitting line
@ -142,7 +139,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Sphere_3 Sphere;
// precondition: at least one element in the container.
@ -152,8 +148,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Sphere*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);

View File

@ -48,7 +48,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Tetrahedron_3 Tetrahedron;
// precondition: at least one element in the container.
@ -58,8 +57,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -196,7 +195,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<3>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Tetrahedron_3 Tetrahedron;
// precondition: at least one element in the container.
@ -206,8 +204,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Tetrahedron*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);

View File

@ -70,7 +70,7 @@ linear_least_squares_fitting_2(InputIterator first,
// 1 2
//Final combined covariance matrix for all triangles and their combined mass
FT mass = 0.0;
CGAL::cpp11::array<FT, 3> covariance = {{ 0., 0., 0. }};
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0. }};
// assemble the 2nd order moment about the origin.
FT temp[4] = {1/12.0, 1/24.0,
@ -124,8 +124,8 @@ linear_least_squares_fitting_2(InputIterator first,
// solve for eigenvalues and eigenvectors.
// eigen values are sorted in ascending order,
// 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. }};
typename DiagonalizeTraits::Vector eigen_values = {{ 0. , 0. }};
typename DiagonalizeTraits::Matrix eigen_vectors = {{ 0., 0., 0. }};
DiagonalizeTraits::diagonalize_selfadjoint_covariance_matrix
(covariance, eigen_values, eigen_vectors);

View File

@ -45,7 +45,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Triangle_3 Triangle;
// precondition: at least one element in the container.
@ -55,8 +54,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag, diagonalize_traits);
// compute fitting plane
return fitting_plane_3(covariance,c,plane,k,diagonalize_traits);
@ -150,7 +149,6 @@ linear_least_squares_fitting_3(InputIterator first,
const CGAL::Dimension_tag<2>& tag,
const DiagonalizeTraits& diagonalize_traits)
{
typedef typename K::FT FT;
typedef typename K::Triangle_3 Triangle;
// precondition: at least one element in the container.
@ -160,8 +158,8 @@ linear_least_squares_fitting_3(InputIterator first,
c = centroid(first,beyond,K(),tag);
// assemble covariance matrix
CGAL::cpp11::array<FT, 6> covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag);
typename DiagonalizeTraits::Covariance_matrix covariance = {{ 0., 0., 0., 0., 0., 0. }};
assemble_covariance_matrix_3(first,beyond,covariance,c,k,(Triangle*) NULL,tag, diagonalize_traits);
// compute fitting line
return fitting_line_3(covariance,c,line,k,diagonalize_traits);