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.