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(tf2Scalar &yaw | |
| Get the matrix represented as euler angles around ZYX. More... | |
| Matrix3x3 | absolute () const |
| Return the matrix with all values non negative. More... | |
| Matrix3x3 | adjoint () const |
| Return the adjoint of the matrix. More... | |
| tf2Scalar | cofac (int r1, int c1, int r2, int c2) const |
| Calculate the matrix cofactor. More... | |
| void | deSerialize (const struct Matrix3x3Data &dataIn) |
| void | deSerializeDouble (const struct Matrix3x3DoubleData &dataIn) |
| void | deSerializeFloat (const struct Matrix3x3FloatData &dataIn) |
| tf2Scalar | determinant () const |
| Return the determinant of the matrix. More... | |
| void | diagonalize (Matrix3x3 &rot, tf2Scalar threshold, int maxSteps) |
| diagonalizes this matrix by the Jacobi method. More... | |
| TF2SIMD_FORCE_INLINE Vector3 | getColumn (int i) const |
| Get a column of the matrix as a vector. More... | |
| void | getEulerYPR (tf2Scalar &yaw, tf2Scalar &pitch, tf2Scalar &roll, unsigned int solution_number=1) const |
| Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR. More... | |
| void | getOpenGLSubMatrix (tf2Scalar *m) const |
| Fill the values of the matrix into a 9 element array. More... | |
| void | getRotation (Quaternion &q) const |
| Get the matrix represented as a quaternion. More... | |
| TF2SIMD_FORCE_INLINE const Vector3 & | getRow (int i) const |
| Get a row of the matrix as a vector. More... | |
| void | getRPY (tf2Scalar &roll, tf2Scalar &pitch, tf2Scalar &yaw, unsigned int solution_number=1) const |
| Get the matrix represented as roll pitch and yaw about fixed axes XYZ. More... | |
| Matrix3x3 | inverse () const |
| Return the inverse of the matrix. More... | |
| Matrix3x3 () | |
| No initializaion constructor. More... | |
| Matrix3x3 (const Quaternion &q) | |
| Constructor from Quaternion. More... | |
| Matrix3x3 (const tf2Scalar &xx, const tf2Scalar &xy, const tf2Scalar &xz, const tf2Scalar &yx, const tf2Scalar &yy, const tf2Scalar &yz, const tf2Scalar &zx, const tf2Scalar &zy, const tf2Scalar &zz) | |
| Constructor with row major formatting. More... | |
| TF2SIMD_FORCE_INLINE | Matrix3x3 (const Matrix3x3 &other) |
| Copy constructor. More... | |
| Matrix3x3 & | operator*= (const Matrix3x3 &m) |
| Multiply by the target matrix on the right. More... | |
| TF2SIMD_FORCE_INLINE Matrix3x3 & | operator= (const Matrix3x3 &other) |
| Assignment Operator. More... | |
| TF2SIMD_FORCE_INLINE Vector3 & | operator[] (int i) |
| Get a mutable reference to a row of the matrix as a vector. More... | |
| TF2SIMD_FORCE_INLINE const Vector3 & | operator[] (int i) const |
| Get a const reference to a row of the matrix as a vector. More... | |
| Matrix3x3 | scaled (const Vector3 &s) const |
| Create a scaled copy of the matrix. More... | |
| void | serialize (struct Matrix3x3Data &dataOut) const |
| void | serializeFloat (struct Matrix3x3FloatData &dataOut) const |
| void | setEulerYPR (tf2Scalar eulerZ, tf2Scalar eulerY, tf2Scalar eulerX) |
| Set the matrix from euler angles YPR around ZYX axes. More... | |
| void | setEulerZYX (const tf2Scalar &yaw, const tf2Scalar &pitch, const tf2Scalar &roll) __attribute__((deprecated)) |
| Set the matrix from euler angles using YPR around ZYX respectively. More... | |
| void | setFromOpenGLSubMatrix (const tf2Scalar *m) |
| Set from a carray of tf2Scalars. More... | |
| void | setIdentity () |
| Set the matrix to the identity. More... | |
| void | setRotation (const Quaternion &q) |
| Set the matrix from a quaternion. More... | |
| void | setRPY (tf2Scalar roll, tf2Scalar pitch, tf2Scalar yaw) |
| Set the matrix using RPY about XYZ fixed axes. More... | |
| void | setValue (const tf2Scalar &xx, const tf2Scalar &xy, const tf2Scalar &xz, const tf2Scalar &yx, const tf2Scalar &yy, const tf2Scalar &yz, const tf2Scalar &zx, const tf2Scalar &zy, const tf2Scalar &zz) |
| Set the values of the matrix explicitly (row major) More... | |
| TF2SIMD_FORCE_INLINE tf2Scalar | tdotx (const Vector3 &v) const |
| TF2SIMD_FORCE_INLINE tf2Scalar | tdoty (const Vector3 &v) const |
| TF2SIMD_FORCE_INLINE tf2Scalar | tdotz (const Vector3 &v) const |
| Matrix3x3 | timesTranspose (const Matrix3x3 &m) const |
| Matrix3x3 | transpose () const |
| Return the transpose of the matrix. More... | |
| Matrix3x3 | transposeTimes (const Matrix3x3 &m) const |
Static Public Member Functions | |
| static const Matrix3x3 & | getIdentity () |
Public Attributes | |
| tf2Scalar & | pitch |
| tf2Scalar tf2Scalar & | roll |
| tf2Scalar tf2Scalar unsigned int | solution_number |
Private Attributes | |
| Vector3 | m_el [3] |
| Data storage for the matrix, each vector is a row of the matrix. More... | |
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.
|
inline |
No initializaion constructor.
Definition at line 38 of file Matrix3x3.h.
|
inlineexplicit |
Constructor from Quaternion.
Definition at line 43 of file Matrix3x3.h.
|
inline |
Constructor with row major formatting.
Definition at line 52 of file Matrix3x3.h.
|
inline |
Copy constructor.
Definition at line 61 of file Matrix3x3.h.
| tf2::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 |
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::absolute | ( | ) | const |
Return the matrix with all values non negative.
Definition at line 539 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::adjoint | ( | ) | const |
Return the adjoint of the matrix.
Definition at line 556 of file Matrix3x3.h.
|
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 504 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE void tf2::Matrix3x3::deSerialize | ( | const struct Matrix3x3Data & | dataIn | ) |
Definition at line 674 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE void tf2::Matrix3x3::deSerializeDouble | ( | const struct Matrix3x3DoubleData & | dataIn | ) |
Definition at line 686 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE void tf2::Matrix3x3::deSerializeFloat | ( | const struct Matrix3x3FloatData & | dataIn | ) |
Definition at line 680 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE tf2Scalar tf2::Matrix3x3::determinant | ( | ) | const |
Return the determinant of the matrix.
Definition at line 532 of file Matrix3x3.h.
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 416 of file Matrix3x3.h.
|
inline |
Get a column of the matrix as a vector.
| i | Column number 0 indexed |
Definition at line 81 of file Matrix3x3.h.
|
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.
|
inlinestatic |
Definition at line 215 of file Matrix3x3.h.
|
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.
|
inline |
Get the matrix represented as a quaternion.
| q | The quaternion which will be set |
Definition at line 243 of file Matrix3x3.h.
|
inline |
Get a row of the matrix as a vector.
| i | Row number 0 indexed |
Definition at line 89 of file Matrix3x3.h.
|
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 364 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::inverse | ( | ) | const |
Return the inverse of the matrix.
Definition at line 564 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 & tf2::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 523 of file Matrix3x3.h.
|
inline |
Assignment Operator.
Definition at line 70 of file Matrix3x3.h.
|
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.
|
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.
|
inline |
Create a scaled copy of the matrix.
| s | Scaling vector The elements of the vector will scale each column |
Definition at line 372 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE void tf2::Matrix3x3::serialize | ( | struct Matrix3x3Data & | dataOut | ) | const |
Definition at line 661 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE void tf2::Matrix3x3::serializeFloat | ( | struct Matrix3x3FloatData & | dataOut | ) | const |
Definition at line 667 of file Matrix3x3.h.
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.
|
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.
|
inline |
Set from a carray of tf2Scalars.
| m | A pointer to the beginning of an array of 9 tf2Scalars |
Definition at line 118 of file Matrix3x3.h.
|
inline |
Set the matrix to the identity.
Definition at line 208 of file Matrix3x3.h.
|
inline |
Set the matrix from a quaternion.
| q | The Quaternion to match |
Definition at line 146 of file Matrix3x3.h.
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.
|
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.
|
inline |
Definition at line 393 of file Matrix3x3.h.
|
inline |
Definition at line 397 of file Matrix3x3.h.
|
inline |
Definition at line 401 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::timesTranspose | ( | const Matrix3x3 & | m | ) | const |
Definition at line 591 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::transpose | ( | ) | const |
Return the transpose of the matrix.
Definition at line 548 of file Matrix3x3.h.
| TF2SIMD_FORCE_INLINE Matrix3x3 tf2::Matrix3x3::transposeTimes | ( | const Matrix3x3 & | m | ) | const |
Definition at line 576 of file Matrix3x3.h.
|
private |
Data storage for the matrix, each vector is a row of the matrix.
Definition at line 34 of file Matrix3x3.h.
| tf2Scalar& tf2::Matrix3x3::pitch |
Definition at line 282 of file Matrix3x3.h.
Definition at line 282 of file Matrix3x3.h.
Definition at line 282 of file Matrix3x3.h.