Bullet Collision Detection & Physics Library
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
btMatrix3x3 Class Reference

The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3. More...

#include <btMatrix3x3.h>

Collaboration diagram for btMatrix3x3:
Collaboration graph
[legend]

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...
 
btMatrix3x3operator= (const btMatrix3x3 &other)
 Assignment Operator. More...
 
btVector3 getColumn (int i) const
 Get a column of the matrix as a vector. More...
 
const btVector3getRow (int i) const
 Get a row of the matrix as a vector. More...
 
btVector3operator[] (int i)
 Get a mutable reference to a row of the matrix as a vector. More...
 
const btVector3operator[] (int i) const
 Get a const reference to a row of the matrix as a vector. More...
 
btMatrix3x3operator*= (const btMatrix3x3 &m)
 Multiply by the target matrix on the right. More...
 
btMatrix3x3operator+= (const btMatrix3x3 &m)
 Adds by the target matrix on the right. More...
 
btMatrix3x3operator-= (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 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 btMatrix3x3getIdentity ()
 

Private Attributes

btVector3 m_el [3]
 Data storage for the matrix, each vector is a row of the matrix. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

btMatrix3x3::btMatrix3x3 ( )
inline

No initializaion constructor.

Definition at line 55 of file btMatrix3x3.h.

btMatrix3x3::btMatrix3x3 ( const btQuaternion q)
inlineexplicit

Constructor from Quaternion.

Definition at line 60 of file btMatrix3x3.h.

btMatrix3x3::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 
)
inline

Constructor with row major formatting.

Definition at line 69 of file btMatrix3x3.h.

btMatrix3x3::btMatrix3x3 ( const btMatrix3x3 other)
inline

Copy constructor.

Definition at line 114 of file btMatrix3x3.h.

Member Function Documentation

btMatrix3x3 btMatrix3x3::absolute ( ) const
inline

Return the matrix with all values non negative.

Definition at line 1009 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::adjoint ( ) const
inline

Return the adjoint of the matrix.

Definition at line 1067 of file btMatrix3x3.h.

btScalar btMatrix3x3::cofac ( int  r1,
int  c1,
int  r2,
int  c2 
) const
inline

Calculate the matrix cofactor.

Parameters
r1The first row to use for calculating the cofactor
c1The first column to use for calculating the cofactor
r1The second row to use for calculating the cofactor
c1The second column to use for calculating the cofactor See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details

Definition at line 777 of file btMatrix3x3.h.

void btMatrix3x3::deSerialize ( const struct btMatrix3x3Data dataIn)
inline

Definition at line 1401 of file btMatrix3x3.h.

void btMatrix3x3::deSerializeDouble ( const struct btMatrix3x3DoubleData dataIn)
inline

Definition at line 1413 of file btMatrix3x3.h.

void btMatrix3x3::deSerializeFloat ( const struct btMatrix3x3FloatData dataIn)
inline

Definition at line 1407 of file btMatrix3x3.h.

btScalar btMatrix3x3::determinant ( ) const
inline

Return the determinant of the matrix.

Definition at line 1002 of file btMatrix3x3.h.

void btMatrix3x3::diagonalize ( btMatrix3x3 rot,
btScalar  threshold,
int  maxSteps 
)
inline

diagonalizes this matrix by the Jacobi method.

Parameters
rotstores 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.
thresholdSee iteration
iterationThe 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 690 of file btMatrix3x3.h.

void btMatrix3x3::extractRotation ( btQuaternion q,
btScalar  tolerance = 1.0e-9,
int  maxIter = 100 
)
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 656 of file btMatrix3x3.h.

btVector3 btMatrix3x3::getColumn ( int  i) const
inline

Get a column of the matrix as a vector.

Parameters
iColumn number 0 indexed

Definition at line 134 of file btMatrix3x3.h.

void btMatrix3x3::getEulerYPR ( btScalar yaw,
btScalar pitch,
btScalar roll 
) const
inline

Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR.

Parameters
yawYaw around Y axis
pitchPitch around X axis
rollaround Z axis

Definition at line 492 of file btMatrix3x3.h.

void btMatrix3x3::getEulerZYX ( btScalar yaw,
btScalar pitch,
btScalar roll,
unsigned int  solution_number = 1 
) const
inline

Get the matrix represented as euler angles around ZYX.

Parameters
yawYaw around Z axis
pitchPitch around Y axis
rollaround X axis
solution_numberWhich solution of two possible solutions ( 1 or 2) are possible values

Definition at line 521 of file btMatrix3x3.h.

static const btMatrix3x3& btMatrix3x3::getIdentity ( )
inlinestatic

Definition at line 330 of file btMatrix3x3.h.

void btMatrix3x3::getOpenGLSubMatrix ( btScalar m) const
inline

Fill the rotational part of an OpenGL matrix and clear the shear/perspective.

Parameters
mThe array to be filled

Definition at line 347 of file btMatrix3x3.h.

void btMatrix3x3::getRotation ( btQuaternion q) const
inline

Get the matrix represented as a quaternion.

Parameters
qThe quaternion which will be set

Definition at line 400 of file btMatrix3x3.h.

const btVector3& btMatrix3x3::getRow ( int  i) const
inline

Get a row of the matrix as a vector.

Parameters
iRow number 0 indexed

Definition at line 142 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::inverse ( ) const
inline

Return the inverse of the matrix.

Definition at line 1075 of file btMatrix3x3.h.

btMatrix3x3 & btMatrix3x3::operator*= ( const btMatrix3x3 m)
inline

Multiply by the target matrix on the right.

Parameters
mRotation matrix to be applied Equivilant to this = this * m

Definition at line 796 of file btMatrix3x3.h.

btMatrix3x3 & btMatrix3x3::operator+= ( const btMatrix3x3 m)
inline

Adds by the target matrix on the right.

Parameters
mmatrix to be applied Equivilant to this = this + m

Definition at line 886 of file btMatrix3x3.h.

btMatrix3x3 & btMatrix3x3::operator-= ( const btMatrix3x3 m)
inline

Substractss by the target matrix on the right.

Parameters
mmatrix to be applied Equivilant to this = this - m

Definition at line 979 of file btMatrix3x3.h.

btMatrix3x3& btMatrix3x3::operator= ( const btMatrix3x3 other)
inline

Assignment Operator.

Definition at line 122 of file btMatrix3x3.h.

btVector3& btMatrix3x3::operator[] ( int  i)
inline

Get a mutable reference to a row of the matrix as a vector.

Parameters
iRow number 0 indexed

Definition at line 150 of file btMatrix3x3.h.

const btVector3& btMatrix3x3::operator[] ( int  i) const
inline

Get a const reference to a row of the matrix as a vector.

Parameters
iRow number 0 indexed

Definition at line 158 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::scaled ( const btVector3 s) const
inline

Create a scaled copy of the matrix.

Parameters
sScaling vector The elements of the vector will scale each column

Definition at line 590 of file btMatrix3x3.h.

void btMatrix3x3::serialize ( struct btMatrix3x3Data dataOut) const
inline

Definition at line 1388 of file btMatrix3x3.h.

void btMatrix3x3::serializeFloat ( struct btMatrix3x3FloatData dataOut) const
inline

Definition at line 1394 of file btMatrix3x3.h.

void btMatrix3x3::setEulerYPR ( const btScalar yaw,
const btScalar pitch,
const btScalar roll 
)
inline

Set the matrix from euler angles using YPR around YXZ respectively.

Parameters
yawYaw about Y axis
pitchPitch about X axis
rollRoll about Z axis

Definition at line 284 of file btMatrix3x3.h.

void btMatrix3x3::setEulerZYX ( btScalar  eulerX,
btScalar  eulerY,
btScalar  eulerZ 
)
inline

Set the matrix from euler angles YPR around ZYX axes.

Parameters
eulerXRoll about X axis
eulerYPitch around Y axis
eulerZYaw 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 298 of file btMatrix3x3.h.

void btMatrix3x3::setFromOpenGLSubMatrix ( const btScalar m)
inline

Set from the rotational part of a 4x4 OpenGL matrix.

Parameters
mA pointer to the beginning of the array of scalars

Definition at line 181 of file btMatrix3x3.h.

void btMatrix3x3::setIdentity ( )
inline

Set the matrix to the identity.

Definition at line 317 of file btMatrix3x3.h.

void btMatrix3x3::setRotation ( const btQuaternion q)
inline

Set the matrix from a quaternion.

Parameters
qThe Quaternion to match

Definition at line 209 of file btMatrix3x3.h.

void btMatrix3x3::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 
)
inline

Set the values of the matrix explicitly (row major)

Parameters
xxTop left
xyTop Middle
xzTop Right
yxMiddle Left
yyMiddle Middle
yzMiddle Right
zxBottom Left
zyBottom Middle
zzBottom Right

Definition at line 198 of file btMatrix3x3.h.

btVector3 btMatrix3x3::solve33 ( const btVector3 b) const
inline

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 616 of file btMatrix3x3.h.

btScalar btMatrix3x3::tdotx ( const btVector3 v) const
inline

Definition at line 637 of file btMatrix3x3.h.

btScalar btMatrix3x3::tdoty ( const btVector3 v) const
inline

Definition at line 641 of file btMatrix3x3.h.

btScalar btMatrix3x3::tdotz ( const btVector3 v) const
inline

Definition at line 645 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::timesTranspose ( const btMatrix3x3 m) const
inline

Definition at line 1144 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::transpose ( ) const
inline

Return the transpose of the matrix.

Definition at line 1030 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::transposeTimes ( const btMatrix3x3 m) const
inline

Definition at line 1088 of file btMatrix3x3.h.

Member Data Documentation

btVector3 btMatrix3x3::m_el[3]
private

Data storage for the matrix, each vector is a row of the matrix.

Definition at line 51 of file btMatrix3x3.h.


The documentation for this class was generated from the following file: