3x3 matrix class. More...
#include <openvdb/math/Mat3.h>
Public Types | |
using | value_type = T |
Data type held by the matrix. | |
using | ValueType = T |
using | MyBase = Mat<3, T> |
enum | SIZE_ |
Public Member Functions | |
Mat3 ()=default | |
Mat3 (const Quat< T > &q) | |
template<typename Source> | |
Mat3 (Source a, Source b, Source c, Source d, Source e, Source f, Source g, Source h, Source i) | |
Constructor given array of elements, the ordering is in row major form: | |
template<typename Source> | |
Mat3 (const Vec3< Source > &v1, const Vec3< Source > &v2, const Vec3< Source > &v3, bool rows=true) | |
template<typename Source> | |
Mat3 (Source *a) | |
template<typename Source> | |
Mat3 (const Mat3< Source > &m) | |
Conversion constructor. | |
Mat3 (const Mat4< T > &m) | |
Conversion from Mat4 (copies top left) | |
void | setRow (int i, const Vec3< T > &v) |
Set ith row to vector v. | |
Vec3< T > | row (int i) const |
Get ith row, e.g. Vec3d v = m.row(1);. | |
void | setCol (int j, const Vec3< T > &v) |
Set jth column to vector v. | |
Vec3< T > | col (int j) const |
Get jth column, e.g. Vec3d v = m.col(0);. | |
T & | operator() (int i, int j) |
T | operator() (int i, int j) const |
void | setRows (const Vec3< T > &v1, const Vec3< T > &v2, const Vec3< T > &v3) |
Set the rows of this matrix to the vectors v1, v2, v3. | |
void | setColumns (const Vec3< T > &v1, const Vec3< T > &v2, const Vec3< T > &v3) |
Set the columns of this matrix to the vectors v1, v2, v3. | |
void | setSymmetric (const Vec3< T > &vdiag, const Vec3< T > &vtri) |
Set diagonal and symmetric triangular components. | |
void | setSkew (const Vec3< T > &v) |
Set the matrix as cross product of the given vector. | |
void | setToRotation (const Quat< T > &q) |
Set this matrix to the rotation matrix specified by the quaternion. | |
void | setToRotation (const Vec3< T > &axis, T angle) |
Set this matrix to the rotation specified by axis and angle. | |
void | setZero () |
Set this matrix to zero. | |
void | setIdentity () |
Set this matrix to identity. | |
template<typename Source> | |
const Mat3 & | operator= (const Mat3< Source > &m) |
Assignment operator. | |
bool | eq (const Mat3 &m, T eps=1.0e-8) const |
Return true if this matrix is equivalent to m within a tolerance of eps. | |
Mat3< T > | operator- () const |
Negation operator, for e.g. m1 = -m2;. | |
template<typename S> | |
const Mat3< T > & | operator*= (S scalar) |
Multiplication operator, e.g. M = scalar * M;. | |
template<typename S> | |
const Mat3< T > & | operator+= (const Mat3< S > &m1) |
Add each element of the given matrix to the corresponding element of this matrix. | |
template<typename S> | |
const Mat3< T > & | operator-= (const Mat3< S > &m1) |
Subtract each element of the given matrix from the corresponding element of this matrix. | |
template<typename S> | |
const Mat3< T > & | operator*= (const Mat3< S > &m1) |
Multiply this matrix by the given matrix. | |
Mat3 | cofactor () const |
Return the cofactor matrix of this matrix. | |
Mat3 | adjoint () const |
Return the adjoint of this matrix, i.e., the transpose of its cofactor. | |
Mat3 | transpose () const |
returns transpose of this | |
Mat3 | inverse (T tolerance=0) const |
T | det () const |
Determinant of matrix. | |
T | trace () const |
Trace of matrix. | |
Mat3 | snapBasis (Axis axis, const Vec3< T > &direction) |
template<typename T0> | |
Vec3< T0 > | transform (const Vec3< T0 > &v) const |
template<typename T0> | |
Vec3< T0 > | pretransform (const Vec3< T0 > &v) const |
Mat3 | timesDiagonal (const Vec3< T > &diag) const |
Treat diag as a diagonal matrix and return the product of this matrix with diag (from the right). | |
std::string | str (unsigned indentation=0) const |
std::string | str (unsigned indentation=0) const |
T * | asPointer () |
Direct access to the internal data. | |
const T * | asPointer () const |
T * | asPointer () |
Direct access to the internal data. | |
const T * | asPointer () const |
T * | operator[] (int i) |
Array style reference to ith row. | |
const T * | operator[] (int i) const |
T * | operator[] (int i) |
Array style reference to ith row. | |
const T * | operator[] (int i) const |
void | write (std::ostream &os) const |
void | write (std::ostream &os) const |
void | read (std::istream &is) |
void | read (std::istream &is) |
T | absMax () const |
Return the maximum of the absolute of all elements in this matrix. | |
T | absMax () const |
Return the maximum of the absolute of all elements in this matrix. | |
bool | isNan () const |
True if a Nan is present in this matrix. | |
bool | isNan () const |
True if a Nan is present in this matrix. | |
bool | isInfinite () const |
True if an Inf is present in this matrix. | |
bool | isInfinite () const |
True if an Inf is present in this matrix. | |
bool | isFinite () const |
True if no Nan or Inf values are present. | |
bool | isFinite () const |
True if no Nan or Inf values are present. | |
bool | isZero () const |
True if all elements are exactly zero. | |
bool | isZero () const |
True if all elements are exactly zero. | |
Static Public Member Functions | |
static const Mat3< T > & | identity () |
Predefined constant for identity matrix. | |
static const Mat3< T > & | zero () |
Predefined constant for zero matrix. | |
static Mat3 | symmetric (const Vec3< T > &vdiag, const Vec3< T > &vtri) |
Return a matrix with the prescribed diagonal and symmetric triangular components. | |
static unsigned | numRows () |
static unsigned | numRows () |
static unsigned | numColumns () |
static unsigned | numColumns () |
static unsigned | numElements () |
static unsigned | numElements () |
Protected Attributes | |
T | mm [SIZE *SIZE] |
T | mm [SIZE *SIZE] |
Related Symbols | |
(Note that these are not member symbols.) | |
template<typename T0, typename T1> | |
bool | operator== (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Equality operator, does exact floating point comparisons. | |
template<typename T0, typename T1> | |
bool | operator!= (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Inequality operator, does exact floating point comparisons. | |
template<typename S, typename T> | |
Mat3< typename promote< S, T >::type > | operator* (S scalar, const Mat3< T > &m) |
Multiply each element of the given matrix by scalar and return the result. | |
template<typename S, typename T> | |
Mat3< typename promote< S, T >::type > | operator* (const Mat3< T > &m, S scalar) |
Multiply each element of the given matrix by scalar and return the result. | |
template<typename T0, typename T1> | |
Mat3< typename promote< T0, T1 >::type > | operator+ (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Add corresponding elements of m0 and m1 and return the result. | |
template<typename T0, typename T1> | |
Mat3< typename promote< T0, T1 >::type > | operator- (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Subtract corresponding elements of m0 and m1 and return the result. | |
template<typename T, typename MT> | |
Vec3< typename promote< T, MT >::type > | operator* (const Mat3< MT > &_m, const Vec3< T > &_v) |
Multiply _m by _v and return the resulting vector. | |
template<typename T, typename MT> | |
Vec3< typename promote< T, MT >::type > | operator* (const Vec3< T > &_v, const Mat3< MT > &_m) |
Multiply _v by _m and return the resulting vector. | |
template<typename T, typename MT> | |
Vec3< T > & | operator*= (Vec3< T > &_v, const Mat3< MT > &_m) |
Multiply _v by _m and replace _v with the resulting vector. | |
3x3 matrix class.
using value_type = T |
Data type held by the matrix.
using ValueType = T |
|
inherited |
|
default |
Trivial constructor, the matrix is NOT initialized
Constructor given the quaternion rotation, e.g. Mat3f m(q); The quaternion is normalized and used to construct the matrix
|
inline |
Constructor given array of elements, the ordering is in row major form:
a b c d e f g h i
|
inline |
Construct matrix from rows or columns vectors (defaults to rows for historical reasons)
Constructor given array of elements, the ordering is in row major form:
a[0] a[1] a[2]
a[3] a[4] a[5]
a[6] a[7] a[8]
Conversion constructor.
Conversion from Mat4 (copies top left)
|
inlineinherited |
Return the maximum of the absolute of all elements in this matrix.
|
inlineinherited |
Return the maximum of the absolute of all elements in this matrix.
|
inline |
Return the adjoint of this matrix, i.e., the transpose of its cofactor.
|
inlineinherited |
Direct access to the internal data.
|
inlineinherited |
Direct access to the internal data.
|
inlineinherited |
|
inlineinherited |
|
inline |
Return the cofactor matrix of this matrix.
|
inline |
Determinant of matrix.
|
inline |
Return true
if this matrix is equivalent to m within a tolerance of eps.
|
inlinestatic |
Predefined constant for identity matrix.
|
inline |
returns inverse of this
ArithmeticError | if singular |
|
inlineinherited |
True if no Nan or Inf values are present.
|
inlineinherited |
True if no Nan or Inf values are present.
|
inlineinherited |
True if an Inf is present in this matrix.
|
inlineinherited |
True if an Inf is present in this matrix.
|
inlineinherited |
True if a Nan is present in this matrix.
|
inlineinherited |
True if a Nan is present in this matrix.
|
inlineinherited |
True if all elements are exactly zero.
|
inlineinherited |
True if all elements are exactly zero.
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inlinestaticinherited |
|
inline |
Alternative indexed reference to the elements Note that the indices are row first and column second. e.g. m(0,0) = 1;
|
inline |
Alternative indexed constant reference to the elements, Note that the indices are row first and column second. e.g. float f = m(1,0);
|
inline |
Multiply this matrix by the given matrix.
Multiplication operator, e.g. M = scalar * M;.
Multiply each element of this matrix by scalar.
|
inline |
Add each element of the given matrix to the corresponding element of this matrix.
|
inline |
Negation operator, for e.g. m1 = -m2;.
|
inline |
Subtract each element of the given matrix from the corresponding element of this matrix.
|
inline |
Assignment operator.
|
inlineinherited |
Array style reference to ith row.
|
inlineinherited |
Array style reference to ith row.
|
inlineinherited |
|
inlineinherited |
|
inline |
Return the transformed vector by transpose of this matrix. This function is equivalent to pre-multiplying the matrix.
|
inlineinherited |
|
inlineinherited |
|
inline |
Set jth column to vector v.
|
inline |
Set the columns of this matrix to the vectors v1, v2, v3.
|
inline |
Set this matrix to identity.
|
inline |
Set ith row to vector v.
|
inline |
Set the rows of this matrix to the vectors v1, v2, v3.
|
inline |
Set the matrix as cross product of the given vector.
Set diagonal and symmetric triangular components.
|
inline |
Set this matrix to the rotation matrix specified by the quaternion.
The quaternion is normalized and used to construct the matrix. Note that the matrix is transposed to match post-multiplication semantics.
|
inline |
Set this matrix to the rotation specified by axis and angle.
The axis must be unit vector
|
inline |
Set this matrix to zero.
This function snaps a specific axis to a specific direction, preserving scaling. It does this using minimum energy, thus posing a unique solution if basis & direction arent parralel. Direction need not be unit.
|
inlineinherited |
cout << "matrix: " << mat.str(7)
matrix: [[1 2] [3 4]]
|
inlineinherited |
cout << "matrix: " << mat.str(7)
matrix: [[1 2] [3 4]]
|
inlinestatic |
Return a matrix with the prescribed diagonal and symmetric triangular components.
Treat diag as a diagonal matrix and return the product of this matrix with diag (from the right).
|
inline |
Trace of matrix.
|
inline |
Return the transformed vector by this matrix. This function is equivalent to post-multiplying the matrix.
|
inline |
returns transpose of this
|
inlineinherited |
|
inlineinherited |
|
inlinestatic |
Predefined constant for zero matrix.
Inequality operator, does exact floating point comparisons.
|
Multiply _m by _v and return the resulting vector.
|
Multiply each element of the given matrix by scalar and return the result.
|
Multiply _v by _m and return the resulting vector.
|
Multiply each element of the given matrix by scalar and return the result.
Multiply _v by _m and replace _v with the resulting vector.
|
Add corresponding elements of m0 and m1 and return the result.
|
Subtract corresponding elements of m0 and m1 and return the result.
Equality operator, does exact floating point comparisons.
|
protectedinherited |
|
protectedinherited |