#include <matrix.h>
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 |
Public Member Functions | |
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 | MAXON_OPERATOR_HASH (SqrMat3, v1, v2, v3) |
Public Attributes | |
V | v1 |
V | v2 |
V | v3 |
Friends | |
constexpr friend SqrMat3 | operator* (ValueTypeParam s, const SqrMat3 &m) |
using VectorStrideType = typename V::VectorStrideType |
using ValueType = typename V::ValueType |
using ValueTypeParam = typename ByValueParam<ValueType>::type |
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.
|
constexpr |
Default constructor, creates an identity matrix.
|
constexpr |
Initializes matrix from individual components.
Initializes matrix from another matrix.
|
explicitconstexpr |
Skips initialization of matrix (for better speed)
Initializes matrix from 2d matrix. v3 is assigned Cross(v1, v2).GetNormalized()
void SetIdentity | ( | ) |
Sets this matrix to an identity matrix.
V& operator[] | ( | Int | idx | ) |
const V& operator[] | ( | Int | idx | ) | 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
|
constexpr |
Transforms a vector by a matrix.
|
constexpr |
Scales all matrix components by a scalar value.
|
constexpr |
Divides all matrix components by a scalar value. If s is 0.0 an identity matrix will be returned.
Adds two matrices component-wise.
Subtracts two matrices component-wise.
Equality operator.
[in] | other | Comparison matrix. |
Inequality operator.
[in] | other | Comparison matrix. |
|
constexpr |
Computes the determinant of this matrix.
|
constexpr |
Calculates the inverse matrix If no inverse can be calculated the result is the Identity matrix
|
constexpr |
Normalizes the length of all three axes.
|
constexpr |
Returns this matrix with all axis vectors normalized.
|
constexpr |
Returns the transposed matrix.
|
constexpr |
|
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).
|
constexpr |
Scales each axis by the respective components of the passed vector.
|
constexpr |
Scales each axis by the scalar.
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. |
|
friend |
Scales all matrix components by a scalar value.
V v1 |
The X axis.
V v2 |
The Y axis.
V v3 |
The Z axis.