Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::mat4< T > Class Template Reference

#include <MathMatrices.h>

Public Member Functions

 mat4 () noexcept
 
template<typename U >
 mat4 (U m0, U m1, U m2, U m3, U m4, U m5, U m6, U m7, U m8, U m9, U m10, U m11, U m12, U m13, U m14, U m15) noexcept
 
template<typename U >
 mat4 (U value) noexcept
 
template<typename U >
 mat4 (const U *values) noexcept
 
template<typename U >
 mat4 (const mat2< U > &B, bool zeroFill) noexcept
 
template<typename U >
 mat4 (const mat3< U > &B, bool zeroFill) noexcept
 
 mat4 (const mat4 &B) noexcept
 
template<typename U >
 mat4 (const mat4< U > &B) noexcept
 
template<typename U >
 mat4 (const vec3< U > &translation, const vec3< U > &scale) noexcept
 
template<typename U >
 mat4 (const vec3< U > &translation, const vec3< U > &scale, const mat3< U > &rotation) noexcept
 
template<typename U >
 mat4 (const vec3< U > &translation) noexcept
 
template<typename U >
 mat4 (U translationX, U translationY, U translationZ) noexcept
 
template<typename U >
 mat4 (const vec3< U > &axis, Angle::RADIANS< U > angle) noexcept
 
template<typename U >
 mat4 (U x, U y, U z, Angle::RADIANS< U > angle) noexcept
 
template<typename U >
 mat4 (const Plane< U > &reflectionPlane) noexcept
 
template<typename U >
vec2< U > operator* (const vec2< U > v) const noexcept
 
template<typename U >
vec3< U > operator* (const vec3< U > &v) const noexcept
 
template<typename U >
vec4< U > operator* (const vec4< U > &v) const noexcept
 
template<typename U >
mat4 operator* (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4 operator/ (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4 operator+ (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4 operator- (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4operator*= (const mat4< U > &matrix) noexcept
 
template<typename U >
mat4operator/= (const mat4< U > &matrix) noexcept
 
template<typename U >
mat4operator+= (const mat4< U > &matrix) noexcept
 
template<typename U >
mat4operator-= (const mat4< U > &matrix) noexcept
 
template<typename U >
mat4 operator* (U f) const noexcept
 
template<typename U >
mat4 operator/ (U f) const noexcept
 
template<typename U >
mat4 operator+ (U f) const noexcept
 
template<typename U >
mat4 operator- (U f) const noexcept
 
template<typename U >
mat4operator*= (U f) noexcept
 
template<typename U >
mat4operator/= (U f) noexcept
 
template<typename U >
mat4operator+= (U f) noexcept
 
template<typename U >
mat4operator-= (U f) noexcept
 
bool operator== (const mat4 &B) const noexcept
 
bool operator!= (const mat4 &B) const noexcept
 
template<typename U >
bool operator== (const mat4< U > &B) const noexcept
 
template<typename U >
bool operator!= (const mat4< U > &B) const noexcept
 
bool compare (const mat4 &B, F32 epsilon) const noexcept
 
template<typename U >
bool compare (const mat4< U > &B, F32 epsilon) const noexcept
 
 operator T* () noexcept
 
 operator const T * () const noexcept
 
T & operator[] (I32 i) noexcept
 
const T & operator[] (I32 i) const noexcept
 
T & element (U8 row, U8 column) noexcept
 
const T & element (U8 row, U8 column) const noexcept
 
void set (std::initializer_list< T > matrix) noexcept
 
template<typename U >
void set (U const *matrix) noexcept
 
template<typename U >
void set (const mat2< U > &matrix) noexcept
 
template<typename U >
void set (const mat3< U > &matrix) noexcept
 
template<typename U >
void set (const mat4< U > &matrix) noexcept
 
template<typename U >
void set (const vec3< U > &translation, const vec3< U > &scale, const mat4< U > &rotation) noexcept
 
template<typename U >
void setRow (I32 index, U value) noexcept
 
template<typename U >
void setRow (I32 index, const vec4< U > &value) noexcept
 
template<typename U >
void setRow (I32 index, U x, U y, U z, U w) noexcept
 
const vec4< T > & getRow (I32 index) const noexcept
 
template<typename U >
void setCol (I32 index, const vec4< U > &value) noexcept
 
template<typename U >
void setCol (I32 index, U value) noexcept
 
template<typename U >
void setCol (I32 index, U x, U y, U z, U w) noexcept
 
vec4< T > getCol (I32 index) const noexcept
 
void zero () noexcept
 
void identity () noexcept
 
bool isIdentity () const noexcept
 
bool isUniformScale (F32 tolerance=0.0001f) const noexcept
 
bool isColOrthogonal () const noexcept
 
void swap (mat4 &B) noexcept
 
det () const noexcept
 
elementSum () const noexcept
 
void orthoNormalize () noexcept
 
void inverse () noexcept
 
void transpose () noexcept
 
void inverseTranspose () noexcept
 
mat4 transposeRotation () const noexcept
 
mat4 getInverse () const noexcept
 
void getInverse (mat4 &ret) const noexcept
 
mat4 getTranspose () const noexcept
 
void getTranspose (mat4 &out) const noexcept
 
mat4 getInverseTranspose () const noexcept
 
void getInverseTranspose (mat4 &ret) const noexcept
 
mat4 getTransposeRotation () const noexcept
 
void getTransposeRotation (mat4 &ret) const noexcept
 
template<typename U >
void fromRotation (U x, U y, U z, Angle::RADIANS< U > angle) noexcept
 
template<typename U >
void fromXRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
void fromYRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
void fromZRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
void setTranslation (const vec3< U > &v) noexcept
 
template<typename U >
void setTranslation (U x, U y, U z) noexcept
 
template<typename U >
void setScale (U x, U y, U z) noexcept
 
template<typename U >
void setScale (const vec3< U > &v) noexcept
 
vec3< T > getScale () const noexcept
 
vec3< T > getScaleSq () const noexcept
 
vec3< T > getRightVec () const noexcept
 Alias for getCol(0)
 
vec3< T > getUpVec () const noexcept
 Alias for getCol(1)
 
vec3< T > getForwardVec () const noexcept
 Alias for -getCol(2). Assumes -Z fwd.
 
vec3< T > getRightDirection () const noexcept
 Returns normalized(getRightVec())
 
vec3< T > getUpDirection () const noexcept
 Returns normalized(getUpVec())
 
vec3< T > getForwardDirection () const noexcept
 Returns normalized(getForwardVec())
 
template<typename U >
vec3< U > transform (const vec3< U > &v, bool homogeneous) const
 
template<typename U >
vec3< U > transformHomogeneous (const vec3< U > &v) const
 
template<typename U >
vec3< U > transformNonHomogeneous (const vec3< U > &v) const noexcept
 
template<typename U >
void translate (const vec3< U > &v) noexcept
 
template<typename U >
void translate (U x, U y, U z) noexcept
 
template<typename U >
void scale (const vec3< U > &v) noexcept
 
template<typename U >
void scale (U x, U y, U z) noexcept
 
vec3< T > getTranslation () const noexcept
 
mat4 getRotation () const
 
template<typename U >
const mat4reflect (U x, U y, U z, U w) noexcept
 
template<typename U >
const mat4reflect (const Plane< U > &plane) noexcept
 
template<typename U >
void extractMat3 (mat3< U > &matrix3) const noexcept
 
template<typename U >
FORCE_INLINE vec2< U > operator* (const vec2< U > v) const noexcept
 
template<typename U >
FORCE_INLINE vec3< U > operator* (const vec3< U > &v) const noexcept
 
template<typename U >
FORCE_INLINE vec4< U > operator* (const vec4< U > &v) const noexcept
 
template<typename U >
mat4< T > operator* (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4< T > operator/ (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4< T > operator+ (const mat4< U > &matrix) const noexcept
 
template<typename U >
mat4< T > operator- (const mat4< U > &matrix) const noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator*= (const mat4< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator/= (const mat4< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator+= (const mat4< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator-= (const mat4< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > operator* (const U f) const noexcept
 
template<typename U >
FORCE_INLINE mat4< T > operator/ (const U f) const noexcept
 
template<typename U >
FORCE_INLINE mat4< T > operator+ (const U f) const noexcept
 
template<typename U >
FORCE_INLINE mat4< T > operator- (const U f) const noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator*= (const U f) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator/= (const U f) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator+= (const U f) noexcept
 
template<typename U >
FORCE_INLINE mat4< T > & operator-= (const U f) noexcept
 
template<typename U >
FORCE_INLINE bool compare (const mat4< U > &B, F32 epsilon) const noexcept
 
template<typename U >
FORCE_INLINE void set (U const *matrix) noexcept
 
template<typename U >
FORCE_INLINE void set (const mat2< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE void set (const mat3< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE void set (const mat4< U > &matrix) noexcept
 
template<typename U >
FORCE_INLINE void setRow (I32 index, const U value) noexcept
 
template<typename U >
FORCE_INLINE void setRow (I32 index, const vec4< U > &value) noexcept
 
template<typename U >
FORCE_INLINE void setRow (I32 index, const U x, const U y, const U z, const U w) noexcept
 
template<typename U >
FORCE_INLINE void setCol (I32 index, const vec4< U > &value) noexcept
 
template<typename U >
FORCE_INLINE void setCol (I32 index, const U value) noexcept
 
template<typename U >
FORCE_INLINE void setCol (I32 index, const U x, const U y, const U z, const U w) noexcept
 
void inverse () noexcept
 
mat4< F32getInverse () const noexcept
 
FORCE_INLINE void getInverse (mat4< F32 > &ret) const noexcept
 
mat4< F32getInverseTranspose () const noexcept
 
FORCE_INLINE void getInverseTranspose (mat4< F32 > &ret) const noexcept
 
template<typename U >
FORCE_INLINE void fromXRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
FORCE_INLINE void fromYRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
FORCE_INLINE void fromZRotation (Angle::RADIANS< U > angle) noexcept
 
template<typename U >
FORCE_INLINE void setTranslation (const vec3< U > &v) noexcept
 
template<typename U >
FORCE_INLINE void setTranslation (U x, U y, U z) noexcept
 
template<typename U >
FORCE_INLINE void setScale (U x, U y, U z) noexcept
 
template<typename U >
FORCE_INLINE void setScale (const vec3< U > &v) noexcept
 
template<typename U >
FORCE_INLINE vec3< U > transform (const vec3< U > &v, bool homogeneous) const
 
template<typename U >
FORCE_INLINE vec3< U > transformHomogeneous (const vec3< U > &v) const
 
template<typename U >
FORCE_INLINE vec3< U > transformNonHomogeneous (const vec3< U > &v) const noexcept
 
template<typename U >
FORCE_INLINE void translate (const vec3< U > &v) noexcept
 
template<typename U >
FORCE_INLINE void translate (U x, U y, U z) noexcept
 
template<typename U >
FORCE_INLINE const mat4< T > & reflect (U x, U y, U z, U w) noexcept
 
template<typename U >
const mat4< T > & reflect (const Plane< U > &plane) noexcept
 
FORCE_INLINE void Multiply (const mat4< F32 > &matrixA, const mat4< F32 > &matrixB, mat4< F32 > &ret) noexcept
 

Static Public Member Functions

static mat4< T > Multiply (const mat4< T > &matrixA, const mat4< T > &matrixB) noexcept
 ret = A * B
 
static void Multiply (const mat4< T > &matrixA, const mat4< T > &matrixB, mat4< T > &ret) noexcept
 ret = A * B
 
static void Inverse (const T *in, T *out) noexcept
 

Public Attributes

union {
   struct {
      T   _11
 
      T   _12
 
      T   _13
 
      T   _14
 
      T   _21
 
      T   _22
 
      T   _23
 
      T   _24
 
      T   _31
 
      T   _32
 
      T   _33
 
      T   _34
 
      T   _41
 
      T   _42
 
      T   _43
 
      T   _44
 
   } 
 
   T   mat [16]
 
   T   m [4][4]
 
   vec4< T >   _vec [4]
 
   SimdVector< T >   _reg [4]
 
}; 
 

Detailed Description

template<typename T>
class Divide::mat4< T >

Definition at line 465 of file MathMatrices.h.

Constructor & Destructor Documentation

◆ mat4() [1/15]

template<typename T >
Divide::mat4< T >::mat4
noexcept

Definition at line 1667 of file MathMatrices.inl.

◆ mat4() [2/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( m0,
m1,
m2,
m3,
m4,
m5,
m6,
m7,
m8,
m9,
m10,
m11,
m12,
m13,
m14,
m15 
)
noexcept

Definition at line 1687 of file MathMatrices.inl.

◆ mat4() [3/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( value)
explicitnoexcept

Definition at line 1677 of file MathMatrices.inl.

◆ mat4() [4/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const U *  values)
explicitnoexcept

Definition at line 1700 of file MathMatrices.inl.

◆ mat4() [5/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const mat2< U > &  B,
bool  zeroFill 
)
explicitnoexcept

Definition at line 1710 of file MathMatrices.inl.

◆ mat4() [6/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const mat3< U > &  B,
bool  zeroFill 
)
explicitnoexcept

Definition at line 1720 of file MathMatrices.inl.

◆ mat4() [7/15]

template<typename T >
Divide::mat4< T >::mat4 ( const mat4< T > &  B)
noexcept

Definition at line 1729 of file MathMatrices.inl.

◆ mat4() [8/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const mat4< U > &  B)
explicitnoexcept

Definition at line 1736 of file MathMatrices.inl.

◆ mat4() [9/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const vec3< U > &  translation,
const vec3< U > &  scale 
)
explicitnoexcept

Definition at line 1743 of file MathMatrices.inl.

◆ mat4() [10/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const vec3< U > &  translation,
const vec3< U > &  scale,
const mat3< U > &  rotation 
)
explicitnoexcept

Definition at line 1753 of file MathMatrices.inl.

◆ mat4() [11/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const vec3< U > &  translation)
explicitnoexcept

Definition at line 1766 of file MathMatrices.inl.

◆ mat4() [12/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( translationX,
translationY,
translationZ 
)
explicitnoexcept

Definition at line 1773 of file MathMatrices.inl.

◆ mat4() [13/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const vec3< U > &  axis,
Angle::RADIANS< U >  angle 
)
explicitnoexcept

Definition at line 1783 of file MathMatrices.inl.

◆ mat4() [14/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( x,
y,
z,
Angle::RADIANS< U >  angle 
)
explicitnoexcept

Definition at line 1790 of file MathMatrices.inl.

◆ mat4() [15/15]

template<typename T >
template<typename U >
Divide::mat4< T >::mat4 ( const Plane< U > &  reflectionPlane)
explicitnoexcept

Definition at line 1798 of file MathMatrices.inl.

Member Function Documentation

◆ compare() [1/3]

template<typename T >
FORCE_INLINE bool Divide::mat4< T >::compare ( const mat4< T > &  B,
F32  epsilon 
) const
noexcept

Definition at line 2048 of file MathMatrices.inl.

◆ compare() [2/3]

template<typename T >
template<typename U >
bool Divide::mat4< T >::compare ( const mat4< U > &  B,
F32  epsilon 
) const
noexcept

◆ compare() [3/3]

template<typename T >
template<typename U >
FORCE_INLINE bool Divide::mat4< T >::compare ( const mat4< U > &  B,
F32  epsilon 
) const
noexcept

Definition at line 2063 of file MathMatrices.inl.

◆ det()

template<typename T >
FORCE_INLINE T Divide::mat4< T >::det
noexcept

Definition at line 2291 of file MathMatrices.inl.

◆ element() [1/2]

template<typename T >
FORCE_INLINE const T & Divide::mat4< T >::element ( U8  row,
U8  column 
) const
noexcept

Definition at line 2107 of file MathMatrices.inl.

◆ element() [2/2]

template<typename T >
FORCE_INLINE T & Divide::mat4< T >::element ( U8  row,
U8  column 
)
noexcept

Definition at line 2101 of file MathMatrices.inl.

◆ elementSum()

template<typename T >
FORCE_INLINE T Divide::mat4< T >::elementSum
noexcept

Definition at line 2299 of file MathMatrices.inl.

◆ extractMat3()

template<typename T >
template<typename U >
void Divide::mat4< T >::extractMat3 ( mat3< U > &  matrix3) const
noexcept

Definition at line 2735 of file MathMatrices.inl.

◆ fromRotation()

template<typename T >
template<typename U >
void Divide::mat4< T >::fromRotation ( x,
y,
z,
Angle::RADIANS< U >  angle 
)
noexcept

Definition at line 2458 of file MathMatrices.inl.

◆ fromXRotation() [1/2]

template<typename T >
template<typename U >
void Divide::mat4< T >::fromXRotation ( Angle::RADIANS< U >  angle)
noexcept

◆ fromXRotation() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::fromXRotation ( Angle::RADIANS< U >  angle)
noexcept

Definition at line 2484 of file MathMatrices.inl.

◆ fromYRotation() [1/2]

template<typename T >
template<typename U >
void Divide::mat4< T >::fromYRotation ( Angle::RADIANS< U >  angle)
noexcept

◆ fromYRotation() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::fromYRotation ( Angle::RADIANS< U >  angle)
noexcept

Definition at line 2497 of file MathMatrices.inl.

◆ fromZRotation() [1/2]

template<typename T >
template<typename U >
void Divide::mat4< T >::fromZRotation ( Angle::RADIANS< U >  angle)
noexcept

◆ fromZRotation() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::fromZRotation ( Angle::RADIANS< U >  angle)
noexcept

Definition at line 2510 of file MathMatrices.inl.

◆ getCol()

template<typename T >
FORCE_INLINE vec4< T > Divide::mat4< T >::getCol ( I32  index) const
noexcept

Definition at line 2233 of file MathMatrices.inl.

◆ getForwardDirection()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getForwardDirection
noexcept

Returns normalized(getForwardVec())

Definition at line 2605 of file MathMatrices.inl.

◆ getForwardVec()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getForwardVec
noexcept

Alias for -getCol(2). Assumes -Z fwd.

Definition at line 2586 of file MathMatrices.inl.

◆ getInverse() [1/4]

template<typename T >
mat4< T > Divide::mat4< T >::getInverse
noexcept

Definition at line 2361 of file MathMatrices.inl.

◆ getInverse() [2/4]

mat4< F32 > Divide::mat4< F32 >::getInverse ( ) const
inlinenoexcept

Definition at line 2369 of file MathMatrices.inl.

◆ getInverse() [3/4]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::getInverse ( mat4< T > &  ret) const
noexcept

Definition at line 2377 of file MathMatrices.inl.

◆ getInverse() [4/4]

FORCE_INLINE void Divide::mat4< F32 >::getInverse ( mat4< F32 > &  ret) const
noexcept

Definition at line 2383 of file MathMatrices.inl.

◆ getInverseTranspose() [1/4]

template<typename T >
mat4< T > Divide::mat4< T >::getInverseTranspose
noexcept

Definition at line 2407 of file MathMatrices.inl.

◆ getInverseTranspose() [2/4]

mat4< F32 > Divide::mat4< F32 >::getInverseTranspose ( ) const
inlinenoexcept

Definition at line 2416 of file MathMatrices.inl.

◆ getInverseTranspose() [3/4]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::getInverseTranspose ( mat4< T > &  ret) const
noexcept

Definition at line 2425 of file MathMatrices.inl.

◆ getInverseTranspose() [4/4]

FORCE_INLINE void Divide::mat4< F32 >::getInverseTranspose ( mat4< F32 > &  ret) const
noexcept

Definition at line 2432 of file MathMatrices.inl.

◆ getRightDirection()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getRightDirection
noexcept

Returns normalized(getRightVec())

Definition at line 2593 of file MathMatrices.inl.

◆ getRightVec()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getRightVec
noexcept

Alias for getCol(0)

Definition at line 2574 of file MathMatrices.inl.

◆ getRotation()

template<typename T >
mat4< T > Divide::mat4< T >::getRotation

Definition at line 2691 of file MathMatrices.inl.

◆ getRow()

template<typename T >
FORCE_INLINE const vec4< T > & Divide::mat4< T >::getRow ( I32  index) const
noexcept

Definition at line 2200 of file MathMatrices.inl.

◆ getScale()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getScale
noexcept

Definition at line 2554 of file MathMatrices.inl.

◆ getScaleSq()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getScaleSq
noexcept

Definition at line 2564 of file MathMatrices.inl.

◆ getTranslation()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getTranslation
noexcept

Definition at line 2681 of file MathMatrices.inl.

◆ getTranspose() [1/2]

template<typename T >
FORCE_INLINE mat4< T > Divide::mat4< T >::getTranspose
noexcept

Definition at line 2389 of file MathMatrices.inl.

◆ getTranspose() [2/2]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::getTranspose ( mat4< T > &  out) const
noexcept

Definition at line 2398 of file MathMatrices.inl.

◆ getTransposeRotation() [1/2]

template<typename T >
mat4< T > Divide::mat4< T >::getTransposeRotation
noexcept

Definition at line 2439 of file MathMatrices.inl.

◆ getTransposeRotation() [2/2]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::getTransposeRotation ( mat4< T > &  ret) const
noexcept

Definition at line 2448 of file MathMatrices.inl.

◆ getUpDirection()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getUpDirection
noexcept

Returns normalized(getUpVec())

Definition at line 2599 of file MathMatrices.inl.

◆ getUpVec()

template<typename T >
FORCE_INLINE vec3< T > Divide::mat4< T >::getUpVec
noexcept

Alias for getCol(1)

Definition at line 2580 of file MathMatrices.inl.

◆ identity()

template<typename T >
FORCE_INLINE void Divide::mat4< T >::identity
noexcept

Definition at line 2250 of file MathMatrices.inl.

◆ inverse() [1/2]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::inverse
noexcept

Definition at line 2316 of file MathMatrices.inl.

◆ inverse() [2/2]

void Divide::mat4< F32 >::inverse ( )
inlinenoexcept

Definition at line 2322 of file MathMatrices.inl.

◆ Inverse()

template<typename T >
void Divide::mat4< T >::Inverse ( const T *  in,
T *  out 
)
staticnoexcept

Definition at line 2790 of file MathMatrices.inl.

◆ inverseTranspose()

template<typename T >
void Divide::mat4< T >::inverseTranspose
noexcept

Definition at line 2341 of file MathMatrices.inl.

◆ isColOrthogonal()

template<typename T >
bool Divide::mat4< T >::isColOrthogonal
noexcept

Definition at line 2270 of file MathMatrices.inl.

◆ isIdentity()

template<typename T >
FORCE_INLINE bool Divide::mat4< T >::isIdentity
noexcept

Definition at line 2258 of file MathMatrices.inl.

◆ isUniformScale()

template<typename T >
FORCE_INLINE bool Divide::mat4< T >::isUniformScale ( F32  tolerance = 0.0001f) const
noexcept

Definition at line 2264 of file MathMatrices.inl.

◆ Multiply() [1/3]

FORCE_INLINE void Divide::mat4< F32 >::Multiply ( const mat4< F32 > &  matrixA,
const mat4< F32 > &  matrixB,
mat4< F32 > &  ret 
)
noexcept

Definition at line 2770 of file MathMatrices.inl.

◆ Multiply() [2/3]

template<typename T >
mat4< T > Divide::mat4< T >::Multiply ( const mat4< T > &  matrixA,
const mat4< T > &  matrixB 
)
staticnoexcept

ret = A * B

Definition at line 2762 of file MathMatrices.inl.

◆ Multiply() [3/3]

template<typename T >
void Divide::mat4< T >::Multiply ( const mat4< T > &  matrixA,
const mat4< T > &  matrixB,
mat4< T > &  ret 
)
staticnoexcept

ret = A * B

Definition at line 2749 of file MathMatrices.inl.

◆ operator const T *()

template<typename T >
FORCE_INLINE Divide::mat4< T >::operator const T *
noexcept

Definition at line 2083 of file MathMatrices.inl.

◆ operator T*()

template<typename T >
FORCE_INLINE Divide::mat4< T >::operator T*
noexcept

Definition at line 2077 of file MathMatrices.inl.

◆ operator!=() [1/2]

template<typename T >
bool Divide::mat4< T >::operator!= ( const mat4< T > &  B) const
noexcept

Definition at line 1990 of file MathMatrices.inl.

◆ operator!=() [2/2]

template<typename T >
template<typename U >
bool Divide::mat4< T >::operator!= ( const mat4< U > &  B) const
noexcept

Definition at line 2027 of file MathMatrices.inl.

◆ operator*() [1/10]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator* ( const mat4< U > &  matrix) const
noexcept

◆ operator*() [2/10]

template<typename T >
template<typename U >
mat4< T > Divide::mat4< T >::operator* ( const mat4< U > &  matrix) const
noexcept

Definition at line 1830 of file MathMatrices.inl.

◆ operator*() [3/10]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > Divide::mat4< T >::operator* ( const U  f) const
noexcept

Definition at line 1901 of file MathMatrices.inl.

◆ operator*() [4/10]

template<typename T >
template<typename U >
vec2< U > Divide::mat4< T >::operator* ( const vec2< U >  v) const
noexcept

◆ operator*() [5/10]

template<typename T >
template<typename U >
FORCE_INLINE vec2< U > Divide::mat4< T >::operator* ( const vec2< U >  v) const
noexcept

Definition at line 1806 of file MathMatrices.inl.

◆ operator*() [6/10]

template<typename T >
template<typename U >
vec3< U > Divide::mat4< T >::operator* ( const vec3< U > &  v) const
noexcept

◆ operator*() [7/10]

template<typename T >
template<typename U >
FORCE_INLINE vec3< U > Divide::mat4< T >::operator* ( const vec3< U > &  v) const
noexcept

Definition at line 1813 of file MathMatrices.inl.

◆ operator*() [8/10]

template<typename T >
template<typename U >
vec4< U > Divide::mat4< T >::operator* ( const vec4< U > &  v) const
noexcept

◆ operator*() [9/10]

template<typename T >
template<typename U >
FORCE_INLINE vec4< U > Divide::mat4< T >::operator* ( const vec4< U > &  v) const
noexcept

Definition at line 1820 of file MathMatrices.inl.

◆ operator*() [10/10]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator* ( f) const
noexcept

◆ operator*=() [1/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator*= ( const mat4< U > &  matrix)
noexcept

◆ operator*=() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator*= ( const mat4< U > &  matrix)
noexcept

Definition at line 1862 of file MathMatrices.inl.

◆ operator*=() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator*= ( const U  f)
noexcept

Definition at line 1929 of file MathMatrices.inl.

◆ operator*=() [4/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator*= ( f)
noexcept

◆ operator+() [1/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator+ ( const mat4< U > &  matrix) const
noexcept

◆ operator+() [2/4]

template<typename T >
template<typename U >
mat4< T > Divide::mat4< T >::operator+ ( const mat4< U > &  matrix) const
noexcept

Definition at line 1848 of file MathMatrices.inl.

◆ operator+() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > Divide::mat4< T >::operator+ ( const U  f) const
noexcept

Definition at line 1915 of file MathMatrices.inl.

◆ operator+() [4/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator+ ( f) const
noexcept

◆ operator+=() [1/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator+= ( const mat4< U > &  matrix)
noexcept

◆ operator+=() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator+= ( const mat4< U > &  matrix)
noexcept

Definition at line 1878 of file MathMatrices.inl.

◆ operator+=() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator+= ( const U  f)
noexcept

Definition at line 1953 of file MathMatrices.inl.

◆ operator+=() [4/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator+= ( f)
noexcept

◆ operator-() [1/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator- ( const mat4< U > &  matrix) const
noexcept

◆ operator-() [2/4]

template<typename T >
template<typename U >
mat4< T > Divide::mat4< T >::operator- ( const mat4< U > &  matrix) const
noexcept

Definition at line 1855 of file MathMatrices.inl.

◆ operator-() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > Divide::mat4< T >::operator- ( const U  f) const
noexcept

Definition at line 1922 of file MathMatrices.inl.

◆ operator-() [4/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator- ( f) const
noexcept

◆ operator-=() [1/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator-= ( const mat4< U > &  matrix)
noexcept

◆ operator-=() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator-= ( const mat4< U > &  matrix)
noexcept

Definition at line 1889 of file MathMatrices.inl.

◆ operator-=() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator-= ( const U  f)
noexcept

Definition at line 1965 of file MathMatrices.inl.

◆ operator-=() [4/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator-= ( f)
noexcept

◆ operator/() [1/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator/ ( const mat4< U > &  matrix) const
noexcept

◆ operator/() [2/4]

template<typename T >
template<typename U >
mat4< T > Divide::mat4< T >::operator/ ( const mat4< U > &  matrix) const
noexcept

Definition at line 1839 of file MathMatrices.inl.

◆ operator/() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > Divide::mat4< T >::operator/ ( const U  f) const
noexcept

Definition at line 1908 of file MathMatrices.inl.

◆ operator/() [4/4]

template<typename T >
template<typename U >
mat4 Divide::mat4< T >::operator/ ( f) const
noexcept

◆ operator/=() [1/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator/= ( const mat4< U > &  matrix)
noexcept

◆ operator/=() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator/= ( const mat4< U > &  matrix)
noexcept

Definition at line 1870 of file MathMatrices.inl.

◆ operator/=() [3/4]

template<typename T >
template<typename U >
FORCE_INLINE mat4< T > & Divide::mat4< T >::operator/= ( const U  f)
noexcept

Definition at line 1941 of file MathMatrices.inl.

◆ operator/=() [4/4]

template<typename T >
template<typename U >
mat4 & Divide::mat4< T >::operator/= ( f)
noexcept

◆ operator==() [1/2]

template<typename T >
bool Divide::mat4< T >::operator== ( const mat4< T > &  B) const
noexcept

Definition at line 1976 of file MathMatrices.inl.

◆ operator==() [2/2]

template<typename T >
template<typename U >
bool Divide::mat4< T >::operator== ( const mat4< U > &  B) const
noexcept

Definition at line 2005 of file MathMatrices.inl.

◆ operator[]() [1/2]

template<typename T >
FORCE_INLINE const T & Divide::mat4< T >::operator[] ( I32  i) const
noexcept

Definition at line 2095 of file MathMatrices.inl.

◆ operator[]() [2/2]

template<typename T >
FORCE_INLINE T & Divide::mat4< T >::operator[] ( I32  i)
noexcept

Definition at line 2089 of file MathMatrices.inl.

◆ orthoNormalize()

template<typename T >
FORCE_INLINE void Divide::mat4< T >::orthoNormalize
noexcept

Definition at line 2308 of file MathMatrices.inl.

◆ reflect() [1/4]

template<typename T >
template<typename U >
const mat4 & Divide::mat4< T >::reflect ( const Plane< U > &  plane)
noexcept

◆ reflect() [2/4]

template<typename T >
template<typename U >
const mat4< T > & Divide::mat4< T >::reflect ( const Plane< U > &  plane)
noexcept

Definition at line 2713 of file MathMatrices.inl.

◆ reflect() [3/4]

template<typename T >
template<typename U >
const mat4 & Divide::mat4< T >::reflect ( x,
y,
z,
w 
)
noexcept

◆ reflect() [4/4]

template<typename T >
template<typename U >
FORCE_INLINE const mat4< T > & Divide::mat4< T >::reflect ( x,
y,
z,
w 
)
noexcept

Definition at line 2706 of file MathMatrices.inl.

◆ scale() [1/2]

template<typename T >
template<typename U >
void Divide::mat4< T >::scale ( const vec3< U > &  v)
noexcept

Definition at line 2657 of file MathMatrices.inl.

◆ scale() [2/2]

template<typename T >
template<typename U >
void Divide::mat4< T >::scale ( x,
y,
z 
)
noexcept

Definition at line 2664 of file MathMatrices.inl.

◆ set() [1/10]

template<typename T >
template<typename U >
void Divide::mat4< T >::set ( const mat2< U > &  matrix)
noexcept

◆ set() [2/10]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::set ( const mat2< U > &  matrix)
noexcept

Definition at line 2137 of file MathMatrices.inl.

◆ set() [3/10]

template<typename T >
template<typename U >
void Divide::mat4< T >::set ( const mat3< U > &  matrix)
noexcept

◆ set() [4/10]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::set ( const mat3< U > &  matrix)
noexcept

Definition at line 2147 of file MathMatrices.inl.

◆ set() [5/10]

template<typename T >
template<typename U >
void Divide::mat4< T >::set ( const mat4< U > &  matrix)
noexcept

◆ set() [6/10]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::set ( const mat4< U > &  matrix)
noexcept

Definition at line 2159 of file MathMatrices.inl.

◆ set() [7/10]

template<typename T >
template<typename U >
void Divide::mat4< T >::set ( const vec3< U > &  translation,
const vec3< U > &  scale,
const mat4< U > &  rotation 
)
noexcept

Definition at line 2166 of file MathMatrices.inl.

◆ set() [8/10]

template<typename T >
FORCE_INLINE void Divide::mat4< T >::set ( std::initializer_list< T >  matrix)
noexcept

Definition at line 2113 of file MathMatrices.inl.

◆ set() [9/10]

template<typename T >
template<typename U >
void Divide::mat4< T >::set ( U const *  matrix)
noexcept

◆ set() [10/10]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::set ( U const *  matrix)
noexcept

Definition at line 2120 of file MathMatrices.inl.

◆ setCol() [1/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setCol ( I32  index,
const U  value 
)
noexcept

Definition at line 2214 of file MathMatrices.inl.

◆ setCol() [2/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setCol ( I32  index,
const U  x,
const U  y,
const U  z,
const U  w 
)
noexcept

Definition at line 2224 of file MathMatrices.inl.

◆ setCol() [3/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setCol ( I32  index,
const vec4< U > &  value 
)
noexcept

◆ setCol() [4/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setCol ( I32  index,
const vec4< U > &  value 
)
noexcept

Definition at line 2207 of file MathMatrices.inl.

◆ setCol() [5/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setCol ( I32  index,
value 
)
noexcept

◆ setCol() [6/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setCol ( I32  index,
x,
y,
z,
w 
)
noexcept

◆ setRow() [1/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setRow ( I32  index,
const U  value 
)
noexcept

Definition at line 2180 of file MathMatrices.inl.

◆ setRow() [2/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setRow ( I32  index,
const U  x,
const U  y,
const U  z,
const U  w 
)
noexcept

Definition at line 2194 of file MathMatrices.inl.

◆ setRow() [3/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setRow ( I32  index,
const vec4< U > &  value 
)
noexcept

◆ setRow() [4/6]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setRow ( I32  index,
const vec4< U > &  value 
)
noexcept

Definition at line 2187 of file MathMatrices.inl.

◆ setRow() [5/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setRow ( I32  index,
value 
)
noexcept

◆ setRow() [6/6]

template<typename T >
template<typename U >
void Divide::mat4< T >::setRow ( I32  index,
x,
y,
z,
w 
)
noexcept

◆ setScale() [1/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::setScale ( const vec3< U > &  v)
noexcept

◆ setScale() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setScale ( const vec3< U > &  v)
noexcept

Definition at line 2548 of file MathMatrices.inl.

◆ setScale() [3/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::setScale ( x,
y,
z 
)
noexcept

◆ setScale() [4/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setScale ( x,
y,
z 
)
noexcept

Definition at line 2539 of file MathMatrices.inl.

◆ setTranslation() [1/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::setTranslation ( const vec3< U > &  v)
noexcept

◆ setTranslation() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setTranslation ( const vec3< U > &  v)
noexcept

Definition at line 2523 of file MathMatrices.inl.

◆ setTranslation() [3/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::setTranslation ( x,
y,
z 
)
noexcept

◆ setTranslation() [4/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::setTranslation ( x,
y,
z 
)
noexcept

Definition at line 2530 of file MathMatrices.inl.

◆ swap()

template<typename T >
void Divide::mat4< T >::swap ( mat4< T > &  B)
noexcept

Definition at line 2282 of file MathMatrices.inl.

◆ transform() [1/2]

template<typename T >
template<typename U >
vec3< U > Divide::mat4< T >::transform ( const vec3< U > &  v,
bool  homogeneous 
) const

◆ transform() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE vec3< U > Divide::mat4< T >::transform ( const vec3< U > &  v,
bool  homogeneous 
) const

Definition at line 2613 of file MathMatrices.inl.

◆ transformHomogeneous() [1/2]

template<typename T >
template<typename U >
vec3< U > Divide::mat4< T >::transformHomogeneous ( const vec3< U > &  v) const

◆ transformHomogeneous() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE vec3< U > Divide::mat4< T >::transformHomogeneous ( const vec3< U > &  v) const

Definition at line 2621 of file MathMatrices.inl.

◆ transformNonHomogeneous() [1/2]

template<typename T >
template<typename U >
vec3< U > Divide::mat4< T >::transformNonHomogeneous ( const vec3< U > &  v) const
noexcept

◆ transformNonHomogeneous() [2/2]

template<typename T >
template<typename U >
FORCE_INLINE vec3< U > Divide::mat4< T >::transformNonHomogeneous ( const vec3< U > &  v) const
noexcept

Definition at line 2634 of file MathMatrices.inl.

◆ translate() [1/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::translate ( const vec3< U > &  v)
noexcept

◆ translate() [2/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::translate ( const vec3< U > &  v)
noexcept

Definition at line 2641 of file MathMatrices.inl.

◆ translate() [3/4]

template<typename T >
template<typename U >
void Divide::mat4< T >::translate ( x,
y,
z 
)
noexcept

◆ translate() [4/4]

template<typename T >
template<typename U >
FORCE_INLINE void Divide::mat4< T >::translate ( x,
y,
z 
)
noexcept

Definition at line 2648 of file MathMatrices.inl.

◆ transpose()

template<typename T >
FORCE_INLINE void Divide::mat4< T >::transpose
noexcept

Definition at line 2330 of file MathMatrices.inl.

◆ transposeRotation()

template<typename T >
FORCE_INLINE mat4< T > Divide::mat4< T >::transposeRotation
noexcept

Definition at line 2349 of file MathMatrices.inl.

◆ zero()

template<typename T >
FORCE_INLINE void Divide::mat4< T >::zero
noexcept

Definition at line 2244 of file MathMatrices.inl.

Member Data Documentation

◆ 

union { ... } Divide::mat4< T >::@9

◆ _11

template<typename T >
T Divide::mat4< T >::_11

Definition at line 702 of file MathMatrices.h.

◆ _12

template<typename T >
T Divide::mat4< T >::_12

Definition at line 702 of file MathMatrices.h.

◆ _13

template<typename T >
T Divide::mat4< T >::_13

Definition at line 702 of file MathMatrices.h.

◆ _14

template<typename T >
T Divide::mat4< T >::_14

Definition at line 702 of file MathMatrices.h.

◆ _21

template<typename T >
T Divide::mat4< T >::_21

Definition at line 703 of file MathMatrices.h.

◆ _22

template<typename T >
T Divide::mat4< T >::_22

Definition at line 703 of file MathMatrices.h.

◆ _23

template<typename T >
T Divide::mat4< T >::_23

Definition at line 703 of file MathMatrices.h.

◆ _24

template<typename T >
T Divide::mat4< T >::_24

Definition at line 703 of file MathMatrices.h.

◆ _31

template<typename T >
T Divide::mat4< T >::_31

Definition at line 704 of file MathMatrices.h.

◆ _32

template<typename T >
T Divide::mat4< T >::_32

Definition at line 704 of file MathMatrices.h.

◆ _33

template<typename T >
T Divide::mat4< T >::_33

Definition at line 704 of file MathMatrices.h.

◆ _34

template<typename T >
T Divide::mat4< T >::_34

Definition at line 704 of file MathMatrices.h.

◆ _41

template<typename T >
T Divide::mat4< T >::_41

Definition at line 705 of file MathMatrices.h.

◆ _42

template<typename T >
T Divide::mat4< T >::_42

Definition at line 705 of file MathMatrices.h.

◆ _43

template<typename T >
T Divide::mat4< T >::_43

Definition at line 705 of file MathMatrices.h.

◆ _44

template<typename T >
T Divide::mat4< T >::_44

Definition at line 705 of file MathMatrices.h.

◆ _reg

template<typename T >
SimdVector<T> Divide::mat4< T >::_reg[4]

Definition at line 710 of file MathMatrices.h.

◆ _vec

template<typename T >
vec4<T> Divide::mat4< T >::_vec[4]

Definition at line 709 of file MathMatrices.h.

◆ m

template<typename T >
T Divide::mat4< T >::m[4][4]

Definition at line 708 of file MathMatrices.h.

◆ mat

template<typename T >
T Divide::mat4< T >::mat[16]

Definition at line 707 of file MathMatrices.h.


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