Classes | |
class | vcg::ndim::Matrix< TYPE > |
class | vcg::ndim::MatrixDiag< N, S > |
class | vcg::ndim::MatrixDiagBase |
Typedefs | |
typedef vcg::ndim::Matrix< double > | vcg::ndim::MatrixMNd |
typedef vcg::ndim::Matrix< float > | vcg::ndim::MatrixMNf |
Enumerations | |
enum | vcg::SortingStrategy { vcg::LeaveUnsorted = 0, vcg::SortAscending = 1, vcg::SortDescending = 2 } |
Functions | |
template<typename MATRIX_TYPE , typename POINT_TYPE > | |
static void | vcg::Jacobi (MATRIX_TYPE &w, POINT_TYPE &d, MATRIX_TYPE &v, int &nrot) |
template<typename MATRIX_TYPE > | |
static void | vcg::JacobiRotate (MATRIX_TYPE &A, typename MATRIX_TYPE::ScalarType s, typename MATRIX_TYPE::ScalarType tau, int i, int j, int k, int l) |
template<typename TYPE > | |
static TYPE | vcg::pythagora (TYPE a, TYPE b) |
template<class S > | |
void | vcg::RotationalPartByPolarDecomposition (const vcg::Matrix33< S > &m, vcg::Matrix33< S > &r) |
template<typename TYPE > | |
static TYPE | vcg::sign (TYPE a, TYPE b) |
template<typename MATRIX_TYPE > | |
static void | vcg::SingularValueBacksubstitution (const MATRIX_TYPE &U, const typename MATRIX_TYPE::ScalarType *W, const MATRIX_TYPE &V, typename MATRIX_TYPE::ScalarType *x, const typename MATRIX_TYPE::ScalarType *b) |
template<typename MATRIX_TYPE > | |
static bool | vcg::SingularValueDecomposition (MATRIX_TYPE &A, typename MATRIX_TYPE::ScalarType *W, MATRIX_TYPE &V, const SortingStrategy sorting=LeaveUnsorted, const int max_iters=30) |
template<typename MATRIX_TYPE > | |
void | vcg::Sort (MATRIX_TYPE &U, typename MATRIX_TYPE::ScalarType W[], MATRIX_TYPE &V, const SortingStrategy sorting) |
template<typename MATRIX_TYPE , typename POINT_TYPE > | |
void | vcg::SortEigenvaluesAndEigenvectors (POINT_TYPE &eigenvalues, MATRIX_TYPE &eigenvectors, bool absComparison=false) |
template<typename TYPE > | |
static TYPE | vcg::sqr (TYPE a) |
typedef vcg::ndim::Matrix<double> vcg::ndim::MatrixMNd |
Definition at line 759 of file deprecated_matrix.h.
typedef vcg::ndim::Matrix<float> vcg::ndim::MatrixMNf |
Definition at line 760 of file deprecated_matrix.h.
enum vcg::SortingStrategy |
Definition at line 249 of file lin_algebra.h.
static void vcg::Jacobi | ( | MATRIX_TYPE & | w, | |
POINT_TYPE & | d, | |||
MATRIX_TYPE & | v, | |||
int & | nrot | |||
) | [inline, static] |
Computes all eigenvalues and eigenvectors of a real symmetric matrix . On output, elements of the input matrix above the diagonal are destroyed.
d | returns the eigenvalues of a. | |
v | is a matrix whose columns contain, the normalized eigenvectors | |
nrot | returns the number of Jacobi rotations that were required. |
Definition at line 81 of file lin_algebra.h.
static void vcg::JacobiRotate | ( | MATRIX_TYPE & | A, | |
typename MATRIX_TYPE::ScalarType | s, | |||
typename MATRIX_TYPE::ScalarType | tau, | |||
int | i, | |||
int | j, | |||
int | k, | |||
int | l | |||
) | [inline, static] |
Definition at line 65 of file lin_algebra.h.
static TYPE vcg::pythagora | ( | TYPE | a, | |
TYPE | b | |||
) | [inline, static] |
Definition at line 223 of file lin_algebra.h.
void vcg::RotationalPartByPolarDecomposition | ( | const vcg::Matrix33< S > & | m, | |
vcg::Matrix33< S > & | r | |||
) | [inline] |
Extract the rotational part of a matrix by polar decomposition m = R*S. Polar decomposition is computed by taking r = m * sqrt(m^t*m)^{-1}
Definition at line 45 of file polar_decomposition.h.
static TYPE vcg::sign | ( | TYPE | a, | |
TYPE | b | |||
) | [inline, static] |
Definition at line 234 of file lin_algebra.h.
static void vcg::SingularValueBacksubstitution | ( | const MATRIX_TYPE & | U, | |
const typename MATRIX_TYPE::ScalarType * | W, | |||
const MATRIX_TYPE & | V, | |||
typename MATRIX_TYPE::ScalarType * | x, | |||
const typename MATRIX_TYPE::ScalarType * | b | |||
) | [inline, static] |
Solves AxX = B for a vector X, where A is specified by the matrices Umxn, Wnx1 and Vnxn as returned by SingularValueDecomposition
. No input quantities are destroyed, so the routine may be called sequentially with different bxs.
x | is the output solution vector (xnx1) | |
b | is the input right-hand side (bnx1) |
Definition at line 622 of file lin_algebra.h.
static bool vcg::SingularValueDecomposition | ( | MATRIX_TYPE & | A, | |
typename MATRIX_TYPE::ScalarType * | W, | |||
MATRIX_TYPE & | V, | |||
const SortingStrategy | sorting = LeaveUnsorted , |
|||
const int | max_iters = 30 | |||
) | [inline, static] |
Given a matrix Amxn, this routine computes its singular value decomposition, i.e. A=UxWxVT. The matrix A will be destroyed! (This is the implementation described in Numerical Recipies).
A | the matrix to be decomposed | |
W | the diagonal matrix of singular values W, stored as a vector W[1...N] | |
V | the matrix V (not the transpose VT) | |
max_iters | max iteration number (default = 30). |
Definition at line 265 of file lin_algebra.h.
void vcg::Sort | ( | MATRIX_TYPE & | U, | |
typename MATRIX_TYPE::ScalarType | W[], | |||
MATRIX_TYPE & | V, | |||
const SortingStrategy | sorting | |||
) | [inline] |
Sort the singular values computed by the SingularValueDecomposition
procedure and modify the matrices U and V accordingly.
Definition at line 522 of file lin_algebra.h.
void vcg::SortEigenvaluesAndEigenvectors | ( | POINT_TYPE & | eigenvalues, | |
MATRIX_TYPE & | eigenvectors, | |||
bool | absComparison = false | |||
) | [inline] |
Given the eigenvectors and the eigenvalues as output from JacobiRotate, sorts the eigenvalues into descending order, and rearranges the columns of v correspondinlgy.
eigenvalues | ||
eigenvector | (in columns) | |
absComparison | sort according to the absolute values of the eigenvalues. |
Definition at line 178 of file lin_algebra.h.
static TYPE vcg::sqr | ( | TYPE | a | ) | [inline, static] |
Definition at line 240 of file lin_algebra.h.