#include <matrix2d.h>
General 2d Matrix template. The matrix has a dimension of 3×3 and consists of three rows and three columns. The first row is always "1, 0, 0" and not stored in the class, which means that there are 6 actual numbers used. These numbers are grouped into three vectors, one for the remaining numbers in each column. The three vectors are called off, v1 and v2, together these three vectors can be used to represent the coordinate system. A coordinate system consists of two axes, one for each coordinate (X and Y). The system also has a base position, from which the two axes originate. This base position is stored in off, and the two axis vectors are stored in v1 and v2 respectively
Public Types | |
using | ValueType = typename V::ValueType |
using | ValueTypeParam = typename ByValueParam< ValueType >::type |
using | BoolType = typename V::BoolType |
Public Member Functions | |
constexpr | Mat2 () |
constexpr | Mat2 (const V &off_in, const V &v1_in, const V &v2_in) |
constexpr | Mat2 (const V &off_in, const SqrMat2< V > &mat_in) |
constexpr MAXON_IMPLICIT | Mat2 (const SqrMat2< V > &mat_in) |
template<typename V2 > | |
constexpr | Mat2 (const Mat2< V2 > &m) |
constexpr | Mat2 (ENUM_DONT_INITIALIZE v) |
constexpr void | SetIdentity () |
template<typename V2 > | |
constexpr Mat2< typename MultiplicativePromotion< V, typename V2::ValueType >::type > | operator* (const Mat2< V2 > &m2) const |
template<typename V2 > | |
constexpr Mat2< typename MultiplicativePromotion< V, typename V2::ValueType >::type > | operator* (const SqrMat2< V2 > &m2) const |
template<typename T , Int S> | |
constexpr Vec2< typename MultiplicativePromotion< ValueType, T >::type, 1 > | operator* (const Vec2< T, S > &v) const |
constexpr Mat2 | operator* (ValueTypeParam s) const |
constexpr Mat2 | operator/ (ValueTypeParam s) const |
constexpr BoolType | operator== (const Mat2 &other) const |
constexpr BoolType | operator!= (const Mat2 &other) const |
constexpr Mat2 | operator~ () const |
constexpr Mat2 | GetNormalized () const |
String | ToString (const FormatStatement *formatStatement=nullptr) const |
constexpr | MAXON_OPERATOR_HASH (Mat2, sqmat, off) |
Public Attributes | |
V | off |
SqrMat2< V > | sqmat |
Friends | |
constexpr friend Mat2 | operator* (ValueTypeParam s, const Mat2 &m) |
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 individual components.
|
constexpr |
Initializes matrix from square matrix. The translation part is initialized to zero.
|
explicitconstexpr |
Skips initialization of matrix (for better speed)
|
constexpr |
Sets this matrix to an identity matrix.
|
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 |
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 point 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.
Equality operator.
[in] | other | Comparison matrix. |
Inequality operator.
[in] | other | Comparison matrix. |
|
constexpr |
Calculates the inverse matrix If no inverse can be calculated the result is the Identity matrix
|
constexpr |
Returns this matrix with all axis vectors normalized.
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 off |
The translation vector.
SqrMat2<V> sqmat |
The 2×2 matrix for rotation, scale and shear.