CGAL 4.12 - CGAL and Solvers
DiagonalizeTraits Concept Reference

## Definition

### template<typename FT, unsigned int dim = 3> class DiagonalizeTraits< FT, dim >

Concept providing functions to extract eigenvectors and eigenvalues from covariance matrices represented by an array a, using symmetric diagonalization. For example, a matrix of dimension 3 is defined as follows:

$$\begin{bmatrix} a[0] & a[1] & a[2] \\ a[1] & a[3] & a[4] \\ a[2] & a[4] & a[5] \\ \end{bmatrix}$$
Template Parameters
 FT Number type dim Dimension of the matrices and vectors
Has Models:

CGAL::Default_diagonalize_traits

CGAL::Diagonalize_traits

CGAL::Eigen_diagonalize_traits

## Public Types

typedef cpp11::array< FT, dim > Vector

typedef cpp11::array< FT, dim *dim > Matrix

typedef cpp11::array< FT,(dim *(dim+1)/2)> Covariance_matrix

## Static Public Member Functions

static bool diagonalize_selfadjoint_covariance_matrix (const Covariance_matrix &cov, Vector &eigenvalues)
Fill eigenvalues with the eigenvalues of the covariance matrix represented by cov. More...

static bool diagonalize_selfadjoint_covariance_matrix (const Covariance_matrix &cov, Vector &eigenvalues, Matrix &eigenvectors)
Fill eigenvalues with the eigenvalues and eigenvectors with the eigenvectors of the covariance matrix represented by cov. More...

static bool extract_largest_eigenvector_of_covariance_matrix (const Covariance_matrix &cov, Vector &normal)
Extract the eigenvector associated to the largest eigenvalue of the covariance matrix represented by cov. More...

## ◆ diagonalize_selfadjoint_covariance_matrix() [1/2]

template<typename FT , unsigned int dim = 3>
 static bool DiagonalizeTraits< FT, dim >::diagonalize_selfadjoint_covariance_matrix ( const Covariance_matrix & cov, Vector & eigenvalues )
static

Fill eigenvalues with the eigenvalues of the covariance matrix represented by cov.

Eigenvalues are sorted by increasing order.

Returns
true if the operation was successful and false otherwise.

## ◆ diagonalize_selfadjoint_covariance_matrix() [2/2]

template<typename FT , unsigned int dim = 3>
 static bool DiagonalizeTraits< FT, dim >::diagonalize_selfadjoint_covariance_matrix ( const Covariance_matrix & cov, Vector & eigenvalues, Matrix & eigenvectors )
static

Fill eigenvalues with the eigenvalues and eigenvectors with the eigenvectors of the covariance matrix represented by cov.

Eigenvalues are sorted by increasing order.

Returns
true if the operation was successful and false otherwise.

## ◆ extract_largest_eigenvector_of_covariance_matrix()

template<typename FT , unsigned int dim = 3>
 static bool DiagonalizeTraits< FT, dim >::extract_largest_eigenvector_of_covariance_matrix ( const Covariance_matrix & cov, Vector & normal )
static

Extract the eigenvector associated to the largest eigenvalue of the covariance matrix represented by cov.

Returns
true if the operation was successful and false otherwise.