#include <PxMat33.h>

Public Member Functions | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE | PxMat33 () |
| Default constructor. | |
| PX_CUDA_CALLABLE PX_INLINE | PxMat33 (PxIDENTITY r) |
| identity constructor | |
| PX_CUDA_CALLABLE PX_INLINE | PxMat33 (PxZERO r) |
| zero constructor | |
| PX_CUDA_CALLABLE | PxMat33 (const PxVec3 &col0, const PxVec3 &col1, const PxVec3 &col2) |
| Construct from three base vectors. | |
| PX_CUDA_CALLABLE PX_INLINE | PxMat33 (float r) |
| constructor from a scalar, which generates a multiple of the identity matrix | |
| PX_CUDA_CALLABLE PX_INLINE | PxMat33 (float values[]) |
| Construct from float[9]. | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE | PxMat33 (const PxQuat &q) |
| Construct from a quaternion. | |
| PX_CUDA_CALLABLE PX_INLINE | PxMat33 (const PxMat33 &other) |
| Copy constructor. | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33 & | operator= (const PxMat33 &other) |
| Assignment operator. | |
| PX_CUDA_CALLABLE PX_INLINE bool | operator== (const PxMat33 &m) const |
| returns true if the two matrices are exactly equal | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE const PxMat33 | getTranspose () const |
| Get transposed matrix. | |
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 | getInverse () const |
| Get the real inverse. | |
| PX_CUDA_CALLABLE PX_INLINE float | getDeterminant () const |
| Get determinant. | |
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 | operator- () const |
| Unary minus. | |
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 | operator+ (const PxMat33 &other) const |
| Add. | |
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 | operator- (const PxMat33 &other) const |
| Subtract. | |
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 | operator* (float scalar) const |
| Scalar multiplication. | |
| PX_CUDA_CALLABLE PX_INLINE const PxVec3 | operator* (const PxVec3 &vec) const |
| Matrix vector multiplication (returns 'this->transform(vec)'). | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE const PxMat33 | operator* (const PxMat33 &other) const |
| Matrix multiplication. | |
| PX_CUDA_CALLABLE PX_INLINE PxMat33 & | operator+= (const PxMat33 &other) |
| Equals-add. | |
| PX_CUDA_CALLABLE PX_INLINE PxMat33 & | operator-= (const PxMat33 &other) |
| Equals-sub. | |
| PX_CUDA_CALLABLE PX_INLINE PxMat33 & | operator*= (float scalar) |
| Equals scalar multiplication. | |
| PX_CUDA_CALLABLE PX_INLINE PxMat33 & | operator*= (const PxMat33 &other) |
| Equals matrix multiplication. | |
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float | operator() (unsigned int row, unsigned int col) const |
| Element access, mathematical way! | |
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float & | operator() (unsigned int row, unsigned int col) |
| Element access, mathematical way! | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 | transform (const PxVec3 &other) const |
| Transform vector by matrix, equal to v' = M*v. | |
| PX_CUDA_CALLABLE PX_INLINE const PxVec3 | transformTranspose (const PxVec3 &other) const |
| Transform vector by matrix transpose, v' = M^t*v. | |
| PX_CUDA_CALLABLE PX_FORCE_INLINE const float * | front () const |
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 & | operator[] (unsigned int num) |
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 & | operator[] (unsigned int num) const |
Static Public Member Functions | |
| PX_CUDA_CALLABLE static PX_INLINE const PxMat33 | createDiagonal (const PxVec3 &d) |
| Construct from diagonal, off-diagonals are zero. | |
Public Attributes | |
| PxVec3 | column0 |
| PxVec3 | column1 |
| PxVec3 | column2 |
Friends | |
| PxMat33 | operator* (float, const PxMat33 &) |
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)!
| PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33::PxMat33 | ( | ) | [inline] |
Default constructor.
| PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 | ( | PxIDENTITY | r | ) | [inline] |
| PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 | ( | PxZERO | r | ) | [inline] |
| 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 | ( | float | r | ) | [inline, explicit] |
constructor from a scalar, which generates a multiple of the identity matrix
| PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 | ( | float | values[] | ) | [inline, explicit] |
Construct from float[9].
| PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33::PxMat33 | ( | const PxQuat & | q | ) | [inline, explicit] |
| PX_CUDA_CALLABLE PX_INLINE PxMat33::PxMat33 | ( | const PxMat33 & | other | ) | [inline] |
Copy constructor.
| PX_CUDA_CALLABLE static PX_INLINE const PxMat33 PxMat33::createDiagonal | ( | const PxVec3 & | d | ) | [inline, static] |
Construct from diagonal, off-diagonals are zero.
References PxVec3::x, PxVec3::y, and PxVec3::z.
Referenced by PxMassProperties::PxMassProperties().
| PX_CUDA_CALLABLE PX_FORCE_INLINE const float* PxMat33::front | ( | ) | const [inline] |
| PX_CUDA_CALLABLE PX_INLINE float PxMat33::getDeterminant | ( | ) | const [inline] |
Get determinant.
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 PxMat33::getInverse | ( | ) | const [inline] |
| PX_CUDA_CALLABLE PX_FORCE_INLINE const PxMat33 PxMat33::getTranspose | ( | ) | const [inline] |
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float& PxMat33::operator() | ( | unsigned int | row, | |
| unsigned int | col | |||
| ) | [inline] |
Element access, mathematical way!
| PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float PxMat33::operator() | ( | unsigned int | row, | |
| unsigned int | col | |||
| ) | const [inline] |
Element access, mathematical way!
Matrix vector multiplication (returns 'this->transform(vec)').
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 PxMat33::operator* | ( | float | scalar | ) | const [inline] |
Scalar multiplication.
Equals matrix multiplication.
| PX_CUDA_CALLABLE PX_INLINE PxMat33& PxMat33::operator*= | ( | float | scalar | ) | [inline] |
Equals scalar multiplication.
| PX_CUDA_CALLABLE PX_INLINE const PxMat33 PxMat33::operator- | ( | ) | const [inline] |
Unary minus.
| PX_CUDA_CALLABLE PX_INLINE bool PxMat33::operator== | ( | const PxMat33 & | m | ) | const [inline] |
| PX_DEPRECATED 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[] | ( | unsigned int | num | ) | [inline] |
| PX_CUDA_CALLABLE PX_INLINE const PxVec3 PxMat33::transformTranspose | ( | const PxVec3 & | other | ) | const [inline] |
Transform vector by matrix transpose, v' = M^t*v.
Referenced by PxBounds3::basisExtent(), getInverse(), PxMassProperties::getMassSpaceInertia(), operator*(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxQuat::PxQuat(), PxMassProperties::rotateInertia(), PxMassProperties::scaleInertia(), PxMassProperties::sum(), PxMeshScale::toMat33(), and PxMassProperties::translateInertia().
Referenced by PxBounds3::basisExtent(), getInverse(), PxMassProperties::getMassSpaceInertia(), operator*(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxQuat::PxQuat(), PxMassProperties::rotateInertia(), PxMassProperties::scaleInertia(), PxMassProperties::sum(), PxMeshScale::toMat33(), and PxMassProperties::translateInertia().
Referenced by PxBounds3::basisExtent(), getInverse(), PxMassProperties::getMassSpaceInertia(), operator*(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), PxQuat::PxQuat(), PxMassProperties::rotateInertia(), PxMassProperties::scaleInertia(), PxMassProperties::sum(), PxMeshScale::toMat33(), and PxMassProperties::translateInertia().