The Matrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with Quaternion, Transform and Vector3. Make sure to only include a pure orthogonal matrix without scaling. More...
#include <Matrix3x3.h>
Public Member Functions | |
__attribute__ ((deprecated)) void getEulerZYX(tfScalar &yaw | |
Get the matrix represented as euler angles around ZYX. | |
Matrix3x3 | absolute () const |
Return the matrix with all values non negative. | |
Matrix3x3 | adjoint () const |
Return the adjoint of the matrix. | |
tfScalar | cofac (int r1, int c1, int r2, int c2) const |
Calculate the matrix cofactor. | |
void | deSerialize (const struct Matrix3x3Data &dataIn) |
void | deSerializeDouble (const struct Matrix3x3DoubleData &dataIn) |
void | deSerializeFloat (const struct Matrix3x3FloatData &dataIn) |
tfScalar | determinant () const |
Return the determinant of the matrix. | |
void | diagonalize (Matrix3x3 &rot, tfScalar threshold, int maxSteps) |
diagonalizes this matrix by the Jacobi method. | |
TFSIMD_FORCE_INLINE Vector3 | getColumn (int i) const |
Get a column of the matrix as a vector. | |
void | getEulerYPR (tfScalar &yaw, tfScalar &pitch, tfScalar &roll, unsigned int solution_number=1) const |
Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR. | |
void | getOpenGLSubMatrix (tfScalar *m) const |
Fill the values of the matrix into a 9 element array. | |
void | getRotation (Quaternion &q) const |
Get the matrix represented as a quaternion. | |
TFSIMD_FORCE_INLINE const Vector3 & | getRow (int i) const |
Get a row of the matrix as a vector. | |
void | getRPY (tfScalar &roll, tfScalar &pitch, tfScalar &yaw, unsigned int solution_number=1) const |
Get the matrix represented as roll pitch and yaw about fixed axes XYZ. | |
Matrix3x3 | inverse () const |
Return the inverse of the matrix. | |
Matrix3x3 () | |
No initializaion constructor. | |
Matrix3x3 (const Quaternion &q) | |
Constructor from Quaternion. | |
Matrix3x3 (const tfScalar &xx, const tfScalar &xy, const tfScalar &xz, const tfScalar &yx, const tfScalar &yy, const tfScalar &yz, const tfScalar &zx, const tfScalar &zy, const tfScalar &zz) | |
Constructor with row major formatting. | |
TFSIMD_FORCE_INLINE | Matrix3x3 (const Matrix3x3 &other) |
Copy constructor. | |
Matrix3x3 & | operator*= (const Matrix3x3 &m) |
Multiply by the target matrix on the right. | |
TFSIMD_FORCE_INLINE Matrix3x3 & | operator= (const Matrix3x3 &other) |
Assignment Operator. | |
TFSIMD_FORCE_INLINE Vector3 & | operator[] (int i) |
Get a mutable reference to a row of the matrix as a vector. | |
TFSIMD_FORCE_INLINE const Vector3 & | operator[] (int i) const |
Get a const reference to a row of the matrix as a vector. | |
Matrix3x3 | scaled (const Vector3 &s) const |
Create a scaled copy of the matrix. | |
void | serialize (struct Matrix3x3Data &dataOut) const |
void | serializeFloat (struct Matrix3x3FloatData &dataOut) const |
void | setEulerYPR (tfScalar eulerZ, tfScalar eulerY, tfScalar eulerX) |
Set the matrix from euler angles YPR around ZYX axes. | |
void | setEulerZYX (const tfScalar &yaw, const tfScalar &pitch, const tfScalar &roll) __attribute__((deprecated)) |
Set the matrix from euler angles using YPR around ZYX respectively. | |
void | setFromOpenGLSubMatrix (const tfScalar *m) |
Set from a carray of tfScalars. | |
void | setIdentity () |
Set the matrix to the identity. | |
void | setRotation (const Quaternion &q) |
Set the matrix from a quaternion. | |
void | setRPY (tfScalar roll, tfScalar pitch, tfScalar yaw) |
Set the matrix using RPY about XYZ fixed axes. | |
void | setValue (const tfScalar &xx, const tfScalar &xy, const tfScalar &xz, const tfScalar &yx, const tfScalar &yy, const tfScalar &yz, const tfScalar &zx, const tfScalar &zy, const tfScalar &zz) |
Set the values of the matrix explicitly (row major) | |
TFSIMD_FORCE_INLINE tfScalar | tdotx (const Vector3 &v) const |
TFSIMD_FORCE_INLINE tfScalar | tdoty (const Vector3 &v) const |
TFSIMD_FORCE_INLINE tfScalar | tdotz (const Vector3 &v) const |
Matrix3x3 | timesTranspose (const Matrix3x3 &m) const |
Matrix3x3 | transpose () const |
Return the transpose of the matrix. | |
Matrix3x3 | transposeTimes (const Matrix3x3 &m) const |
Static Public Member Functions | |
static const Matrix3x3 & | getIdentity () |
Public Attributes | |
tfScalar & | pitch |
tfScalar tfScalar & | roll |
tfScalar tfScalar unsigned int | solution_number |
Private Attributes | |
Vector3 | m_el [3] |
Data storage for the matrix, each vector is a row of the matrix. |
The Matrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with Quaternion, Transform and Vector3. Make sure to only include a pure orthogonal matrix without scaling.
Definition at line 31 of file Matrix3x3.h.
tf::Matrix3x3::Matrix3x3 | ( | ) | [inline] |
No initializaion constructor.
Definition at line 38 of file Matrix3x3.h.
tf::Matrix3x3::Matrix3x3 | ( | const Quaternion & | q | ) | [inline, explicit] |
Constructor from Quaternion.
Definition at line 43 of file Matrix3x3.h.
tf::Matrix3x3::Matrix3x3 | ( | const tfScalar & | xx, |
const tfScalar & | xy, | ||
const tfScalar & | xz, | ||
const tfScalar & | yx, | ||
const tfScalar & | yy, | ||
const tfScalar & | yz, | ||
const tfScalar & | zx, | ||
const tfScalar & | zy, | ||
const tfScalar & | zz | ||
) | [inline] |
Constructor with row major formatting.
Definition at line 52 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE tf::Matrix3x3::Matrix3x3 | ( | const Matrix3x3 & | other | ) | [inline] |
Copy constructor.
Definition at line 61 of file Matrix3x3.h.
tf::Matrix3x3::__attribute__ | ( | (deprecated) | ) |
Get the matrix represented as euler angles around ZYX.
yaw | Yaw around Z axis |
pitch | Pitch around Y axis |
roll | around X axis |
solution_number | Which solution of two possible solutions ( 1 or 2) are possible values |
Return the matrix with all values non negative.
Definition at line 540 of file Matrix3x3.h.
Return the adjoint of the matrix.
Definition at line 557 of file Matrix3x3.h.
tfScalar tf::Matrix3x3::cofac | ( | int | r1, |
int | c1, | ||
int | r2, | ||
int | c2 | ||
) | const [inline] |
Calculate the matrix cofactor.
r1 | The first row to use for calculating the cofactor |
c1 | The first column to use for calculating the cofactor |
r1 | The second row to use for calculating the cofactor |
c1 | The second column to use for calculating the cofactor See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details |
Definition at line 505 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE void tf::Matrix3x3::deSerialize | ( | const struct Matrix3x3Data & | dataIn | ) |
Definition at line 675 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE void tf::Matrix3x3::deSerializeDouble | ( | const struct Matrix3x3DoubleData & | dataIn | ) |
Definition at line 687 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE void tf::Matrix3x3::deSerializeFloat | ( | const struct Matrix3x3FloatData & | dataIn | ) |
Definition at line 681 of file Matrix3x3.h.
Return the determinant of the matrix.
Definition at line 533 of file Matrix3x3.h.
void tf::Matrix3x3::diagonalize | ( | Matrix3x3 & | rot, |
tfScalar | threshold, | ||
int | maxSteps | ||
) | [inline] |
diagonalizes this matrix by the Jacobi method.
rot | stores the rotation from the coordinate system in which the matrix is diagonal to the original coordinate system, i.e., old_this = rot * new_this * rot^T. |
threshold | See iteration |
iteration | The iteration stops when all off-diagonal elements are less than the threshold multiplied by the sum of the absolute values of the diagonal, or when maxSteps have been executed. |
Note that this matrix is assumed to be symmetric.
Definition at line 417 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Vector3 tf::Matrix3x3::getColumn | ( | int | i | ) | const [inline] |
Get a column of the matrix as a vector.
i | Column number 0 indexed |
Definition at line 81 of file Matrix3x3.h.
void tf::Matrix3x3::getEulerYPR | ( | tfScalar & | yaw, |
tfScalar & | pitch, | ||
tfScalar & | roll, | ||
unsigned int | solution_number = 1 |
||
) | const [inline] |
Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR.
yaw | Yaw around Z axis |
pitch | Pitch around Y axis |
roll | around X axis |
Definition at line 292 of file Matrix3x3.h.
static const Matrix3x3& tf::Matrix3x3::getIdentity | ( | ) | [inline, static] |
Definition at line 215 of file Matrix3x3.h.
void tf::Matrix3x3::getOpenGLSubMatrix | ( | tfScalar * | m | ) | const [inline] |
Fill the values of the matrix into a 9 element array.
m | The array to be filled |
Definition at line 225 of file Matrix3x3.h.
void tf::Matrix3x3::getRotation | ( | Quaternion & | q | ) | const [inline] |
Get the matrix represented as a quaternion.
q | The quaternion which will be set |
Definition at line 243 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE const Vector3& tf::Matrix3x3::getRow | ( | int | i | ) | const [inline] |
Get a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 89 of file Matrix3x3.h.
void tf::Matrix3x3::getRPY | ( | tfScalar & | roll, |
tfScalar & | pitch, | ||
tfScalar & | yaw, | ||
unsigned int | solution_number = 1 |
||
) | const [inline] |
Get the matrix represented as roll pitch and yaw about fixed axes XYZ.
roll | around X axis |
pitch | Pitch around Y axis |
yaw | Yaw around Z axis |
solution_number | Which solution of two possible solutions ( 1 or 2) are possible values |
Definition at line 365 of file Matrix3x3.h.
Return the inverse of the matrix.
Definition at line 565 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Matrix3x3 & tf::Matrix3x3::operator*= | ( | const Matrix3x3 & | m | ) |
Multiply by the target matrix on the right.
m | Rotation matrix to be applied Equivilant to this = this * m |
Definition at line 524 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Matrix3x3& tf::Matrix3x3::operator= | ( | const Matrix3x3 & | other | ) | [inline] |
Assignment Operator.
Definition at line 70 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Vector3& tf::Matrix3x3::operator[] | ( | int | i | ) | [inline] |
Get a mutable reference to a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 97 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE const Vector3& tf::Matrix3x3::operator[] | ( | int | i | ) | const [inline] |
Get a const reference to a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 105 of file Matrix3x3.h.
Matrix3x3 tf::Matrix3x3::scaled | ( | const Vector3 & | s | ) | const [inline] |
Create a scaled copy of the matrix.
s | Scaling vector The elements of the vector will scale each column |
Definition at line 373 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE void tf::Matrix3x3::serialize | ( | struct Matrix3x3Data & | dataOut | ) | const |
Definition at line 662 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE void tf::Matrix3x3::serializeFloat | ( | struct Matrix3x3FloatData & | dataOut | ) | const |
Definition at line 668 of file Matrix3x3.h.
void tf::Matrix3x3::setEulerYPR | ( | tfScalar | eulerZ, |
tfScalar | eulerY, | ||
tfScalar | eulerX | ||
) | [inline] |
Set the matrix from euler angles YPR around ZYX axes.
eulerZ | Yaw aboud Z axis |
eulerY | Pitch around Y axis |
eulerX | Roll about X axis |
These angles are used to produce a rotation matrix. The euler angles are applied in ZYX order. I.e a vector is first rotated about X then Y and then Z
Definition at line 180 of file Matrix3x3.h.
void tf::Matrix3x3::setEulerZYX | ( | const tfScalar & | yaw, |
const tfScalar & | pitch, | ||
const tfScalar & | roll | ||
) | [inline] |
Set the matrix from euler angles using YPR around ZYX respectively.
yaw | Yaw about Z axis |
pitch | Pitch about Y axis |
roll | Roll about X axis |
Definition at line 166 of file Matrix3x3.h.
void tf::Matrix3x3::setFromOpenGLSubMatrix | ( | const tfScalar * | m | ) | [inline] |
Set from a carray of tfScalars.
m | A pointer to the beginning of an array of 9 tfScalars |
Definition at line 118 of file Matrix3x3.h.
void tf::Matrix3x3::setIdentity | ( | ) | [inline] |
Set the matrix to the identity.
Definition at line 208 of file Matrix3x3.h.
void tf::Matrix3x3::setRotation | ( | const Quaternion & | q | ) | [inline] |
Set the matrix from a quaternion.
q | The Quaternion to match |
Definition at line 146 of file Matrix3x3.h.
void tf::Matrix3x3::setRPY | ( | tfScalar | roll, |
tfScalar | pitch, | ||
tfScalar | yaw | ||
) | [inline] |
Set the matrix using RPY about XYZ fixed axes.
roll | Roll about X axis |
pitch | Pitch around Y axis |
yaw | Yaw aboud Z axis |
Definition at line 203 of file Matrix3x3.h.
void tf::Matrix3x3::setValue | ( | const tfScalar & | xx, |
const tfScalar & | xy, | ||
const tfScalar & | xz, | ||
const tfScalar & | yx, | ||
const tfScalar & | yy, | ||
const tfScalar & | yz, | ||
const tfScalar & | zx, | ||
const tfScalar & | zy, | ||
const tfScalar & | zz | ||
) | [inline] |
Set the values of the matrix explicitly (row major)
xx | Top left |
xy | Top Middle |
xz | Top Right |
yx | Middle Left |
yy | Middle Middle |
yz | Middle Right |
zx | Bottom Left |
zy | Bottom Middle |
zz | Bottom Right |
Definition at line 135 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE tfScalar tf::Matrix3x3::tdotx | ( | const Vector3 & | v | ) | const [inline] |
Definition at line 394 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE tfScalar tf::Matrix3x3::tdoty | ( | const Vector3 & | v | ) | const [inline] |
Definition at line 398 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE tfScalar tf::Matrix3x3::tdotz | ( | const Vector3 & | v | ) | const [inline] |
Definition at line 402 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Matrix3x3 tf::Matrix3x3::timesTranspose | ( | const Matrix3x3 & | m | ) | const |
Definition at line 592 of file Matrix3x3.h.
Return the transpose of the matrix.
Definition at line 549 of file Matrix3x3.h.
TFSIMD_FORCE_INLINE Matrix3x3 tf::Matrix3x3::transposeTimes | ( | const Matrix3x3 & | m | ) | const |
Definition at line 577 of file Matrix3x3.h.
Vector3 tf::Matrix3x3::m_el[3] [private] |
Data storage for the matrix, each vector is a row of the matrix.
Definition at line 34 of file Matrix3x3.h.
Definition at line 282 of file Matrix3x3.h.
Definition at line 282 of file Matrix3x3.h.
tfScalar tfScalar unsigned int tf::Matrix3x3::solution_number |
1) const { getEulerYPR(yaw, pitch, roll, solution_number); }
Definition at line 282 of file Matrix3x3.h.