KiCad PCB EDA Suite
|
MATRIX3x3 describes a general 3x3 matrix. More...
#include <matrix3x3.h>
Public Member Functions | |
MATRIX3x3 () | |
Initialize all matrix members to zero. | |
MATRIX3x3 (VECTOR3< T > a1, VECTOR3< T > a2, VECTOR3< T > a3) | |
Initialize with 3 vectors. | |
MATRIX3x3 (T a00, T a01, T a02, T a10, T a11, T a12, T a20, T a21, T a22) | |
Initialize with given matrix members. | |
void | SetIdentity () |
Set the matrix to the identity matrix. | |
void | SetTranslation (VECTOR2< T > aTranslation) |
Set the translation components of the matrix. | |
VECTOR2< T > | GetTranslation () const |
Get the translation components of the matrix. | |
void | SetRotation (T aAngle) |
Set the rotation components of the matrix. | |
void | SetScale (VECTOR2< T > aScale) |
Set the scale components of the matrix. | |
VECTOR2< T > | GetScale () const |
Get the scale components of the matrix. | |
T | Determinant () const |
Compute the determinant of the matrix. | |
MATRIX3x3 | Inverse () const |
Determine the inverse of the matrix. | |
MATRIX3x3 | Transpose () const |
Get the transpose of the matrix. | |
bool | operator== (const MATRIX3x3< T > &aOtherMatrix) const |
Not equality operator. | |
bool | operator!= (const MATRIX3x3< T > &aOtherMatrix) const |
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.
Definition at line 62 of file matrix3x3.h.
MATRIX3x3< T >::MATRIX3x3 | ( | ) |
Initialize all matrix members to zero.
Definition at line 193 of file matrix3x3.h.
References m_data.
Referenced by Inverse(), operator!=(), operator<<, operator==(), and Transpose().
Initialize with 3 vectors.
Definition at line 206 of file matrix3x3.h.
References m_data, VECTOR3< T >::x, VECTOR3< T >::y, and VECTOR3< T >::z.
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]. |
Definition at line 223 of file matrix3x3.h.
Compute the determinant of the matrix.
Definition at line 351 of file matrix3x3.h.
Referenced by Inverse().
Get the scale components of the matrix.
Definition at line 295 of file matrix3x3.h.
References m_data, and result.
Referenced by DXF_IMPORT_PLUGIN::addArc(), KIGFX::SCH_PAINTER::drawAnchor(), KIGFX::SCH_PAINTER::getShadowWidth(), KIGFX::GAL::GetVisibleWorldExtents(), KIGFX::OPENGL_GAL::getWorldPixelSize(), KIGFX::VIEW::ToScreen(), KIGFX::VIEW::ToScreen(), KIGFX::VIEW::ToWorld(), KIGFX::VIEW::ToWorld(), ROUTER_STATUS_VIEW_ITEM::ViewDraw(), and TUNING_STATUS_VIEW_ITEM::ViewDraw().
Get the translation components of the matrix.
Definition at line 264 of file matrix3x3.h.
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)
Definition at line 384 of file matrix3x3.h.
References Determinant(), m_data, MATRIX3x3(), and result.
Definition at line 458 of file matrix3x3.h.
References m_data, and MATRIX3x3().
Not equality operator.
Definition at line 443 of file matrix3x3.h.
References m_data, and MATRIX3x3().
Set the matrix to the identity matrix.
The diagonal components of the matrix are set to 1.
Definition at line 240 of file matrix3x3.h.
References m_data.
Referenced by KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix(), and KIGFX::GAL::ComputeWorldScreenMatrix().
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]. |
Definition at line 275 of file matrix3x3.h.
Referenced by DXF_IMPORT_PLUGIN::addInsert(), KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix(), and KIGFX::GAL::ComputeWorldScreenMatrix().
Set the scale components of the matrix.
aScale | contains the scale factors, specified as 2D-vector. |
Definition at line 287 of file matrix3x3.h.
References m_data, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix(), and KIGFX::GAL::ComputeWorldScreenMatrix().
Set the translation components of the matrix.
aTranslation | is the translation, specified as 2D-vector. |
Definition at line 256 of file matrix3x3.h.
References m_data, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix(), and KIGFX::GAL::ComputeWorldScreenMatrix().
Get the transpose of the matrix.
Definition at line 405 of file matrix3x3.h.
References m_data, MATRIX3x3(), and result.
|
friend |
Output to a stream.
Equality operator
Definition at line 422 of file matrix3x3.h.
References m_data, and MATRIX3x3().
Definition at line 65 of file matrix3x3.h.
Referenced by Determinant(), GetScale(), GetTranslation(), Inverse(), MATRIX3x3(), MATRIX3x3(), MATRIX3x3(), operator!=(), operator*(), operator*(), operator*(), operator*(), operator<<, operator==(), SetIdentity(), SetRotation(), SetScale(), SetTranslation(), KIGFX::CAIRO_GAL_BASE::Transform(), KIGFX::OPENGL_GAL::Transform(), and Transpose().