Main Page   Class Hierarchy   Compound List   File List   Compound Members  

wxTransformMatrix Class Reference

A simple 3x3 matrix. This may be replaced by a more general matrix. More...

#include <wxmatrix.h>

List of all members.

Public Methods

double GetValue (int col, int row) const
void SetValue (int col, int row, double value)
wxTransformMatrix & operator *= (const double &t)
 multiply every element by t

wxTransformMatrix & operator/= (const double &t)
 divide every element by t

wxTransformMatrix & operator+= (const wxTransformMatrix &m)
 add matrix m to this t

wxTransformMatrix & operator-= (const wxTransformMatrix &m)
 subtract matrix m from this

wxTransformMatrix & operator *= (const wxTransformMatrix &m)
 multiply matrix m with this

wxTransformMatrix operator * (const double &t) const
 constant operatorsmultiply every element by t and return result

wxTransformMatrix operator/ (const double &t) const
 divide this matrix by t and return result

wxTransformMatrix operator+ (const wxTransformMatrix &m) const
 add matrix m to this and return result

wxTransformMatrix operator- (const wxTransformMatrix &m) const
 subtract matrix m from this and return result

wxTransformMatrix operator * (const wxTransformMatrix &m) const
 multiply this by matrix m and return result

double & operator() (int col, int row)
double operator() (int col, int row) const
bool Invert (void)
 Invert matrix.

bool Identity (void)
 Make into identity matrix.

bool IsIdentity (void) const
bool IsIdentity1 (void) const
 This does an actual check.

bool Scale (double scale)
 Scale by scale (isotropic scaling i.e. the same in x and y):.

wxTransformMatrix & Scale (const double &xs, const double &ys, const double &xc, const double &yc)
wxTransformMatrix & Mirror (bool x=true, bool y=false)
 mirror a matrix in x, y

bool Translate (double x, double y)
 Translate by dx, dy:.

bool Rotate (double angle)
 Rotate clockwise by the given number of degrees:.

wxTransformMatrix & Rotate (const double &r, const double &x, const double &y)
double TransformX (double x) const
 Transform X value from logical to device.

double TransformY (double y) const
 Transform Y value from logical to device.

bool TransformPoint (double x, double y, double &tx, double &ty) const
 Transform a point from logical to device coordinates.

bool InverseTransformPoint (double x, double y, double &tx, double &ty) const
 Transform a point from device to logical coordinates.


Detailed Description

A simple 3x3 matrix. This may be replaced by a more general matrix.

class some day.

A 3x3 matrix to do 2D transformations. It can be used to map data to window coordinates. But also for manipulating your own data. For example drawing a picture (composed of several primitives) at a certain coordinate and angle within another parent picture. At all times m_isIdentity is set if the matrix itself is an Identity matrix. It is used where possible to optimize calculations.


Member Function Documentation

double wxTransformMatrix::GetValue int    col,
int    row
const
 

get the value in the matrix at col,row rows are horizontal (second index of m_matrix member) columns are vertical (first index of m_matrix member)

bool wxTransformMatrix::InverseTransformPoint double    x,
double    y,
double &    tx,
double &    ty
const
 

Transform a point from device to logical coordinates.

Example of use:

           wxTransformMatrix mat = dc.GetTransformation();
           mat.Invert();
           mat.InverseTransformPoint(x, y, x1, y1);
OR (shorthand:)
           dc.LogicalToDevice(x, y, x1, y1);
The latter is slightly less efficient if we're doing several conversions, since the matrix is inverted several times. N.B. 'this' matrix is the inverse at this point

bool wxTransformMatrix::IsIdentity void    const [inline]
 

Is the matrix the identity matrix? Only returns a flag, which is set whenever an operation is done.

bool wxTransformMatrix::IsIdentity1 void    const [inline]
 

This does an actual check.

Is the matrix the identity matrix? Each operation checks whether the result is still the identity matrix and sets a flag.

wxTransformMatrix& wxTransformMatrix::Mirror bool    x = true,
bool    y = false
 

mirror a matrix in x, y

Example: mirror
               | -1     0      0 |
     matrix' = |  0    -1      0 | x matrix
               |  0     0      1 |
    

double wxTransformMatrix::operator() int    col,
int    row
const
 

rows are horizontal (second index of m_matrix member) columns are vertical (first index of m_matrix member)

double& wxTransformMatrix::operator() int    col,
int    row
 

rows are horizontal (second index of m_matrix member) columns are vertical (first index of m_matrix member)

wxTransformMatrix& wxTransformMatrix::Rotate const double &    r,
const double &    x,
const double &    y
 

Example: rotate
               |  cos(r) -sin(r)    x(1-cos(r))+y(sin(r)|
     matrix' = |  sin(r)  cos(r)    y(1-cos(r))-x(sin(r)| x matrix
               |   0          0                       1 |
    

bool wxTransformMatrix::Rotate double    angle
 

Rotate clockwise by the given number of degrees:.

Example: rotate
               |  cos sin 0 |
     matrix' = | -sin cos 0 | x matrix
               |   0   0  1 |
    

wxTransformMatrix& wxTransformMatrix::Scale const double &    xs,
const double &    ys,
const double &    xc,
const double &    yc
 

Example: scale
               |  xs    0      xc(1-xs) |
     matrix' = |  0    ys      yc(1-ys) | x matrix
               |  0     0      1        |
    

bool wxTransformMatrix::Scale double    scale
 

Scale by scale (isotropic scaling i.e. the same in x and y):.

Example: scaling
               | scale  0      0      |
     matrix' = |  0     scale  0      | x matrix
               |  0     0      scale  |
    

void wxTransformMatrix::SetValue int    col,
int    row,
double    value
 

set the value in the matrix at col,row rows are horizontal (second index of m_matrix member) columns are vertical (first index of m_matrix member)

double wxTransformMatrix::TransformX double    x const [inline]
 

Transform X value from logical to device.

Transform X value from logical to device warning: this function can only be used for this purpose because no rotation is involved when mapping logical to device coordinates mirror and scaling for x and y will be part of the matrix if you have a matrix that is rotated, eg a shape containing a matrix to place it in the logical coordinate system, use TransformPoint

double wxTransformMatrix::TransformY double    y const [inline]
 

Transform Y value from logical to device.

Transform Y value from logical to device warning: this function can only be used for this purpose because no rotation is involved when mapping logical to device coordinates mirror and scaling for x and y will be part of the matrix if you have a matrix that is rotated, eg a shape containing a matrix to place it in the logical coordinate system, use TransformPoint

bool wxTransformMatrix::Translate double    x,
double    y
 

Translate by dx, dy:.

Example: Translate
               | 1  0 dx |
     matrix' = | 0  1 dy | x matrix
               | 0  0  1 |
    


The documentation for this class was generated from the following file: wxTransformMatrix class Reference -- Thu Nov 28 21:24:57 2002 -- 28 Nov 2002 -- 1.2.18 -- -- . -- Main Page