Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
More...
|
| Mat44 ()=default |
| Constructor.
|
|
JPH_INLINE | Mat44 (Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4) |
|
JPH_INLINE | Mat44 (Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4) |
|
| Mat44 (const Mat44 &inM2)=default |
|
Mat44 & | operator= (const Mat44 &inM2)=default |
|
JPH_INLINE | Mat44 (Type inC1, Type inC2, Type inC3, Type inC4) |
|
JPH_INLINE float | operator() (uint inRow, uint inColumn) const |
| Get float component by element index.
|
|
JPH_INLINE float & | operator() (uint inRow, uint inColumn) |
|
JPH_INLINE bool | operator== (Mat44Arg inM2) const |
| Comparison.
|
|
JPH_INLINE bool | operator!= (Mat44Arg inM2) const |
|
JPH_INLINE bool | IsClose (Mat44Arg inM2, float inMaxDistSq=1.0e-12f) const |
| Test if two matrices are close.
|
|
JPH_INLINE Mat44 | operator* (Mat44Arg inM) const |
| Multiply matrix by matrix.
|
|
JPH_INLINE Vec3 | operator* (Vec3Arg inV) const |
| Multiply vector by matrix.
|
|
JPH_INLINE Vec4 | operator* (Vec4Arg inV) const |
|
JPH_INLINE Vec3 | Multiply3x3 (Vec3Arg inV) const |
| Multiply vector by only 3x3 part of the matrix.
|
|
JPH_INLINE Vec3 | Multiply3x3Transposed (Vec3Arg inV) const |
| Multiply vector by only 3x3 part of the transpose of the matrix ( \(result = this^T \: inV\))
|
|
JPH_INLINE Mat44 | Multiply3x3 (Mat44Arg inM) const |
| Multiply 3x3 matrix by 3x3 matrix.
|
|
JPH_INLINE Mat44 | Multiply3x3LeftTransposed (Mat44Arg inM) const |
| Multiply transpose of 3x3 matrix by 3x3 matrix ( \(result = this^T \: inM\))
|
|
JPH_INLINE Mat44 | Multiply3x3RightTransposed (Mat44Arg inM) const |
| Multiply 3x3 matrix by the transpose of a 3x3 matrix ( \(result = this \: inM^T\))
|
|
JPH_INLINE Mat44 | operator* (float inV) const |
| Multiply matrix with float.
|
|
JPH_INLINE Mat44 & | operator*= (float inV) |
| Multiply matrix with float.
|
|
JPH_INLINE Mat44 | operator+ (Mat44Arg inM) const |
| Per element addition of matrix.
|
|
JPH_INLINE Mat44 | operator- () const |
| Negate.
|
|
JPH_INLINE Mat44 | operator- (Mat44Arg inM) const |
| Per element subtraction of matrix.
|
|
JPH_INLINE Mat44 & | operator+= (Mat44Arg inM) |
| Per element addition of matrix.
|
|
JPH_INLINE Vec3 | GetAxisX () const |
| Access to the columns.
|
|
JPH_INLINE void | SetAxisX (Vec3Arg inV) |
|
JPH_INLINE Vec3 | GetAxisY () const |
|
JPH_INLINE void | SetAxisY (Vec3Arg inV) |
|
JPH_INLINE Vec3 | GetAxisZ () const |
|
JPH_INLINE void | SetAxisZ (Vec3Arg inV) |
|
JPH_INLINE Vec3 | GetTranslation () const |
|
JPH_INLINE void | SetTranslation (Vec3Arg inV) |
|
JPH_INLINE Vec3 | GetDiagonal3 () const |
|
JPH_INLINE void | SetDiagonal3 (Vec3Arg inV) |
|
JPH_INLINE Vec4 | GetDiagonal4 () const |
|
JPH_INLINE void | SetDiagonal4 (Vec4Arg inV) |
|
JPH_INLINE Vec3 | GetColumn3 (uint inCol) const |
|
JPH_INLINE void | SetColumn3 (uint inCol, Vec3Arg inV) |
|
JPH_INLINE Vec4 | GetColumn4 (uint inCol) const |
|
JPH_INLINE void | SetColumn4 (uint inCol, Vec4Arg inV) |
|
JPH_INLINE void | StoreFloat4x4 (Float4 *outV) const |
| Store matrix to memory.
|
|
JPH_INLINE Mat44 | Transposed () const |
| Transpose matrix.
|
|
JPH_INLINE Mat44 | Transposed3x3 () const |
| Transpose 3x3 subpart of matrix.
|
|
JPH_INLINE Mat44 | Inversed () const |
| Inverse 4x4 matrix.
|
|
JPH_INLINE Mat44 | InversedRotationTranslation () const |
| Inverse 4x4 matrix when it only contains rotation and translation.
|
|
JPH_INLINE float | GetDeterminant3x3 () const |
| Get the determinant of a 3x3 matrix.
|
|
JPH_INLINE Mat44 | Adjointed3x3 () const |
| Get the adjoint of a 3x3 matrix.
|
|
JPH_INLINE Mat44 | Inversed3x3 () const |
| Inverse 3x3 matrix.
|
|
JPH_INLINE bool | SetInversed3x3 (Mat44Arg inM) |
| *this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
|
|
JPH_INLINE Mat44 | GetRotation () const |
| Get rotation part only (note: retains the first 3 values from the bottom row)
|
|
JPH_INLINE Mat44 | GetRotationSafe () const |
| Get rotation part only (note: also clears the bottom row)
|
|
JPH_INLINE void | SetRotation (Mat44Arg inRotation) |
| Updates the rotation part of this matrix (the first 3 columns)
|
|
JPH_INLINE Quat | GetQuaternion () const |
| Convert to quaternion.
|
|
JPH_INLINE Mat44 | GetDirectionPreservingMatrix () const |
| Get matrix that transforms a direction with the same transform as this matrix (length is not preserved)
|
|
JPH_INLINE Mat44 | PreTranslated (Vec3Arg inTranslation) const |
| Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
|
|
JPH_INLINE Mat44 | PostTranslated (Vec3Arg inTranslation) const |
| Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)
|
|
JPH_INLINE Mat44 | PreScaled (Vec3Arg inScale) const |
| Scale a matrix: result = this * Mat44::sScale(inScale)
|
|
JPH_INLINE Mat44 | PostScaled (Vec3Arg inScale) const |
| Scale a matrix: result = Mat44::sScale(inScale) * this.
|
|
JPH_INLINE Mat44 | Decompose (Vec3 &outScale) const |
|
JPH_INLINE Mat44 | ToMat44 () const |
| In single precision mode just return the matrix itself.
|
|
|
static JPH_INLINE Mat44 | sZero () |
| Zero matrix.
|
|
static JPH_INLINE Mat44 | sIdentity () |
| Identity matrix.
|
|
static JPH_INLINE Mat44 | sNaN () |
| Matrix filled with NaN's.
|
|
static JPH_INLINE Mat44 | sLoadFloat4x4 (const Float4 *inV) |
| Load 16 floats from memory.
|
|
static JPH_INLINE Mat44 | sLoadFloat4x4Aligned (const Float4 *inV) |
| Load 16 floats from memory, 16 bytes aligned.
|
|
static JPH_INLINE Mat44 | sRotationX (float inX) |
| Rotate around X, Y or Z axis (angle in radians)
|
|
static JPH_INLINE Mat44 | sRotationY (float inY) |
|
static JPH_INLINE Mat44 | sRotationZ (float inZ) |
|
static JPH_INLINE Mat44 | sRotation (Vec3Arg inAxis, float inAngle) |
| Rotate around arbitrary axis.
|
|
static JPH_INLINE Mat44 | sRotation (QuatArg inQuat) |
| Rotate from quaternion.
|
|
static JPH_INLINE Mat44 | sTranslation (Vec3Arg inV) |
| Get matrix that translates.
|
|
static JPH_INLINE Mat44 | sRotationTranslation (QuatArg inR, Vec3Arg inT) |
| Get matrix that rotates and translates.
|
|
static JPH_INLINE Mat44 | sInverseRotationTranslation (QuatArg inR, Vec3Arg inT) |
| Get inverse matrix of sRotationTranslation.
|
|
static JPH_INLINE Mat44 | sScale (float inScale) |
| Get matrix that scales uniformly.
|
|
static JPH_INLINE Mat44 | sScale (Vec3Arg inV) |
| Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)
|
|
static JPH_INLINE Mat44 | sOuterProduct (Vec3Arg inV1, Vec3Arg inV2) |
| Get outer product of inV and inV2 (equivalent to \(inV1 \otimes inV2\))
|
|
static JPH_INLINE Mat44 | sCrossProduct (Vec3Arg inV) |
| Get matrix that represents a cross product \(A \times B = \text{sCrossProduct}(A) \: B\).
|
|
static JPH_INLINE Mat44 | sQuatLeftMultiply (QuatArg inQ) |
| Returns matrix ML so that \(ML(q) \: p = q \: p\) (where p and q are quaternions)
|
|
static JPH_INLINE Mat44 | sQuatRightMultiply (QuatArg inQ) |
| Returns matrix MR so that \(MR(q) \: p = p \: q\) (where p and q are quaternions)
|
|
static JPH_INLINE Mat44 | sLookAt (Vec3Arg inPos, Vec3Arg inTarget, Vec3Arg inUp) |
|
static JPH_INLINE Mat44 | sPerspective (float inFovY, float inAspect, float inNear, float inFar) |
| Returns a right-handed perspective projection matrix.
|
|
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.