![]() |
1.0.0 API documentation
|
Functions | |
| template<length_t D, typename T , qualifier Q, typename I > | |
| GLM_FUNC_DECL mat< D, D, T, Q > | computeCovarianceMatrix (I const &b, I const &e) |
Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with relative coordinates (e.g., relative to the center of gravity of the object) Dereferencing an iterator of type I must yield a vec<D, T, Qgt; | |
| template<length_t D, typename T , qualifier Q, typename I > | |
| GLM_FUNC_DECL mat< D, D, T, Q > | computeCovarianceMatrix (I const &b, I const &e, vec< D, T, Q > const &c) |
Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with absolute coordinates and a precomputed center of gravity c Dereferencing an iterator of type I must yield a vec<D, T, Qgt; | |
| template<length_t D, typename T , qualifier Q> | |
| GLM_INLINE mat< D, D, T, Q > | computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n) |
Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of gravity of the object) More... | |
| template<length_t D, typename T , qualifier Q> | |
| GLM_INLINE mat< D, D, T, Q > | computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c) |
Compute a covariance matrix form an array of absolute coordinates v and a precomputed center of gravity c More... | |
| template<length_t D, typename T , qualifier Q> | |
| GLM_FUNC_DECL unsigned int | findEigenvaluesSymReal (mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors) |
Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the D Eigenvalues of the matrix, and also provides the corresponding Eigenvectors. More... | |
| template<typename T , qualifier Q> | |
| GLM_FUNC_DECL void | sortEigenvalues (vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors) |
| Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More... | |
| template<typename T , qualifier Q> | |
| GLM_FUNC_DECL void | sortEigenvalues (vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors) |
| Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More... | |
| template<typename T , qualifier Q> | |
| GLM_FUNC_DECL void | sortEigenvalues (vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors) |
| Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More... | |
Include <glm/gtx/pca.hpp> to use the features of this extension.
Implements functions required for fundamental 'princple component analysis' in 2D, 3D, and 4D: 1) Computing a covariance matrics from a list of relative position vectors 2) Compute the eigenvalues and eigenvectors of the covariance matrics This is useful, e.g., to compute an object-aligned bounding box from vertices of an object. https://en.wikipedia.org/wiki/Principal_component_analysis
Example:
| GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix | ( | vec< D, T, Q > const * | v, |
| size_t | n | ||
| ) |
Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of gravity of the object)
| v | Points to a memory holding n times vectors |
| n | Number of points in v |
| GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix | ( | vec< D, T, Q > const * | v, |
| size_t | n, | ||
| vec< D, T, Q > const & | c | ||
| ) |
Compute a covariance matrix form an array of absolute coordinates v and a precomputed center of gravity c
| v | Points to a memory holding n times vectors |
| n | Number of points in v |
| c | Precomputed center of gravity |
| GLM_FUNC_DECL unsigned int glm::findEigenvaluesSymReal | ( | mat< D, D, T, Q > const & | covarMat, |
| vec< D, T, Q > & | outEigenvalues, | ||
| mat< D, D, T, Q > & | outEigenvectors | ||
| ) |
Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the D Eigenvalues of the matrix, and also provides the corresponding Eigenvectors.
Note: the data in outEigenvalues and outEigenvectors are in matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i]. This is a numeric implementation to find the Eigenvalues, using 'QL decomposition` (variant of QR decomposition: https://en.wikipedia.org/wiki/QR_decomposition).
| [in] | covarMat | A symmetric, real-valued covariance matrix, e.g. computed from computeCovarianceMatrix |
| [out] | outEigenvalues | Vector to receive the found eigenvalues |
| [out] | outEigenvectors | Matrix to receive the found eigenvectors corresponding to the found eigenvalues, as column vectors |
| GLM_FUNC_DECL void glm::sortEigenvalues | ( | vec< 2, T, Q > & | eigenvalues, |
| mat< 2, 2, T, Q > & | eigenvectors | ||
| ) |
Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.
The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].
| GLM_FUNC_DECL void glm::sortEigenvalues | ( | vec< 3, T, Q > & | eigenvalues, |
| mat< 3, 3, T, Q > & | eigenvectors | ||
| ) |
Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.
The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].
| GLM_FUNC_DECL void glm::sortEigenvalues | ( | vec< 4, T, Q > & | eigenvalues, |
| mat< 4, 4, T, Q > & | eigenvectors | ||
| ) |
Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.
The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].
1.8.18