Bullet Collision Detection & Physics Library
|
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3. More...
#include <btMatrix3x3.h>
Public Member Functions | |
btMatrix3x3 () | |
No initializaion constructor. More... | |
btMatrix3x3 (const btQuaternion &q) | |
Constructor from Quaternion. More... | |
btMatrix3x3 (const btScalar &xx, const btScalar &xy, const btScalar &xz, const btScalar &yx, const btScalar &yy, const btScalar &yz, const btScalar &zx, const btScalar &zy, const btScalar &zz) | |
Constructor with row major formatting. More... | |
btMatrix3x3 (const btMatrix3x3 &other) | |
Copy constructor. More... | |
btMatrix3x3 & | operator= (const btMatrix3x3 &other) |
Assignment Operator. More... | |
btMatrix3x3 (const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) | |
btVector3 | getColumn (int i) const |
Get a column of the matrix as a vector. More... | |
const btVector3 & | getRow (int i) const |
Get a row of the matrix as a vector. More... | |
btVector3 & | operator[] (int i) |
Get a mutable reference to a row of the matrix as a vector. More... | |
const btVector3 & | operator[] (int i) const |
Get a const reference to a row of the matrix as a vector. More... | |
btMatrix3x3 & | operator*= (const btMatrix3x3 &m) |
Multiply by the target matrix on the right. More... | |
btMatrix3x3 & | operator+= (const btMatrix3x3 &m) |
Adds by the target matrix on the right. More... | |
btMatrix3x3 & | operator-= (const btMatrix3x3 &m) |
Substractss by the target matrix on the right. More... | |
void | setFromOpenGLSubMatrix (const btScalar *m) |
Set from the rotational part of a 4x4 OpenGL matrix. More... | |
void | setValue (const btScalar &xx, const btScalar &xy, const btScalar &xz, const btScalar &yx, const btScalar &yy, const btScalar &yz, const btScalar &zx, const btScalar &zy, const btScalar &zz) |
Set the values of the matrix explicitly (row major) More... | |
void | setRotation (const btQuaternion &q) |
Set the matrix from a quaternion. More... | |
void | setEulerYPR (const btScalar &yaw, const btScalar &pitch, const btScalar &roll) |
Set the matrix from euler angles using YPR around YXZ respectively. More... | |
void | setEulerZYX (btScalar eulerX, btScalar eulerY, btScalar eulerZ) |
Set the matrix from euler angles YPR around ZYX axes. More... | |
void | setIdentity () |
Set the matrix to the identity. More... | |
void | setZero () |
Set the matrix to the identity. More... | |
void | getOpenGLSubMatrix (btScalar *m) const |
Fill the rotational part of an OpenGL matrix and clear the shear/perspective. More... | |
void | getRotation (btQuaternion &q) const |
Get the matrix represented as a quaternion. More... | |
void | getEulerYPR (btScalar &yaw, btScalar &pitch, btScalar &roll) const |
Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR. More... | |
void | getEulerZYX (btScalar &yaw, btScalar &pitch, btScalar &roll, unsigned int solution_number=1) const |
Get the matrix represented as euler angles around ZYX. More... | |
btMatrix3x3 | scaled (const btVector3 &s) const |
Create a scaled copy of the matrix. More... | |
btScalar | determinant () const |
Return the determinant of the matrix. More... | |
btMatrix3x3 | adjoint () const |
Return the adjoint of the matrix. More... | |
btMatrix3x3 | absolute () const |
Return the matrix with all values non negative. More... | |
btMatrix3x3 | transpose () const |
Return the transpose of the matrix. More... | |
btMatrix3x3 | inverse () const |
Return the inverse of the matrix. More... | |
btVector3 | solve33 (const btVector3 &b) const |
Solve A * x = b, where b is a column vector. More... | |
btMatrix3x3 | transposeTimes (const btMatrix3x3 &m) const |
btMatrix3x3 | timesTranspose (const btMatrix3x3 &m) const |
btScalar | tdotx (const btVector3 &v) const |
btScalar | tdoty (const btVector3 &v) const |
btScalar | tdotz (const btVector3 &v) const |
void | extractRotation (btQuaternion &q, btScalar tolerance=1.0e-9, int maxIter=100) |
extractRotation is from "A robust method to extract the rotational part of deformations" See http://dl.acm.org/citation.cfm?doid=2994258.2994269 decomposes a matrix A in a orthogonal matrix R and a symmetric matrix S: A = R*S. More... | |
void | diagonalize (btMatrix3x3 &rot, btScalar threshold, int maxSteps) |
diagonalizes this matrix by the Jacobi method. More... | |
btScalar | cofac (int r1, int c1, int r2, int c2) const |
Calculate the matrix cofactor. More... | |
void | serialize (struct btMatrix3x3Data &dataOut) const |
void | serializeFloat (struct btMatrix3x3FloatData &dataOut) const |
void | deSerialize (const struct btMatrix3x3Data &dataIn) |
void | deSerializeFloat (const struct btMatrix3x3FloatData &dataIn) |
void | deSerializeDouble (const struct btMatrix3x3DoubleData &dataIn) |
Static Public Member Functions | |
static const btMatrix3x3 & | getIdentity () |
Private Attributes | |
btVector3 | m_el [3] |
Data storage for the matrix, each vector is a row of the matrix. More... | |
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3.
Make sure to only include a pure orthogonal matrix without scaling.
Definition at line 48 of file btMatrix3x3.h.
|
inline |
No initializaion constructor.
Definition at line 56 of file btMatrix3x3.h.
|
inlineexplicit |
Constructor from Quaternion.
Definition at line 61 of file btMatrix3x3.h.
|
inline |
Constructor with row major formatting.
Definition at line 70 of file btMatrix3x3.h.
|
inline |
Copy constructor.
Definition at line 115 of file btMatrix3x3.h.
|
inline |
Definition at line 131 of file btMatrix3x3.h.
|
inline |
Return the matrix with all values non negative.
Definition at line 1028 of file btMatrix3x3.h.
|
inline |
Return the adjoint of the matrix.
Definition at line 1085 of file btMatrix3x3.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 801 of file btMatrix3x3.h.
|
inline |
Definition at line 1413 of file btMatrix3x3.h.
|
inline |
Definition at line 1425 of file btMatrix3x3.h.
|
inline |
Definition at line 1419 of file btMatrix3x3.h.
|
inline |
Return the determinant of the matrix.
Definition at line 1022 of file btMatrix3x3.h.
|
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 716 of file btMatrix3x3.h.
|
inline |
extractRotation is from "A robust method to extract the rotational part of deformations" See http://dl.acm.org/citation.cfm?doid=2994258.2994269 decomposes a matrix A in a orthogonal matrix R and a symmetric matrix S: A = R*S.
note that R can include both rotation and scaling.
Definition at line 688 of file btMatrix3x3.h.
|
inline |
Get a column of the matrix as a vector.
i | Column number 0 indexed |
Definition at line 142 of file btMatrix3x3.h.
Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR.
yaw | Yaw around Y axis |
pitch | Pitch around X axis |
roll | around Z axis |
Definition at line 526 of file btMatrix3x3.h.
|
inline |
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 |
Definition at line 553 of file btMatrix3x3.h.
|
inlinestatic |
Definition at line 350 of file btMatrix3x3.h.
|
inline |
Fill the rotational part of an OpenGL matrix and clear the shear/perspective.
m | The array to be filled |
Definition at line 367 of file btMatrix3x3.h.
|
inline |
Get the matrix represented as a quaternion.
q | The quaternion which will be set |
Definition at line 420 of file btMatrix3x3.h.
|
inline |
Get a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 149 of file btMatrix3x3.h.
|
inline |
Return the inverse of the matrix.
Definition at line 1093 of file btMatrix3x3.h.
|
inline |
Multiply by the target matrix on the right.
m | Rotation matrix to be applied Equivilant to this = this * m |
Definition at line 818 of file btMatrix3x3.h.
|
inline |
Adds by the target matrix on the right.
m | matrix to be applied Equivilant to this = this + m |
Definition at line 908 of file btMatrix3x3.h.
|
inline |
Substractss by the target matrix on the right.
m | matrix to be applied Equivilant to this = this - m |
Definition at line 1000 of file btMatrix3x3.h.
|
inline |
Assignment Operator.
Definition at line 123 of file btMatrix3x3.h.
|
inline |
Get a mutable reference to a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 157 of file btMatrix3x3.h.
|
inline |
Get a const reference to a row of the matrix as a vector.
i | Row number 0 indexed |
Definition at line 165 of file btMatrix3x3.h.
|
inline |
Create a scaled copy of the matrix.
s | Scaling vector The elements of the vector will scale each column |
Definition at line 622 of file btMatrix3x3.h.
|
inline |
Definition at line 1401 of file btMatrix3x3.h.
|
inline |
Definition at line 1407 of file btMatrix3x3.h.
|
inline |
Set the matrix from euler angles using YPR around YXZ respectively.
yaw | Yaw about Y axis |
pitch | Pitch about X axis |
roll | Roll about Z axis |
Definition at line 289 of file btMatrix3x3.h.
Set the matrix from euler angles YPR around ZYX axes.
eulerX | Roll about X axis |
eulerY | Pitch around Y axis |
eulerZ | Yaw about Z 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 303 of file btMatrix3x3.h.
|
inline |
Set from the rotational part of a 4x4 OpenGL matrix.
m | A pointer to the beginning of the array of scalars |
Definition at line 188 of file btMatrix3x3.h.
|
inline |
Set the matrix to the identity.
Definition at line 323 of file btMatrix3x3.h.
|
inline |
Set the matrix from a quaternion.
q | The Quaternion to match |
Definition at line 215 of file btMatrix3x3.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 204 of file btMatrix3x3.h.
|
inline |
Set the matrix to the identity.
Definition at line 337 of file btMatrix3x3.h.
Solve A * x = b, where b is a column vector.
This is more efficient than computing the inverse in one-shot cases. Solve33 is from Box2d, thanks to Erin Catto,
Definition at line 648 of file btMatrix3x3.h.
Definition at line 669 of file btMatrix3x3.h.
Definition at line 673 of file btMatrix3x3.h.
Definition at line 677 of file btMatrix3x3.h.
|
inline |
Definition at line 1162 of file btMatrix3x3.h.
|
inline |
Return the transpose of the matrix.
Definition at line 1049 of file btMatrix3x3.h.
|
inline |
Definition at line 1106 of file btMatrix3x3.h.
|
private |
Data storage for the matrix, each vector is a row of the matrix.
Definition at line 52 of file btMatrix3x3.h.