mirror of https://github.com/CGAL/cgal
Update PCA functions with diagonalize_traits typenames
This commit is contained in:
parent
394f0e701a
commit
f4610bc844
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue