Wt::WTransform Class Reference
[Painting system]

A 2D affine transformation matrix. More...

#include <Wt/WTransform>

List of all members.

Public Member Functions

 WTransform ()
 Default constructor.
 WTransform (double m11, double m12, double m21, double m22, double dx, double dy)
 Construct a custom matrix by specifying the parameters.
WTransformoperator= (const WTransform &rhs)
 Assignment operator.
bool operator== (const WTransform &rhs) const
 Comparison operator.
bool operator!= (const WTransform &rhs) const
 Comparison operator.
bool isIdentity () const
 Identity check.
double m11 () const
 Returns the horizontal scaling factor.
double m12 () const
 Returns the vertical shearing factor.
double m13 () const
 Returns m13 = 0.
double m21 () const
 Returns the horizontal shearing factor.
double m22 () const
 Returns the vertical scaling factor.
double m23 () const
 Returns m23 = 0.
double m31 () const
 Returns the horizontal translation factor.
double m32 () const
 Returns the vertical translation factor.
double m33 () const
 Returns m33 = 1.
double dx () const
 Returns the horizontal translation factor.
double dy () const
 Returns the vertical translation factor.
WPointF map (const WPointF &p) const
 Applys the transformation to a point.
void map (double x, double y, double *tx, double *ty) const
 Applys the transformation to a point.
void reset ()
 Resets the transformation to the identity.
WTransformrotate (double angle)
 Rotates the transformation.
WTransformrotateRadians (double angle)
 Rotates the transformation.
WTransformscale (double sx, double sy)
 Scales the transformation.
WTransformshear (double sh, double sv)
 Shears the transformation.
WTransformtranslate (double dx, double dy)
 Translates the transformation.
double determinant () const
 Returns the determinant.
WTransform adjoint () const
 Returns the adjoint.
WTransform inverted () const
 Returns the inverted transformation.
void decomposeTranslateRotateScaleSkew (TRSSDecomposition &result) const
 Decomposes the transformation.
void decomposeTranslateRotateScaleRotate (TRSRDecomposition &result) const
 Decomposes the transformation.

Static Public Member Functions

static double degreesToRadians (double angle)
 Utility method to convert degrees to radians.

Classes

struct  TRSRDecomposition
 Result of a TRSR decomposition. More...
struct  TRSSDecomposition
 Result of a TRSS decomposition. More...


Detailed Description

A 2D affine transformation matrix.

The matrix is encoded using 6 parameters:

 m11  m12   0
 m21  m22   0
 dx   dy    1

In this representation, dx() (= m31()) and dy() (= m32()) represent the translation components, and mxy represent a 2D matrix that contains the scale, rotation (and skew) components.

The transformation is used to represent a tansformed coordinate system, and provides methods to rotate(), scale(), shear() or translate() this coordinate system.

There are also 2 methods to decompose an arbitrary matrix into elementary operations:

with T a translation, R a rotation, Sxx a scale, and Sxy a skew component.


Constructor & Destructor Documentation

Wt::WTransform::WTransform (  ) 

Default constructor.

Creates the identity transformation matrix.

Wt::WTransform::WTransform ( double  m11,
double  m12,
double  m21,
double  m22,
double  dx,
double  dy 
)

Construct a custom matrix by specifying the parameters.

Creates a matrix from the specified parameters.


Member Function Documentation

WTransform & Wt::WTransform::operator= ( const WTransform rhs  ) 

Assignment operator.

Copies the transformation from the rhs.

bool Wt::WTransform::operator== ( const WTransform rhs  )  const

Comparison operator.

Returns true if the transforms are exactly the same.

bool Wt::WTransform::operator!= ( const WTransform rhs  )  const

Comparison operator.

Returns true if the transforms are different.

bool Wt::WTransform::isIdentity (  )  const

Identity check.

Returns true if the transform represents an identity transformation.

double Wt::WTransform::m31 (  )  const [inline]

Returns the horizontal translation factor.

Is equivalent to dx()

double Wt::WTransform::m32 (  )  const [inline]

Returns the vertical translation factor.

Is equivalent to dy()

double Wt::WTransform::dx (  )  const [inline]

Returns the horizontal translation factor.

Is equivalent to m31()

double Wt::WTransform::dy (  )  const [inline]

Returns the vertical translation factor.

Is equivalent to m32()

WPointF Wt::WTransform::map ( const WPointF p  )  const

Applys the transformation to a point.

Returns the transformed point.

See also:
map(double x, double y, double *tx, double *ty) const

void Wt::WTransform::map ( double  x,
double  y,
double *  tx,
double *  ty 
) const

Applys the transformation to a point.

Sets the point (tx, ty) to the transformation of the point (x, y).

See also:
map(const WPointF&) const

void Wt::WTransform::reset (  ) 

Resets the transformation to the identity.

See also:
isIdentity(), WTransform()

WTransform & Wt::WTransform::rotate ( double  angle  ) 

Rotates the transformation.

Applies a clock-wise rotation to the current transformation matrix, over angle degrees.

See also:
rotateRadians()

WTransform & Wt::WTransform::rotateRadians ( double  angle  ) 

Rotates the transformation.

Applies a clock-wise rotation to the current transformation matrix, over angle radians.

See also:
rotate()

WTransform & Wt::WTransform::scale ( double  sx,
double  sy 
)

Scales the transformation.

Applies a clock-wise rotation to the current transformation matrix, over angle radians.

See also:
shear()

WTransform & Wt::WTransform::shear ( double  sh,
double  sv 
)

Shears the transformation.

Shears the current transformation.

See also:
scale(), rotate()

WTransform & Wt::WTransform::translate ( double  dx,
double  dy 
)

Translates the transformation.

Translates the current transformation.

WTransform Wt::WTransform::inverted (  )  const

Returns the inverted transformation.

Returns this if the transformation could not be inverted (determinant() == 0), and logs an error instead.

void Wt::WTransform::decomposeTranslateRotateScaleSkew ( TRSSDecomposition result  )  const

Decomposes the transformation.

Decomposes the transformation into elementary operations: translation (dx, dy), followed by rotation (alpha), followed by scale (sx, sy) and vertical shearing factor (sh). The angle is expressed in radians.

This performs a Gram-Schmidt orthonormalization.

void Wt::WTransform::decomposeTranslateRotateScaleRotate ( TRSRDecomposition result  )  const

Decomposes the transformation.

Decomposes the transformation into elementary operations: translation (dx, dy), followed by rotation (alpha2), followed by scale (sx, sy) and again a rotation (alpha2). The angles are expressed in radians.

This performs a Singular Value Decomposition (SVD).


Generated on Thu May 20 18:14:49 2010 for Wt by doxygen 1.5.6