Matrices

About

The matrix classes of the MAXON API are based on these generic matrix templates:

Classes

2D Matrices

maxon::Mat2 based matrices contains these members:

maxon::Mat2 based matrix classes are:

maxon::SqrMat2 based matrix classes are:

3D Matrices

maxon::Mat3 based matrices contains these members:

maxon::Mat3 based matrix classes are:

maxon::SqrMat3 based matrix classes are:

4D Matrices

maxon::SqrMat4 based matrix classes are:

Creation

A new matrix object is simply created using the above matrix classes. It is can easily be configured with SetIdentity():

// This example creates a matrix and prints its data to the debug console.
maxon::Matrix matrix;
matrix.SetIdentity();
DiagnosticOutput("V1: @", matrix.sqmat.v1);
DiagnosticOutput("V2: @", matrix.sqmat.v2);
DiagnosticOutput("V3: @", matrix.sqmat.v3);
DiagnosticOutput("Off: @", matrix.off);
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:170
constexpr void SetIdentity()
Sets this matrix to an identity matrix.
Definition: matrix.h:290
V off
The translation vector.
Definition: matrix.h:263
SqrMat3< V > sqmat
The 3×3 matrix for rotation, scale and shear.
Definition: matrix.h:266

The following operators can be applied to a matrix:

// This example uses the given matrix to transform a point.
maxon::Vector point(10, 10, 10);
// apply matrix
point = matrix * point;
DiagnosticOutput("New Point: @", point);

Further utility functions are:

  • maxon::Mat3::ToString(): Returns a string representation of the matrix.
  • maxon::Mat3::GetHashCode(): Returns a hash value of the matrix.

Special functions of maxon::SqrMat2, maxon::SqrMat3 and maxon::SqrMat4 are:

Special functions of maxon::SqrMat3 and maxon::SqrMat4 are:

Utility

These utility functions are used to create transformation matrices:

// This example creates a scale matrix and uses it to transform a given point.
const maxon::Vector scale(1.0, 10.0, 1.0);
maxon::Matrix matrix;
matrix.sqmat = maxon::GetScaleMatrix(scale);
// scale
point = matrix * point;
DiagnosticOutput("New Point: @", point);
SqrMat3< Vec3< FLOAT > > GetScaleMatrix(const Vec3< FLOAT > &scale)
Calculates a matrix to scale.

Further Reading