|
Horizon
|
MATRIX3x3 describes a general 3x3 matrix. More...
Public Member Functions | |
| MATRIX3x3 () | |
| Initialize all matrix members to zero. | |
| MATRIX3x3 (T a00, T a01, T a02, T a10, T a11, T a12, T a20, T a21, T a22) | |
| Initialize with given matrix members. More... | |
| void | SetIdentity () |
| Set the matrix to the identity matrix. More... | |
| void | SetTranslation (VECTOR2< T > aTranslation) |
| Set the translation components of the matrix. More... | |
| VECTOR2< T > | GetTranslation () const |
| Get the translation components of the matrix. More... | |
| void | SetRotation (T aAngle) |
| Set the rotation components of the matrix. More... | |
| void | SetScale (VECTOR2< T > aScale) |
| Set the scale components of the matrix. More... | |
| VECTOR2< T > | GetScale () const |
| Get the scale components of the matrix. More... | |
| T | Determinant () const |
| Compute the determinant of the matrix. More... | |
| MATRIX3x3 | Inverse () const |
| Determine the inverse of the matrix. More... | |
| MATRIX3x3 | Transpose () const |
| Get the transpose of the matrix. More... | |
Public Attributes | |
| T | m_data [3][3] |
Friends | |
| std::ostream & | operator (std::ostream &aStream, const MATRIX3x3< T > &aMatrix) |
| Output to a stream. | |
MATRIX3x3 describes a general 3x3 matrix.
Any linear transformation in 2D can be represented by a homogeneous 3x3 transformation matrix. Given a vector x, the linear transformation with the transformation matrix M is given as
x' = M * x
To represent an affine transformation, homogeneous coordinates have to be used. That means the 2D-vector (x, y) has to be extended to a 3D-vector by a third component (x, y, 1).
Transformations can be easily combined by matrix multiplication.
A * (B * x ) = (A * B) * x ( A, B: transformation matrices, x: vector )
This class was implemented using templates, so flexible type combinations are possible.
| MATRIX3x3< T >::MATRIX3x3 | ( | T | a00, |
| T | a01, | ||
| T | a02, | ||
| T | a10, | ||
| T | a11, | ||
| T | a12, | ||
| T | a20, | ||
| T | a21, | ||
| T | a22 | ||
| ) |
Initialize with given matrix members.
| a00 | is the component [0,0]. |
| a01 | is the component [0,1]. |
| a02 | is the component [0,2]. |
| a10 | is the component [1,0]. |
| a11 | is the component [1,1]. |
| a12 | is the component [1,2]. |
| a20 | is the component [2,0]. |
| a21 | is the component [2,1]. |
| a22 | is the component [2,2]. |
| T MATRIX3x3< T >::Determinant |
Compute the determinant of the matrix.
Get the scale components of the matrix.
Get the translation components of the matrix.
Determine the inverse of the matrix.
The inverse of a transformation matrix can be used to revert a transformation.
x = Minv * ( M * x ) ( M: transformation matrix, Minv: inverse transformation matrix, x: vector)
| void MATRIX3x3< T >::SetIdentity | ( | void | ) |
Set the matrix to the identity matrix.
The diagonal components of the matrix are set to 1.
| void MATRIX3x3< T >::SetRotation | ( | T | aAngle | ) |
Set the rotation components of the matrix.
The angle needs to have a positive value for an anti-clockwise rotation.
| aAngle | is the rotation angle in [rad]. |
Set the scale components of the matrix.
| aScale | contains the scale factors, specified as 2D-vector. |
Set the translation components of the matrix.
| aTranslation | is the translation, specified as 2D-vector. |
Get the transpose of the matrix.