Public Member Functions | Static Public Member Functions | Private Attributes

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]

List of all members.

Public Member Functions

 btMatrix3x3 ()
 No initializaion constructor.
 btMatrix3x3 (const btQuaternion &q)
 Constructor from Quaternion.
 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.
 btMatrix3x3 (const btMatrix3x3 &other)
 Copy constructor.
btMatrix3x3operator= (const btMatrix3x3 &other)
 Assignment Operator.
btVector3 getColumn (int i) const
 Get a column of the matrix as a vector.
const btVector3getRow (int i) const
 Get a row of the matrix as a vector.
btVector3operator[] (int i)
 Get a mutable reference to a row of the matrix as a vector.
const btVector3operator[] (int i) const
 Get a const reference to a row of the matrix as a vector.
btMatrix3x3operator*= (const btMatrix3x3 &m)
 Multiply by the target matrix on the right.
btMatrix3x3operator+= (const btMatrix3x3 &m)
 Adds by the target matrix on the right.
btMatrix3x3operator-= (const btMatrix3x3 &m)
 Substractss by the target matrix on the right.
void setFromOpenGLSubMatrix (const btScalar *m)
 Set from the rotational part of a 4x4 OpenGL matrix.
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).
void setRotation (const btQuaternion &q)
 Set the matrix from a quaternion.
void setEulerYPR (const btScalar &yaw, const btScalar &pitch, const btScalar &roll)
 Set the matrix from euler angles using YPR around YXZ respectively.
void setEulerZYX (btScalar eulerX, btScalar eulerY, btScalar eulerZ)
 Set the matrix from euler angles YPR around ZYX axes.
void setIdentity ()
 Set the matrix to the identity.
void getOpenGLSubMatrix (btScalar *m) const
 Fill the rotational part of an OpenGL matrix and clear the shear/perspective.
void getRotation (btQuaternion &q) const
 Get the matrix represented as a quaternion.
void getEulerYPR (btScalar &yaw, btScalar &pitch, btScalar &roll) const
 Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR.
void getEulerZYX (btScalar &yaw, btScalar &pitch, btScalar &roll, unsigned int solution_number=1) const
 Get the matrix represented as euler angles around ZYX.
btMatrix3x3 scaled (const btVector3 &s) const
 Create a scaled copy of the matrix.
btScalar determinant () const
 Return the determinant of the matrix.
btMatrix3x3 adjoint () const
 Return the adjoint of the matrix.
btMatrix3x3 absolute () const
 Return the matrix with all values non negative.
btMatrix3x3 transpose () const
 Return the transpose of the matrix.
btMatrix3x3 inverse () const
 Return the inverse of the matrix.
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 diagonalize (btMatrix3x3 &rot, btScalar threshold, int maxSteps)
 diagonalizes this matrix by the Jacobi method.
btScalar cofac (int r1, int c1, int r2, int c2) const
 Calculate the matrix cofactor.
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.

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


Constructor & Destructor Documentation

btMatrix3x3::btMatrix3x3 (  )  [inline]

No initializaion constructor.

Definition at line 50 of file btMatrix3x3.h.

btMatrix3x3::btMatrix3x3 ( const btQuaternion q  )  [inline, explicit]

Constructor from Quaternion.

Definition at line 55 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 64 of file btMatrix3x3.h.

btMatrix3x3::btMatrix3x3 ( const btMatrix3x3 other  )  [inline]

Copy constructor.

Definition at line 109 of file btMatrix3x3.h.


Member Function Documentation

btMatrix3x3 btMatrix3x3::absolute (  )  const [inline]

Return the matrix with all values non negative.

Definition at line 954 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::adjoint (  )  const [inline]

Return the adjoint of the matrix.

Definition at line 1012 of file btMatrix3x3.h.

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

Calculate the matrix cofactor.

Parameters:
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 722 of file btMatrix3x3.h.

void btMatrix3x3::deSerialize ( const struct btMatrix3x3Data &  dataIn  )  [inline]

Definition at line 1343 of file btMatrix3x3.h.

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

Definition at line 1355 of file btMatrix3x3.h.

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

Definition at line 1349 of file btMatrix3x3.h.

btScalar btMatrix3x3::determinant (  )  const [inline]

Return the determinant of the matrix.

Definition at line 947 of file btMatrix3x3.h.

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

diagonalizes this matrix by the Jacobi method.

Parameters:
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 634 of file btMatrix3x3.h.

btVector3 btMatrix3x3::getColumn ( int  i  )  const [inline]

Get a column of the matrix as a vector.

Parameters:
i Column number 0 indexed

Definition at line 129 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:
yaw Yaw around Y axis
pitch Pitch around X axis
roll around Z axis

Definition at line 487 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:
yaw Yaw around X 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 516 of file btMatrix3x3.h.

static const btMatrix3x3& btMatrix3x3::getIdentity (  )  [inline, static]

Definition at line 325 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:
m The array to be filled

Definition at line 342 of file btMatrix3x3.h.

void btMatrix3x3::getRotation ( btQuaternion q  )  const [inline]

Get the matrix represented as a quaternion.

Parameters:
q The quaternion which will be set

Definition at line 395 of file btMatrix3x3.h.

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

Get a row of the matrix as a vector.

Parameters:
i Row number 0 indexed

Definition at line 137 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::inverse (  )  const [inline]

Return the inverse of the matrix.

Definition at line 1020 of file btMatrix3x3.h.

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

Multiply by the target matrix on the right.

Parameters:
m Rotation matrix to be applied Equivilant to this = this * m

Definition at line 741 of file btMatrix3x3.h.

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

Adds by the target matrix on the right.

Parameters:
m matrix to be applied Equivilant to this = this + m

Definition at line 831 of file btMatrix3x3.h.

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

Substractss by the target matrix on the right.

Parameters:
m matrix to be applied Equivilant to this = this - m

Definition at line 924 of file btMatrix3x3.h.

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

Assignment Operator.

Definition at line 117 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:
i Row number 0 indexed

Definition at line 153 of file btMatrix3x3.h.

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

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

Parameters:
i Row number 0 indexed

Definition at line 145 of file btMatrix3x3.h.

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

Create a scaled copy of the matrix.

Parameters:
s Scaling vector The elements of the vector will scale each column

Definition at line 585 of file btMatrix3x3.h.

void btMatrix3x3::serialize ( struct btMatrix3x3Data &  dataOut  )  const [inline]

Definition at line 1330 of file btMatrix3x3.h.

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

Definition at line 1336 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:
yaw Yaw about Y axis
pitch Pitch about X axis
roll Roll about Z axis

Definition at line 279 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:
eulerX Roll about X axis
eulerY Pitch around Y axis
eulerZ Yaw aboud 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 293 of file btMatrix3x3.h.

void btMatrix3x3::setFromOpenGLSubMatrix ( const btScalar m  )  [inline]

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

Parameters:
m A pointer to the beginning of the array of scalars

Definition at line 176 of file btMatrix3x3.h.

void btMatrix3x3::setIdentity (  )  [inline]

Set the matrix to the identity.

Definition at line 312 of file btMatrix3x3.h.

void btMatrix3x3::setRotation ( const btQuaternion q  )  [inline]

Set the matrix from a quaternion.

Parameters:
q The Quaternion to match

Definition at line 204 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:
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 193 of file btMatrix3x3.h.

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

Definition at line 611 of file btMatrix3x3.h.

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

Definition at line 615 of file btMatrix3x3.h.

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

Definition at line 619 of file btMatrix3x3.h.

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

Definition at line 1088 of file btMatrix3x3.h.

btMatrix3x3 btMatrix3x3::transpose (  )  const [inline]

Return the transpose of the matrix.

Definition at line 975 of file btMatrix3x3.h.

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

Definition at line 1032 of file btMatrix3x3.h.


Member Data Documentation

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

Definition at line 46 of file btMatrix3x3.h.


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