#include <vector.h>
Matrix.
The matrix has a dimension of 4×4 and consists of four rows and four columns. The first row is always "1, 0, 0, 0" and not stored in the class, which means that there are 12 actual numbers used. These numbers are grouped into four vectors, one for the remaining numbers in each column. The four vectors are called off, v1, v2 and v3, together these four vectors can be used to represent the coordinate system. A coordinate system consists of three axes, one for each coordinate (X, Y and Z). The system also has a base position, from which the three axes originate. This base position is stored in off, and the three axis vectors are stored in v1, v2 and v3 respectively. For a rectangular, normalized matrix v3 equals the cross product of v1 and v2 (v1v2). C4D by default uses a left-handed coordinate system (see define COORDINATESYSTEM_LEFT_HANDED).
Public Types | |
using | ValueType = typename V::ValueType |
using | ValueTypeParam = typename ByValueParam< ValueType >::type |
using | BoolType = typename V::BoolType |
Public Member Functions | |
Mat3 () | |
Mat3 (const V &off_in, const V &v1_in, const V &v2_in, const V &v3_in) | |
Mat3 (const V &off_in, const SqMat3< V > &mat_in) | |
MAXON_IMPLICIT | Mat3 (const SqMat3< V > &mat_in) |
template<typename V2 > | |
Mat3 (const Mat3< V2 > &m) | |
Mat3 (ENUM_DONT_INITIALIZE v) | |
template<typename V2 > | |
Mat3 (const Mat2< V2 > &m) | |
void | SetIdentity () |
template<typename V2 > | |
Mat3< typename MultiplicativePromotion< V, typename V2::ValueType >::type > | operator* (const Mat3< V2 > &m2) const |
template<typename V2 > | |
Mat3< typename MultiplicativePromotion< V, typename V2::ValueType >::type > | operator* (const SqMat3< V2 > &m2) const |
template<typename T , Int S> | |
Vec3< typename MultiplicativePromotion< ValueType, T >::type, 1 > | operator* (const Vec3< T, S > &v) const |
Mat3 | operator* (ValueTypeParam s) const |
Mat3 | operator/ (ValueTypeParam s) const |
BoolType | operator== (const Mat3 &other) const |
BoolType | operator!= (const Mat3 &other) const |
Mat3 | operator~ () const |
Mat3 | GetNormalized () const |
String | ToString (const FormatStatement *formatStatement) const |
UInt | GetHashCode () const |
Static Public Member Functions | |
static const Mat3 & | NullValue () |
Public Attributes | |
V | off |
SqMat3< V > | sqmat |
Friends | |
Mat3 | operator* (ValueTypeParam s, const Mat3 &m) |
Mat3 | Min (const Mat3 &a, const Mat3 &other) |
Mat3 | Max (const Mat3 &a, const Mat3 &other) |
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.
Mat3 | ( | ) |
Default constructor, creates an identity matrix.
Mat3 | ( | const V & | off_in, |
const V & | v1_in, | ||
const V & | v2_in, | ||
const V & | v3_in | ||
) |
Initializes matrix from individual components.
Initializes matrix from individual components.
MAXON_IMPLICIT Mat3 | ( | const SqMat3< V > & | mat_in | ) |
Initializes matrix from square matrix. The translation part is initialized to zero.
|
explicit |
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.
Mat3<typename MultiplicativePromotion<V, typename V2::ValueType>::type> operator* | ( | const Mat3< V2 > & | m2 | ) | const |
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
Mat3<typename MultiplicativePromotion<V, typename V2::ValueType>::type> operator* | ( | const SqMat3< V2 > & | m2 | ) | const |
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
Vec3<typename MultiplicativePromotion<ValueType, T>::type, 1> operator* | ( | const Vec3< T, S > & | v | ) | const |
Transforms a point by a matrix.
Mat3 operator* | ( | ValueTypeParam | s | ) | const |
Scales all matrix components by a scalar value.
Mat3 operator/ | ( | ValueTypeParam | s | ) | const |
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. |
Mat3 operator~ | ( | ) | const |
Calculates the inverse matrix If no inverse can be calculated the result is the Identity matrix
Mat3 GetNormalized | ( | ) | const |
Returns this matrix with all axis vectors normalized.
String ToString | ( | const FormatStatement * | formatStatement | ) | const |
Returns a readable string of the content.
[in] | formatStatement | Nullptr or additional formatting instruction. See also format_float. |
UInt GetHashCode | ( | ) | const |
Returns the hash code of the matrix (used for hash maps and comparisons).
|
static |
Returns a null value of the matrix (see nullvalue.h for more details).
|
friend |
Scales all matrix components by a scalar value.
Calculates the minimum of each component.
Calculates the maximum of each component.
V off |
The translation vector.
SqMat3<V> sqmat |
The 3×3 matrix for rotation, scale and shear.