Horizon
Public Member Functions | Public Attributes | Friends | List of all members
MATRIX3x3< T > Class Template Reference

Class MATRIX3x3 describes a general 3x3 matrix. More...

#include <matrix3x3.h>

Public Member Functions

 MATRIX3x3 ()
 Constructor. More...
 
 MATRIX3x3 (T a00, T a01, T a02, T a10, T a11, T a12, T a20, T a21, T a22)
 Constructor. 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...
 
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

m_data [3][3]
 

Friends

std::ostream & operator (std::ostream &aStream, const MATRIX3x3< T > &aMatrix)
 Output to a stream.
 

Detailed Description

template<class T>
class MATRIX3x3< T >

Class 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.

Constructor & Destructor Documentation

◆ MATRIX3x3() [1/2]

template<class T >
MATRIX3x3< T >::MATRIX3x3 ( )

Constructor.

Initialize all matrix members to zero.

◆ MATRIX3x3() [2/2]

template<class T >
MATRIX3x3< T >::MATRIX3x3 ( a00,
a01,
a02,
a10,
a11,
a12,
a20,
a21,
a22 
)

Constructor.

Initialize with given matrix members

Parameters
a00is the component [0,0].
a01is the component [0,1].
a02is the component [0,2].
a10is the component [1,0].
a11is the component [1,1].
a12is the component [1,2].
a20is the component [2,0].
a21is the component [2,1].
a22is the component [2,2].

Member Function Documentation

◆ Determinant()

template<class T >
T MATRIX3x3< T >::Determinant ( ) const

Compute the determinant of the matrix.

Returns
the determinant value.

◆ GetScale()

template<class T >
VECTOR2< T > MATRIX3x3< T >::GetScale ( ) const

Get the scale components of the matrix.

Returns
the scale factors, specified as 2D-vector.

◆ GetTranslation()

template<class T >
VECTOR2< T > MATRIX3x3< T >::GetTranslation ( ) const

Get the translation components of the matrix.

Returns
is the translation (2D-vector).

◆ Inverse()

template<class T >
MATRIX3x3< T > MATRIX3x3< T >::Inverse ( ) const

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)

Returns
the inverse matrix.

◆ SetIdentity()

template<class T >
void MATRIX3x3< T >::SetIdentity ( void  )

Set the matrix to the identity matrix.

The diagonal components of the matrix are set to 1.

◆ SetRotation()

template<class T >
void MATRIX3x3< T >::SetRotation ( aAngle)

Set the rotation components of the matrix.

The angle needs to have a positive value for an anti-clockwise rotation.

Parameters
aAngleis the rotation angle in [rad].

◆ SetScale()

template<class T >
void MATRIX3x3< T >::SetScale ( VECTOR2< T >  aScale)

Set the scale components of the matrix.

Parameters
aScalecontains the scale factors, specified as 2D-vector.

◆ SetTranslation()

template<class T >
void MATRIX3x3< T >::SetTranslation ( VECTOR2< T >  aTranslation)

Set the translation components of the matrix.

Parameters
aTranslationis the translation, specified as 2D-vector.

◆ Transpose()

template<class T >
MATRIX3x3< T > MATRIX3x3< T >::Transpose ( ) const

Get the transpose of the matrix.

Returns
the transpose matrix.

The documentation for this class was generated from the following file: