OpenVDB
1.1.0
|
3x3 matrix class. More...
#include <Mat3.h>
Inherits Mat< 3, T >.
Public Types | |
typedef T | value_type |
Data type held by the matrix. | |
typedef T | ValueType |
typedef Mat< 3, T > | MyBase |
enum | SIZE_ |
Public Member Functions | |
Mat3 () | |
Trivial constructor, the matrix is NOT initialized. | |
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) | |
Construct matrix given basis vectors (columns) | |
template<typename Source > | |
Mat3 (Source *a) | |
Mat3 (const Mat< 3, T > &m) | |
Copy constructor. | |
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 * | asPointer () |
const T * | asPointer () const |
T & | operator() (int i, int j) |
T | operator() (int i, int j) const |
void | setBasis (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 |
Test if "this" is equivalent to m with tolerance of eps value. | |
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) |
Returns m0, where ![]() ![]() | |
template<typename S > | |
const Mat3< T > & | operator-= (const Mat3< S > &m1) |
Returns m0, where ![]() ![]() | |
template<typename S > | |
const Mat3< T > & | operator*= (const Mat3< S > &m1) |
Returns m0, where ![]() ![]() | |
Mat3 | adjoint () const |
returns adjoint of m | |
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 |
template<typename T0 > | |
Mat3 | snappedBasis (Axis axis, const Vec3< T0 > &direction) const |
std::string | str (unsigned indentation=0) const |
void | write (std::ostream &os) const |
void | read (std::istream &is) |
T * | operator[] (int i) |
const T * | operator[] (int i) const |
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) |
static unsigned | numRows () |
static unsigned | numColumns () |
static unsigned | numElements () |
Protected Attributes | |
T | mm [SIZE *SIZE] |
Related Functions | |
(Note that these are not member functions.) | |
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) |
Returns M, where ![]() ![]() | |
template<typename S , typename T > | |
Mat3< typename promote< S, T > ::type > | operator* (const Mat3< T > &m, S scalar) |
Returns M, where ![]() ![]() | |
template<typename T0 , typename T1 > | |
Mat3< typename promote< T0, T1 > ::type > | operator+ (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Returns M, where ![]() ![]() | |
template<typename T0 , typename T1 > | |
Mat3< typename promote< T0, T1 > ::type > | operator- (const Mat3< T0 > &m0, const Mat3< T1 > &m1) |
Returns M, where ![]() ![]() | |
template<typename T , typename MT > | |
Vec3< typename promote< T, MT > ::type > | operator* (const Mat3< MT > &_m, const Vec3< T > &_v) |
Returns v, where ![]() ![]() | |
template<typename T , typename MT > | |
Vec3< typename promote< T, MT > ::type > | operator* (const Vec3< T > &_v, const Mat3< MT > &_m) |
Returns v, where ![]() ![]() | |
template<typename T , typename MT > | |
Vec3< T > & | operator*= (Vec3< T > &_v, const Mat3< MT > &_m) |
Returns v, where ![]() ![]() |
3x3 matrix class.
typedef T value_type |
Data type held by the matrix.
typedef T ValueType |
|
inherited |
|
inline |
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
Construct matrix given basis vectors (columns)
|
inline |
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]
|
inline |
returns adjoint of m
|
inline |
|
inline |
|
inline |
Get jth column, e.g. Vec3d v = m.col(0);.
|
inline |
Determinant of matrix.
|
inline |
Test if "this" is equivalent to m with tolerance of eps value.
|
inlinestatic |
Predefined constant for identity matrix.
|
inline |
returns inverse of this throws FailedOperationException if singular
|
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 |
Multiplication operator, e.g. M = scalar * M;.
Returns m, where for
|
inline |
Negation operator, for e.g. m1 = -m2;.
|
inline |
Array style reference to ith row e.g. m[1][2] = 4;
|
inline |
Array style reference to ith row e.g. m[1][2] = 4;
Return the transformed vector by transpose of "this" matrix. This function is equivalent to pre-multiplying the matrix.
|
inlineinherited |
|
inline |
Get ith row, e.g. Vec3d v = m.row(1);.
Set the columns of "this" matrix to the vectors v1, v2, v3.
|
inline |
Set jth column to vector v.
|
inline |
Set "this" matrix to identity.
|
inline |
Set ith row to vector v.
|
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.
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]]
Returns matrix with prescribed diagonal and symmetric triangular components
|
inline |
Trace of matrix.
Return the transformed vector by "this" matrix. This function is equivalent to post-multiplying the matrix.
|
inline |
returns transpose of this
|
inlineinherited |
|
inlinestatic |
Predefined constant for zero matrix.
Inequality operator, does exact floating point comparisons.
Returns M, where for
.
Returns M, where for
.
|
related |
Returns v, where for
.
|
related |
Returns v, where for
.
|
related |
Returns M, where for
.
|
related |
Returns M, where for
.
Equality operator, does exact floating point comparisons.
|
protectedinherited |