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.
Initialize with 3 vectors.
Definition at line 206 of file matrix3x3.h.
References 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.
Get the scale components of the matrix.
Definition at line 295 of file matrix3x3.h.
Referenced by DXF_IMPORT_PLUGIN::addArc(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::drawAnchor(), KIGFX::SCH_PAINTER::getOperatingPointTextSize(), KIGFX::SCH_PAINTER::getShadowWidth(), KIGFX::GAL::GetVisibleWorldExtents(), KIGFX::OPENGL_GAL::getWorldPixelSize(), KIGFX::VIEW::ToScreen(), KIGFX::VIEW::ToWorld(), TUNING_STATUS_VIEW_ITEM::ViewDraw(), and ROUTER_STATUS_VIEW_ITEM::ViewDraw().
Get the translation components of the matrix.
Definition at line 264 of file matrix3x3.h.
References VECTOR2< T >::x, and VECTOR2< T >::y.
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 MATRIX3x3< T >::m_data.
Referenced by KIGFX::GAL::ComputeWorldScreenMatrix(), and KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix().
Definition at line 458 of file matrix3x3.h.
References MATRIX3x3< T >::m_data.
Not equality operator.
Definition at line 443 of file matrix3x3.h.
References MATRIX3x3< T >::m_data.
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.
Referenced by KIGFX::GAL::ComputeWorldScreenMatrix(), and KIGFX::CAIRO_PRINT_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.
References T.
Referenced by DXF_IMPORT_PLUGIN::addInsert(), KIGFX::GAL::ComputeWorldScreenMatrix(), and KIGFX::CAIRO_PRINT_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 VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by KIGFX::GAL::ComputeWorldScreenMatrix(), and KIGFX::CAIRO_PRINT_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 VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by KIGFX::GAL::ComputeWorldScreenMatrix(), and KIGFX::CAIRO_PRINT_GAL::ComputeWorldScreenMatrix().
Get the transpose of the matrix.
Definition at line 405 of file matrix3x3.h.
References MATRIX3x3< T >::m_data.
|
friend |
Output to a stream.
Equality operator
Definition at line 65 of file matrix3x3.h.
Referenced by KIGFX::OPENGL_GAL::BeginDrawing(), MATRIX3x3< T >::Inverse(), MATRIX3x3< T >::operator!=(), operator*(), operator<<(), MATRIX3x3< T >::operator==(), KIGFX::CAIRO_GAL_BASE::resetContext(), KIGFX::CAIRO_GAL_BASE::Transform(), KIGFX::OPENGL_GAL::Transform(), and MATRIX3x3< T >::Transpose().