#include <MRSymMatrix3.h>
Public Types | |
using | ValueType = T |
Public Member Functions | |
constexpr | SymMatrix3 () noexcept=default |
template<typename U > | |
constexpr | SymMatrix3 (const SymMatrix3< U > &m) |
constexpr T | trace () const noexcept |
computes trace of the matrix | |
constexpr T | normSq () const noexcept |
computes the squared norm of the matrix, which is equal to the sum of 9 squared elements | |
constexpr T | det () const noexcept |
computes determinant of the matrix | |
constexpr SymMatrix3< T > | inverse () const noexcept |
computes inverse matrix | |
constexpr SymMatrix3< T > | inverse (T det) const noexcept |
computes inverse matrix given determinant of this | |
SymMatrix3 & | operator+= (const SymMatrix3< T > &b) |
SymMatrix3 & | operator-= (const SymMatrix3< T > &b) |
SymMatrix3 & | operator*= (T b) |
SymMatrix3 & | operator/= (T b) |
Vector3< T > | eigens (Matrix3< T > *eigenvectors=nullptr) const |
Vector3< T > | eigenvector (T eigenvalue) const |
computes not-unit eigenvector corresponding to a not-repeating eigenvalue | |
SymMatrix3< T > | pseudoinverse (T tol=std::numeric_limits< T >::epsilon(), int *rank=nullptr, Vector3< T > *space=nullptr) const |
Static Public Member Functions | |
static constexpr SymMatrix3 | identity () noexcept |
static constexpr SymMatrix3 | diagonal (T diagVal) noexcept |
Public Attributes | |
T | xx = 0 |
zero matrix by default | |
T | xy = 0 |
T | xz = 0 |
T | yy = 0 |
T | yz = 0 |
T | zz = 0 |
Related Symbols | |
(Note that these are not member symbols.) | |
template<typename T > | |
Vector3< T > | operator* (const SymMatrix3< T > &a, const Vector3< T > &b) |
x = a * b | |
template<typename T > | |
SymMatrix3< T > | outerSquare (const Vector3< T > &a) |
x = a * a^T | |
template<typename T > | |
SymMatrix3< T > | outerSquare (T k, const Vector3< T > &a) |
x = k * a * a^T | |
template<typename T > | |
SymMatrix3< T > | crossSquare (const Vector3< T > &a) |
symmetric 3x3 matrix
using MR::SymMatrix3< T >::ValueType = T |
|
constexprdefaultnoexcept |
|
inlineexplicitconstexpr |
|
constexprnoexcept |
computes determinant of the matrix
|
inlinestaticconstexprnoexcept |
Vector3< T > MR::SymMatrix3< T >::eigens | ( | Matrix3< T > * | eigenvectors = nullptr | ) | const |
returns eigenvalues of the matrix in ascending order (diagonal matrix L), and optionally returns corresponding unit eigenvectors in the rows of orthogonal matrix V, M*V^T = V^T*L; M = V^T*L*V
Vector3< T > MR::SymMatrix3< T >::eigenvector | ( | T | eigenvalue | ) | const |
computes not-unit eigenvector corresponding to a not-repeating eigenvalue
|
inlinestaticconstexprnoexcept |
|
inlineconstexprnoexcept |
computes inverse matrix
|
constexprnoexcept |
computes inverse matrix given determinant of this
|
constexprnoexcept |
computes the squared norm of the matrix, which is equal to the sum of 9 squared elements
|
inline |
|
inline |
|
inline |
|
inline |
SymMatrix3< T > MR::SymMatrix3< T >::pseudoinverse | ( | T | tol = std::numeric_limits< T >::epsilon(), |
int * | rank = nullptr, | ||
Vector3< T > * | space = nullptr ) const |
for not-degenerate matrix returns just inverse matrix, otherwise returns degenerate matrix, which performs inversion on not-kernel subspace;
tol | relative epsilon-tolerance for too small number detection |
rank | optional output for this matrix rank according to given tolerance |
space | rank=1: unit direction of solution line, rank=2: unit normal to solution plane, rank=3: zero vector |
|
inlineconstexprnoexcept |
computes trace of the matrix
|
related |
computes a matrix that gives double application of a cross product with given vector M x = [ a, [a, x] ] https://en.wikipedia.org/wiki/Cross_product#Alternative_ways_to_compute
|
related |
x = a * b
|
related |
x = a * a^T
|
related |
x = k * a * a^T
T MR::SymMatrix3< T >::xx = 0 |
zero matrix by default
T MR::SymMatrix3< T >::xy = 0 |
T MR::SymMatrix3< T >::xz = 0 |
T MR::SymMatrix3< T >::yy = 0 |
T MR::SymMatrix3< T >::yz = 0 |
T MR::SymMatrix3< T >::zz = 0 |