![]() |
XII Release 0.1.0
|
Copyright (c) Theophilus Eriata. All Rights Reserved. More...
#include <Mat3.h>
Public Types | |
| using | ComponentType = Type |
Public Member Functions | |
| XII_DECLARE_POD_TYPE () | |
| XII_ALWAYS_INLINE Type & | Element (xiiInt32 iColumn, xiiInt32 iRow) |
| XII_ALWAYS_INLINE Type | Element (xiiInt32 iColumn, xiiInt32 iRow) const |
| xiiMat3Template () | |
| Default Constructor DOES NOT INITIALIZE the matrix, at all. | |
| xiiMat3Template (const Type *const pData, xiiMatrixLayout::Enum layout) | |
| xiiMat3Template (Type c1r1, Type c2r1, Type c3r1, Type c1r2, Type c2r2, Type c3r2, Type c1r3, Type c2r3, Type c3r3) | |
| Sets each element manually: Naming is "column-n row-m". | |
| void | GetAsArray (Type *out_pData, xiiMatrixLayout::Enum layout) const |
| void | SetZero () |
| Sets all elements to zero. | |
| void | SetIdentity () |
| Sets all elements to zero, except the diagonal, which is set to one. | |
| void | Transpose () |
| Transposes this matrix. | |
| const xiiMat3Template< Type > | GetTranspose () const |
| Returns the transpose of this matrix. | |
| xiiResult | Invert (Type fEpsilon=xiiMath::SmallEpsilon< Type >()) |
| Inverts this matrix. Return value indicates whether the matrix could be Inverted. | |
| const xiiMat3Template< Type > | GetInverse (Type fEpsilon=xiiMath::SmallEpsilon< Type >()) const |
| Returns the inverse of this matrix. | |
| bool | IsZero (Type fEpsilon=xiiMath::DefaultEpsilon< Type >()) const |
| Checks whether all elements are zero. | |
| bool | IsIdentity (Type fEpsilon=xiiMath::DefaultEpsilon< Type >()) const |
| Checks whether this is an identity matrix. | |
| bool | IsValid () const |
| Checks whether all components are finite numbers. | |
| bool | IsNaN () const |
| Checks whether any component is NaN. | |
| xiiVec3Template< Type > | GetRow (xiiUInt32 uiRow) const |
| Returns all 3 components of the i-th row. | |
| void | SetRow (xiiUInt32 uiRow, const xiiVec3Template< Type > &vRow) |
| Sets all 3 components of the i-th row. | |
| xiiVec3Template< Type > | GetColumn (xiiUInt32 uiColumn) const |
| Returns all 3 components of the i-th column. | |
| void | SetColumn (xiiUInt32 uiColumn, const xiiVec3Template< Type > &vColumn) |
| Sets all 3 components of the i-th column. | |
| xiiVec3Template< Type > | GetDiagonal () const |
| Returns all 3 components on the diagonal of the matrix. | |
| void | SetDiagonal (const xiiVec3Template< Type > &vDiag) |
| Sets all 3 components on the diagonal of the matrix. | |
| const xiiVec3Template< Type > | GetScalingFactors () const |
| Returns the 3 scaling factors that are encoded in the matrix. | |
| xiiResult | SetScalingFactors (const xiiVec3Template< Type > &vXYZ, Type fEpsilon=xiiMath::DefaultEpsilon< Type >()) |
| Type | GetDeterminant () const |
| Computes the determinant of the matrix. | |
| const xiiVec3Template< Type > | TransformDirection (const xiiVec3Template< Type > &v) const |
| Matrix-vector multiplication, assuming the 4th component of the vector is zero. So, rotation/scaling only. Useful as an optimization. | |
| void | operator*= (Type f) |
| Component-wise multiplication (commutative). | |
| void | operator/= (Type f) |
| Component-wise division. | |
| bool | IsIdentical (const xiiMat3Template< Type > &rhs) const |
| Equality Check. | |
| bool | IsEqual (const xiiMat3Template< Type > &rhs, Type fEpsilon) const |
| Equality Check with epsilon. | |
Static Public Member Functions | |
| static xiiMat3Template< Type > | MakeZero () |
| Returns a zero matrix. | |
| static xiiMat3Template< Type > | MakeIdentity () |
| Returns an identity matrix. | |
| static xiiMat3Template< Type > | MakeFromRowMajorArray (const Type *const pData) |
| Creates a matrix from 9 values that are in row-major layout. | |
| static xiiMat3Template< Type > | MakeFromColumnMajorArray (const Type *const pData) |
| Creates a matrix from 9 values that are in column-major layout. | |
| static xiiMat3Template< Type > | MakeFromValues (Type c1r1, Type c2r1, Type c3r1, Type c1r2, Type c2r2, Type c3r2, Type c1r3, Type c2r3, Type c3r3) |
| Creates a matrix from 9 values. Naming is "column-n row-m". | |
| static xiiMat3Template< Type > | MakeScaling (const xiiVec3Template< Type > &vScale) |
| Creates a matrix with all zero values, except along the diagonal, which is set to x,y,z. | |
| static xiiMat3Template< Type > | MakeRotationX (xiiAngleTemplate< Type > angle) |
| Creates a matrix that is a rotation matrix around the X-axis. | |
| static xiiMat3Template< Type > | MakeRotationY (xiiAngleTemplate< Type > angle) |
| Creates a matrix that is a rotation matrix around the Y-axis. | |
| static xiiMat3Template< Type > | MakeRotationZ (xiiAngleTemplate< Type > angle) |
| Creates a matrix that is a rotation matrix around the Z-axis. | |
| static xiiMat3Template< Type > | MakeAxisRotation (const xiiVec3Template< Type > &vAxis, xiiAngleTemplate< Type > angle) |
| Creates a matrix that is a rotation matrix around the given axis. | |
Public Attributes | |
| Type | m_fElementsCM [9] |
| The matrix as a 9-element Type array (column-major). | |
Copyright (c) Theophilus Eriata. All Rights Reserved.
A 3x3 component matrix class.
| xiiMat3Template< Type >::xiiMat3Template | ( | ) |
Default Constructor DOES NOT INITIALIZE the matrix, at all.
Copyright (c) Theophilus Eriata. All Rights Reserved.
| xiiMat3Template< Type >::xiiMat3Template | ( | const Type *const | pData, |
| xiiMatrixLayout::Enum | layout ) |
Copies 9 values from pData into the matrix. Can handle the data in row-major or column-major order.
| pData | The array of Type values from which to set the matrix data. |
| layout | The layout in which pData stores the matrix. The data will get transposed, if necessary. The data should be in column-major format, if you want to prevent unnecessary transposes. |
| void xiiMat3Template< Type >::GetAsArray | ( | Type * | out_pData, |
| xiiMatrixLayout::Enum | layout ) const |
Copies the 9 values of this matrix into the given array. 'layout' defines whether the data should end up in column-major or row-major format.
| xiiResult xiiMat3Template< Type >::SetScalingFactors | ( | const xiiVec3Template< Type > & | vXYZ, |
| Type | fEpsilon = xiiMath::DefaultEpsilon<Type>() ) |
Tries to set the three scaling factors in the matrix. Returns XII_FAILURE if the matrix columns cannot be normalized and thus no rescaling is possible.