Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
PxMat33 Class Reference

3x3 matrix class More...

#include <PxMat33.h>

Collaboration diagram for PxMat33:
Collaboration graph
[legend]

Public Member Functions

PX_CUDA_CALLABLE PX_INLINE PxMat33 ()
 Default constructor. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 (PxIDENTITY r)
 identity constructor More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 (PxZERO r)
 zero constructor More...
 
PX_CUDA_CALLABLE PxMat33 (const PxVec3 &col0, const PxVec3 &col1, const PxVec3 &col2)
 Construct from three base vectors. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 (PxReal r)
 constructor from a scalar, which generates a multiple of the identity matrix More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 (PxReal values[])
 Construct from float[9]. More...
 
PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33 (const PxQuat &q)
 Construct from a quaternion. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 (const PxMat33 &other)
 Copy constructor. More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxMat33
operator= (const PxMat33 &other)
 Assignment operator. More...
 
PX_CUDA_CALLABLE PX_INLINE bool operator== (const PxMat33 &m) const
 returns true if the two matrices are exactly equal More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxMat33 
getTranspose () const
 Get transposed matrix. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 getInverse () const
 Get the real inverse. More...
 
PX_CUDA_CALLABLE PX_INLINE PxReal getDeterminant () const
 Get determinant. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 operator- () const
 Unary minus. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 operator+ (const PxMat33 &other) const
 Add. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 operator- (const PxMat33 &other) const
 Subtract. More...
 
PX_CUDA_CALLABLE PX_INLINE PxMat33 operator* (PxReal scalar) const
 Scalar multiplication. More...
 
PX_CUDA_CALLABLE PX_INLINE PxVec3 operator* (const PxVec3 &vec) const
 Matrix vector multiplication (returns 'this->transform(vec)') More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxMat33 
operator* (const PxMat33 &other) const
 Matrix multiplication. More...
 
PX_CUDA_CALLABLE PX_INLINE
PxMat33
operator+= (const PxMat33 &other)
 Equals-add. More...
 
PX_CUDA_CALLABLE PX_INLINE
PxMat33
operator-= (const PxMat33 &other)
 Equals-sub. More...
 
PX_CUDA_CALLABLE PX_INLINE
PxMat33
operator*= (PxReal scalar)
 Equals scalar multiplication. More...
 
PX_CUDA_CALLABLE PX_INLINE
PxMat33
operator*= (const PxMat33 &other)
 Equals matrix multiplication. More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxReal 
operator() (unsigned int row, unsigned int col) const
 Element access, mathematical way! More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxReal
operator() (unsigned int row, unsigned int col)
 Element access, mathematical way! More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxVec3 
transform (const PxVec3 &other) const
 Transform vector by matrix, equal to v' = M*v. More...
 
PX_CUDA_CALLABLE PX_INLINE PxVec3 transformTranspose (const PxVec3 &other) const
 Transform vector by matrix transpose, v' = M^t*v. More...
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE const PxReal
front () const
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE PxVec3
operator[] (unsigned int num)
 
PX_CUDA_CALLABLE
PX_FORCE_INLINE const PxVec3
operator[] (unsigned int num) const
 
PX_DEPRECATED PX_CUDA_CALLABLE
PX_FORCE_INLINE PxVec3
operator[] (int num)
 
PX_DEPRECATED PX_CUDA_CALLABLE
PX_FORCE_INLINE const PxVec3
operator[] (int num) const
 

Static Public Member Functions

PX_DEPRECATED PX_CUDA_CALLABLE
static PX_INLINE PxMat33 
createIdentity ()
 
PX_DEPRECATED PX_CUDA_CALLABLE
static PX_INLINE PxMat33 
createZero ()
 
PX_CUDA_CALLABLE static
PX_INLINE PxMat33 
createDiagonal (const PxVec3 &d)
 Construct from diagonal, off-diagonals are zero. More...
 

Public Attributes

PxVec3 column0
 
PxVec3 column1
 
PxVec3 column2
 

Friends

PxMat33 operator* (PxReal, const PxMat33 &)
 

Detailed Description

3x3 matrix class

Some clarifications, as there have been much confusion about matrix formats etc in the past.

Short:

Long: Given three base vectors a, b and c the matrix is stored as

|a.x b.x c.x| |a.y b.y c.y| |a.z b.z c.z|

Vectors are treated as columns, so the vector v is

|x| |y| |z|

And matrices are applied before the vector (pre-multiplication) v' = M*v

|x'| |a.x b.x c.x| |x| |a.x*x + b.x*y + c.x*z| |y'| = |a.y b.y c.y| * |y| = |a.y*x + b.y*y + c.y*z| |z'| |a.z b.z c.z| |z| |a.z*x + b.z*y + c.z*z|

Physical storage and indexing: To be compatible with popular 3d rendering APIs (read D3d and OpenGL) the physical indexing is

|0 3 6| |1 4 7| |2 5 8|

index = column*3 + row

which in C++ translates to M[column][row]

The mathematical indexing is M_row,column and this is what is used for _-notation so _12 is 1st row, second column and operator(row, column)!

Constructor & Destructor Documentation

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( )
inline

Default constructor.

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( PxIDENTITY  r)
inline

identity constructor

References PX_UNUSED().

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( PxZERO  r)
inline

zero constructor

References PX_UNUSED().

PX_CUDA_CALLABLE PxMat33::PxMat33 ( const PxVec3 col0,
const PxVec3 col1,
const PxVec3 col2 
)
inline

Construct from three base vectors.

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( PxReal  r)
inlineexplicit

constructor from a scalar, which generates a multiple of the identity matrix

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( PxReal  values[])
inlineexplicit

Construct from float[9].

PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33::PxMat33 ( const PxQuat q)
inlineexplicit

Construct from a quaternion.

References PxQuat::w, PxQuat::x, PxQuat::y, and PxQuat::z.

PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 ( const PxMat33 other)
inline

Copy constructor.

Member Function Documentation

PX_CUDA_CALLABLE static PX_INLINE PxMat33 PxMat33::createDiagonal ( const PxVec3 d)
inlinestatic

Construct from diagonal, off-diagonals are zero.

References PxVec3::x, PxVec3::y, and PxVec3::z.

PX_DEPRECATED PX_CUDA_CALLABLE static PX_INLINE PxMat33 PxMat33::createIdentity ( )
inlinestatic
Deprecated:
Set to identity matrix. Deprecated. use PxMat33(PxIdentity)

References PxIdentity.

PX_DEPRECATED PX_CUDA_CALLABLE static PX_INLINE PxMat33 PxMat33::createZero ( )
inlinestatic
Deprecated:
Set to zero matrix. Deprecated. use PxMat33(PxZero).

References PxZero.

PX_CUDA_CALLABLE PX_FORCE_INLINE const PxReal* PxMat33::front ( ) const
inline
PX_CUDA_CALLABLE PX_INLINE PxReal PxMat33::getDeterminant ( ) const
inline

Get determinant.

PX_CUDA_CALLABLE PX_INLINE PxMat33 PxMat33::getInverse ( ) const
inline

Get the real inverse.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33 PxMat33::getTranspose ( ) const
inline

Get transposed matrix.

Referenced by PxMeshScale::toMat33().

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal PxMat33::operator() ( unsigned int  row,
unsigned int  col 
) const
inline

Element access, mathematical way!

PX_CUDA_CALLABLE PX_FORCE_INLINE PxReal& PxMat33::operator() ( unsigned int  row,
unsigned int  col 
)
inline

Element access, mathematical way!

PX_CUDA_CALLABLE PX_INLINE PxMat33 PxMat33::operator* ( PxReal  scalar) const
inline

Scalar multiplication.

PX_CUDA_CALLABLE PX_INLINE PxVec3 PxMat33::operator* ( const PxVec3 vec) const
inline

Matrix vector multiplication (returns 'this->transform(vec)')

PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33 PxMat33::operator* ( const PxMat33 other) const
inline

Matrix multiplication.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_INLINE PxMat33& PxMat33::operator*= ( PxReal  scalar)
inline

Equals scalar multiplication.

PX_CUDA_CALLABLE PX_INLINE PxMat33& PxMat33::operator*= ( const PxMat33 other)
inline

Equals matrix multiplication.

PX_CUDA_CALLABLE PX_INLINE PxMat33 PxMat33::operator+ ( const PxMat33 other) const
inline

Add.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_INLINE PxMat33& PxMat33::operator+= ( const PxMat33 other)
inline

Equals-add.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_INLINE PxMat33 PxMat33::operator- ( ) const
inline

Unary minus.

PX_CUDA_CALLABLE PX_INLINE PxMat33 PxMat33::operator- ( const PxMat33 other) const
inline

Subtract.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_INLINE PxMat33& PxMat33::operator-= ( const PxMat33 other)
inline

Equals-sub.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33& PxMat33::operator= ( const PxMat33 other)
inline

Assignment operator.

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_INLINE bool PxMat33::operator== ( const PxMat33 m) const
inline

returns true if the two matrices are exactly equal

References column0, column1, and column2.

PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& PxMat33::operator[] ( unsigned int  num)
inline
PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& PxMat33::operator[] ( unsigned int  num) const
inline
PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& PxMat33::operator[] ( int  num)
inline
PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& PxMat33::operator[] ( int  num) const
inline
PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 PxMat33::transform ( const PxVec3 other) const
inline

Transform vector by matrix, equal to v' = M*v.

References PxVec3::x, PxVec3::y, and PxVec3::z.

PX_CUDA_CALLABLE PX_INLINE PxVec3 PxMat33::transformTranspose ( const PxVec3 other) const
inline

Transform vector by matrix transpose, v' = M^t*v.

Friends And Related Function Documentation

PxMat33 operator* ( PxReal  ,
const PxMat33  
)
friend

Member Data Documentation

PxVec3 PxMat33::column0
PxVec3 PxMat33::column1
PxVec3 PxMat33::column2

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


Copyright © 2008-2015 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com