The Matrix struct represents a transformation matrix. More...
Public Member Functions | |
Matrix () | |
Constructs an identity transformation matrix. More... | |
Matrix (const Matrix &other) | |
Constructs a copy of the specified Matrix object. More... | |
Matrix (const Vector &_xBasis, const Vector &_yBasis, const Vector &_zBasis) | |
Constructs a transformation matrix from the specified basis vectors. More... | |
Matrix (const Vector &_xBasis, const Vector &_yBasis, const Vector &_zBasis, const Vector &_origin) | |
Constructs a transformation matrix from the specified basis and translation vectors. More... | |
Matrix (const Vector &axis, float angleRadians) | |
Constructs a transformation matrix specifying a rotation around the specified vector. More... | |
Matrix (const Vector &axis, float angleRadians, const Vector &translation) | |
Constructs a transformation matrix specifying a rotation around the specified vector and a translation by the specified vector. More... | |
bool | operator!= (const Matrix &other) const |
Compare Matrix inequality component-wise. More... | |
Matrix | operator* (const Matrix &other) const |
Multiply transform matrices. More... | |
Matrix & | operator*= (const Matrix &other) |
Multiply transform matrices and assign the product. More... | |
bool | operator== (const Matrix &other) const |
Compare Matrix equality component-wise. More... | |
Matrix | rigidInverse () const |
Performs a matrix inverse if the matrix consists entirely of rigid transformations (translations and rotations). More... | |
void | setRotation (const Vector &axis, float angleRadians) |
Sets this transformation matrix to represent a rotation around the specified vector. More... | |
template<typename T > | |
T * | toArray3x3 (T *output) const |
Writes the 3x3 Matrix object to a 9 element row-major float or double array. More... | |
FloatArray | toArray3x3 () const |
Convert a 3x3 Matrix object to a 9 element row-major float array. More... | |
template<typename T > | |
T * | toArray4x4 (T *output) const |
Writes the 4x4 Matrix object to a 16 element row-major float or double array. More... | |
FloatArray | toArray4x4 () const |
Convert a 4x4 Matrix object to a 16 element row-major float array. More... | |
template<typename Matrix3x3Type > | |
const Matrix3x3Type | toMatrix3x3 () const |
Convert a Leap::Matrix object to another 3x3 matrix type. More... | |
template<typename Matrix4x4Type > | |
const Matrix4x4Type | toMatrix4x4 () const |
Convert a Leap::Matrix object to another 4x4 matrix type. More... | |
std::string | toString () const |
Write the matrix to a string in a human readable format. More... | |
Vector | transformDirection (const Vector &in) const |
Transforms a vector with this matrix by transforming its rotation and scale only. More... | |
Vector | transformPoint (const Vector &in) const |
Transforms a vector with this matrix by transforming its rotation, scale, and translation. More... | |
Static Public Member Functions | |
static const Matrix & | identity () |
Returns the identity matrix specifying no translation, rotation, and scale. More... | |
Public Attributes | |
Vector | origin |
The translation factors for all three axes. More... | |
Vector | xBasis |
The basis vector for the x-axis. More... | |
Vector | yBasis |
The basis vector for the y-axis. More... | |
Vector | zBasis |
The basis vector for the z-axis. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Matrix &matrix) |
Write the matrix to an output stream in a human readable format. More... | |
The Matrix struct represents a transformation matrix.
To use this struct to transform a Vector, construct a matrix containing the desired transformation and then use the Matrix::transformPoint() or Matrix::transformDirection() functions to apply the transform.
Transforms can be combined by multiplying two or more transform matrices using the * operator.
|
inline |
Constructs a transformation matrix from the specified basis vectors.
_xBasis | A Vector specifying rotation and scale factors for the x-axis. |
_yBasis | A Vector specifying rotation and scale factors for the y-axis. |
_zBasis | A Vector specifying rotation and scale factors for the z-axis. |
|
inline |
Constructs a transformation matrix from the specified basis and translation vectors.
_xBasis | A Vector specifying rotation and scale factors for the x-axis. |
_yBasis | A Vector specifying rotation and scale factors for the y-axis. |
_zBasis | A Vector specifying rotation and scale factors for the z-axis. |
_origin | A Vector specifying translation factors on all three axes. |
Constructs a transformation matrix specifying a rotation around the specified vector.
axis | A Vector specifying the axis of rotation. |
angleRadians | The amount of rotation in radians. |
Constructs a transformation matrix specifying a rotation around the specified vector and a translation by the specified vector.
axis | A Vector specifying the axis of rotation. |
angleRadians | The angle of rotation in radians. |
translation | A Vector representing the translation part of the transform. |
|
inlinestatic |
Returns the identity matrix specifying no translation, rotation, and scale.
|
inline |
Multiply transform matrices.
Combines two transformations into a single equivalent transformation.
other | A Matrix to multiply on the right hand side. |
Multiply transform matrices and assign the product.
|
inline |
|
inline |
Performs a matrix inverse if the matrix consists entirely of rigid transformations (translations and rotations).
If the matrix is not rigid, this operation will not represent an inverse.
Note that all matrices that are directly returned by the API are rigid.
|
inline |
Sets this transformation matrix to represent a rotation around the specified vector.
This function erases any previous rotation and scale transforms applied to this matrix, but does not affect translation.
axis | A Vector specifying the axis of rotation. |
angleRadians | The amount of rotation in radians. |
|
inline |
Writes the 3x3 Matrix object to a 9 element row-major float or double array.
Translation factors are discarded.
Returns a pointer to the same data.
|
inline |
Convert a 3x3 Matrix object to a 9 element row-major float array.
Translation factors are discarded.
Returns a FloatArray struct to avoid dynamic memory allocation.
|
inline |
Writes the 4x4 Matrix object to a 16 element row-major float or double array.
Returns a pointer to the same data.
|
inline |
Convert a 4x4 Matrix object to a 16 element row-major float array.
Returns a FloatArray struct to avoid dynamic memory allocation.
|
inline |
Convert a Leap::Matrix object to another 3x3 matrix type.
The new type must define a constructor function that takes each matrix element as a parameter in row-major order.
Translation factors are discarded.
|
inline |
Convert a Leap::Matrix object to another 4x4 matrix type.
The new type must define a constructor function that takes each matrix element as a parameter in row-major order.
|
inline |
Write the matrix to a string in a human readable format.
Transforms a vector with this matrix by transforming its rotation, scale, and translation.
Translation is applied after rotation and scale.
in | The Vector to transform. |
|
friend |
Write the matrix to an output stream in a human readable format.
Vector origin |
The translation factors for all three axes.
Vector xBasis |
The basis vector for the x-axis.
Vector yBasis |
The basis vector for the y-axis.
Vector zBasis |
The basis vector for the z-axis.