Wt: Wt::WTransform Class Reference

Wt 3.3.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes
Wt::WTransform Class Reference
Painting system

A value class that defines a 2D affine transformation matrix. More...

`#include <Wt/WTransform>`

List of all members.

## Classes
struct | TRSRDecomposition
| Result of a TRSR decomposition. More...
struct | TRSSDecomposition
| Result of a TRSS decomposition. More...
## 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.
WTransform & | operator= (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.
WTransform & | rotate (double angle)
| Rotates the transformation.
WTransform & | rotateRadians (double angle)
| Rotates the transformation.
WTransform & | scale (double sx, double sy)
| Scales the transformation.
WTransform & | shear (double sh, double sv)
| Shears the transformation.
WTransform & | translate (double dx, double dy)
| Translates the transformation.
WTransform & | operator*= (const WTransform &rhs)
| Adds a transform that is conceptually applied after this transform.
WTransform | operator* (const WTransform &rhs) const
| Multiply 2 transform objects.
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.
## Static Public Attributes
static const WTransform | Identity
| A constant that represents the identity transform.

## Detailed Description

A value class that defines 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:

- decomposeTranslateRotateScaleSkew() decomposes into a T ∘ R ∘ Sxx ∘ Sxy
- decomposeTranslateRotateScaleRotate() decomposes into a T ∘ R1 ∘ Sxx ∘ R2

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

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

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.

double Wt::WTransform::dx | ( |  | ) | const

Returns the horizontal translation factor.

Is equivalent to m31()

double Wt::WTransform::dy | ( |  | ) | const

Returns the vertical translation factor.

Is equivalent to m32()

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.

bool Wt::WTransform::isIdentity | ( |  | ) | const

Identity check.

Returns true if the transform represents an identity transformation.

double Wt::WTransform::m31 | ( |  | ) | const

Returns the horizontal translation factor.

Is equivalent to dx()

double Wt::WTransform::m32 | ( |  | ) | const

Returns the vertical translation factor.

Is equivalent to dy()

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

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

Comparison operator.

Returns `true` if the transforms are different.

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.

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.

## Member Data Documentation

const WTransform Wt::WTransform::Identity`[static]`

A constant that represents the identity transform.

See also:
  isIdentity()

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator