Wt  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes
Wt::WTransform Class Reference

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.
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.
WTransformoperator*= (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:

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

Generated on Wed Jun 13 2012 for the C++ Web Toolkit (Wt) by doxygen 1.8.1