SqrMat4< V > Struct Template Reference

#include <vector.h>

Public Types

using  VectorStrideType = typename V::VectorStrideType
using  ValueType = typename V::ValueType
using  ValueTypeParam = typename ByValueParam < ValueType >::type
using  BoolType = typename V::BoolType

公共成员函数

constexpr  SqrMat4 ()
constexpr  SqrMat4 (const V &v1_in, const V &v2_in, const V &v3_in, const V &v4_in)
template<typename V2 >
constexpr  SqrMat4 (const SqrMat4 < V2 > &m)
template<typename V2 >
constexpr  SqrMat4 (const Mat3 < V2 > &m)
constexpr  SqrMat4 ( ENUM_DONT_INITIALIZE v)
constexpr void  SetIdentity ()
V &  operator[] ( Int idx)
const V &  operator[] ( Int idx) const
constexpr Mat3 < Vec3 < ValueType , 1 > >  GetMatrix3d ()
template<typename V2 >
constexpr SqrMat4 < typename MultiplicativePromotion < V, typename V2::ValueType >::type >  operator* (const SqrMat4 < V2 > &m2) const
template<typename T , Int S>
constexpr Vec4 < typename MultiplicativePromotion < ValueType , T >::type, 1 >  operator* (const Vec4 < T, S > &v) const
template<typename T , Int S>
constexpr Vec3 < typename MultiplicativePromotion < ValueType , T >::type, 1 >  operator* (const Vec3 < T, S > &v) const
constexpr SqrMat4   operator* ( ValueTypeParam s) const
constexpr SqrMat4   operator/ ( ValueTypeParam s) const
constexpr SqrMat4   operator+ (const SqrMat4 &m2) const
constexpr SqrMat4   operator- (const SqrMat4 &m2) const
constexpr BoolType   operator== (const SqrMat4 &other) const
constexpr BoolType   operator!= (const SqrMat4 &other) const
constexpr ValueType   Det () const
constexpr SqrMat4   operator~ () const
constexpr void  Normalize ()
constexpr SqrMat4   GetNormalized () const
constexpr SqrMat4   GetTransposed () const
constexpr SqrMat4 operator*= (const V &v)
constexpr SqrMat4 operator*= ( ValueTypeParam r)
String   ToString (const FormatStatement *formatStatement=nullptr) const
constexpr HashInt   GetHashCode () const

静态公共成员函数

static constexpr const SqrMat4 NullValue ()

Public Attributes

v1
v2
v3
v4

Static Private Member Functions

static constexpr ValueType   Det3 ( ValueType a1, ValueType a2, ValueType a3, ValueType b1, ValueType b2, ValueType b3, ValueType c1, ValueType c2, ValueType c3)

Friends

constexpr friend SqrMat4   operator* ( ValueTypeParam s, const SqrMat4 &m)

Member Typedef Documentation

◆  VectorStrideType

using VectorStrideType = typename V::VectorStrideType

◆  ValueType

using ValueType = typename V::ValueType

◆  ValueTypeParam

using ValueTypeParam = typename ByValueParam < ValueType >::type

◆  BoolType

using BoolType = typename V::BoolType

The type returned by comparisons. If the template argument for V is a vector of SIMD components, this will be a SIMD type, too, which contains the per-element results.

构造函数 & 析构函数文档编制

◆  SqrMat4() [1/5]

constexpr SqrMat4 ( )
constexpr

Default constructor, creates an identity matrix.

◆  SqrMat4() [2/5]

constexpr SqrMat4 ( const V &  v1_in ,
const V &  v2_in ,
const V &  v3_in ,
const V &  v4_in  
)
constexpr

Initializes matrix from individual components.

◆  SqrMat4() [3/5]

constexpr SqrMat4 ( const SqrMat4 < V2 > &  m )
explicit constexpr

Initializes matrix from another matrix.

◆  SqrMat4() [4/5]

constexpr SqrMat4 ( const Mat3 < V2 > &  m )
explicit constexpr

Initializes matrix from another matrix.

◆  SqrMat4() [5/5]

constexpr SqrMat4 ( ENUM_DONT_INITIALIZE   v )
explicit constexpr

Skips initialization of matrix (for better speed)

成员函数文档编制

◆  SetIdentity()

constexpr void SetIdentity ( )
constexpr

Sets this matrix to an identity matrix.

◆  operator[]() [1/2]

V& operator[] ( Int   idx )

Array (subscript) operator for index access to the matrix components.

参数
[in] idx Element index (if it's out of bounds you will get an error in debug code only, otherwise it will crash).
返回
Matrix component.

◆  operator[]() [2/2]

const V& operator[] ( Int   idx ) const

Array (subscript) operator for const index access to the matrix components.

参数
[in] idx Element index (if it's out of bounds you will get an error in debug code only, otherwise it will crash).
返回
Matrix component.

◆  GetMatrix3d()

constexpr Mat3 < Vec3 < ValueType , 1> > GetMatrix3d ( )
constexpr

◆  operator*() [1/4]

constexpr SqrMat4 <typename MultiplicativePromotion <V, typename V2::ValueType>::type> operator* ( const SqrMat4 < V2 > &  m2 ) const
constexpr

Multiplies two matrices. The rule is m1 AFTER m2 If you transform a vector with the result matrix this is identical to first transforming with m2 and then with m1

◆  operator*() [2/4]

constexpr Vec4 <typename MultiplicativePromotion < ValueType , T>::type, 1> operator* ( const Vec4 < T, S > &  v ) const
constexpr

Multiplies a 4d vector by a matrix.

◆  operator*() [3/4]

constexpr Vec3 <typename MultiplicativePromotion < ValueType , T>::type, 1> operator* ( const Vec3 < T, S > &  v ) const
constexpr

Transforms a 3d vector by a matrix.

◆  operator*() [4/4]

constexpr SqrMat4 operator* ( ValueTypeParam   s ) const
constexpr

Scales all matrix components by a scalar value.

◆  operator/()

constexpr SqrMat4 operator/ ( ValueTypeParam   s ) const
constexpr

Divides all matrix components by a scalar value. If s is 0.0 an identity matrix will be returned.

◆  operator+()

constexpr SqrMat4 operator+ ( const SqrMat4 < V > &  m2 ) const
constexpr

Adds two matrices component-wise.

◆  operator-()

constexpr SqrMat4 operator- ( const SqrMat4 < V > &  m2 ) const
constexpr

Subtracts two matrices component-wise.

◆  operator==()

constexpr BoolType operator== ( const SqrMat4 < V > &  other ) const
constexpr

Equality operator.

参数
[in] other Comparison matrix.
返回
True if this and other are equal, otherwise false.

◆  operator!=()

constexpr BoolType operator!= ( const SqrMat4 < V > &  other ) const
constexpr

Inequality operator.

参数
[in] other Comparison matrix.
返回
False if this and other are equal, otherwise true.

◆  Det()

constexpr ValueType Det ( ) const
constexpr

Computes the determinant of this matrix.

◆  operator~()

constexpr SqrMat4 operator~ ( ) const
constexpr

Calculates the inverse matrix If no inverse can be calculated the result is the Identity matrix

◆  Normalize()

constexpr void Normalize ( )
constexpr

Normalizes the length of all four axes.

◆  GetNormalized()

constexpr SqrMat4 GetNormalized ( ) const
constexpr

Returns this matrix with all vectors normalized.

◆  GetTransposed()

constexpr SqrMat4 GetTransposed ( ) const
constexpr

Returns the transposed matrix.

◆  operator*=() [1/2]

constexpr SqrMat4 & operator*= ( const V &  v )
constexpr

Scales each axis by the respective components of the passed vector.

◆  operator*=() [2/2]

constexpr SqrMat4 & operator*= ( ValueTypeParam   r )
constexpr

Scales each axis by the scalar.

◆  ToString()

String ToString ( const FormatStatement formatStatement = nullptr ) const

Returns a readable string of the content.

参数
[in] formatStatement Nullptr or additional formatting instruction. See also Formatting Floating point values .
返回
The converted result.

◆  GetHashCode()

constexpr HashInt GetHashCode ( ) const
constexpr

Returns the hash code of the matrix (used for hash maps and comparisons).

返回
The matrix' hash code.

◆  NullValue()

static constexpr const SqrMat4 & NullValue ( )
static constexpr

Returns a null value of the matrix (see nullvalue.h for more details).

返回
A null value of the matrix.

◆  Det3()

static constexpr ValueType Det3 ( ValueType   a1 ,
ValueType   a2 ,
ValueType   a3 ,
ValueType   b1 ,
ValueType   b2 ,
ValueType   b3 ,
ValueType   c1 ,
ValueType   c2 ,
ValueType   c3  
)
static constexpr private

Friends And Related Function Documentation

◆  operator*

constexpr friend SqrMat4 operator* ( ValueTypeParam   s ,
const SqrMat4 < V > &  m  
)
friend

Scales all matrix components by a scalar value.

Member Data Documentation

◆  v1

V v1

The X axis.

◆  v2

V v2

The Y axis.

◆  v3

V v3

The Z axis.

◆  v4

V v4

The W axis.