SqrMat3< V > Struct Template Reference

#include <matrix.h>

详细描述

template<typename V>
struct maxon::SqrMat3< V >

General 3×3 matrix template consisting of three column vectors v1, v2, v3.

Public Types

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

公共成员函数

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

静态公共成员函数

static constexpr const SqrMat3 NullValue ()

Public Attributes

v1
v2
v3

Friends

constexpr friend SqrMat3   operator* ( ValueTypeParam s, const SqrMat3 &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.

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

◆  SqrMat3() [1/5]

constexpr SqrMat3 ( )
constexpr

Default constructor, creates an identity matrix.

◆  SqrMat3() [2/5]

constexpr SqrMat3 ( const V &  v1_in ,
const V &  v2_in ,
const V &  v3_in  
)
constexpr

Initializes matrix from individual components.

◆  SqrMat3() [3/5]

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

Initializes matrix from another matrix.

◆  SqrMat3() [4/5]

constexpr SqrMat3 ( ENUM_DONT_INITIALIZE   v )
explicit constexpr

Skips initialization of matrix (for better speed)

◆  SqrMat3() [5/5]

constexpr SqrMat3 ( const SqrMat2 < V2 > &  m )
explicit constexpr

Initializes matrix from 2d matrix. v3 is assigned Cross(v1, v2). GetNormalized()

成员函数文档编制

◆  SetIdentity()

void SetIdentity ( )

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.

◆  operator*() [1/3]

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

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

◆  operator*() [2/3]

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

Transforms a vector by a matrix.

◆  operator*() [3/3]

constexpr SqrMat3 operator* ( ValueTypeParam   s ) const
constexpr

Scales all matrix components by a scalar value.

◆  operator/()

constexpr SqrMat3 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 SqrMat3 operator+ ( const SqrMat3 < V > &  m2 ) const
constexpr

Adds two matrices component-wise.

◆  operator-()

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

Subtracts two matrices component-wise.

◆  operator==()

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

Equality operator.

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

◆  operator!=()

constexpr BoolType operator!= ( const SqrMat3 < 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 SqrMat3 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 three axes.

◆  GetNormalized()

constexpr SqrMat3 GetNormalized ( ) const
constexpr

Returns this matrix with all axis vectors normalized.

◆  GetTransposed()

constexpr SqrMat3 GetTransposed ( ) const
constexpr

Returns the transposed matrix.

◆  GetScale()

constexpr V GetScale ( ) const
constexpr

◆  GetTensorMatrix()

constexpr SqrMat3 GetTensorMatrix ( ) const
constexpr

Calculates the tensor matrix which allows to transform normal vectors for non-orthogonal matrices. The tensor matrix T of a matrix M is given by T = inverse(transpose(M)) * det(M), and its computation is faster than that of the inverse transpose. To transform a normal with a normalized result, use the formula transformedNormal = !(matrix.GetTensorMatrix() * normal).

◆  operator*=() [1/2]

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

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

◆  operator*=() [2/2]

constexpr SqrMat3 & 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 SqrMat3 & NullValue ( )
static constexpr

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

返回
A null value of the matrix.

Friends And Related Function Documentation

◆  operator*

constexpr friend SqrMat3 operator* ( ValueTypeParam   s ,
const SqrMat3 < 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.