Wt  3.3.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator
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>

Inheritance diagram for Wt::WTransform:
Inheritance graph
[legend]

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 (const WTransform &other)
 Copy constructor.
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.
WRectF map (const WRectF &rect) const
 Applies the transformation to a rectangle.
WPainterPath map (const WPainterPath &path) const
 Applies the transformation to a painter path.
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.
WTransformtranslate (const WPointF &p)
 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.
virtual std::string jsValue () const WT_CXX11ONLY(override)
 Returns a JavaScript representation of the value of this object.

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.

JavaScript exposability

A WTransform is JavaScript exposable. If a WTransform is JavaScript bound, it can be accessed in your custom JavaScript code through its handle's jsRef(). A transform is represented as a JavaScript array, e.g. a WTransform(m11, m12, m21, m22, dx, dy) will be represented in JavaScript by:

 [m11, m12, m21, m22, dx, dy]

As an exception to the general rule that JavaScript bound objects should not be modified, WTransform does support many modifications. These modifications will then accumulate in the JavaScript representation of the transform.


Constructor & Destructor Documentation

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

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

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

Returns the inverted transformation.

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

Identity check.

Returns true if the transform represents an identity transformation.

Note:
This is always false if the transform is JavaScript bound.
std::string Wt::WTransform::jsValue ( ) const [override, virtual]

Returns a JavaScript representation of the value of this object.

Note:
The value returned will reflect the current server side value of the object. If this object is JavaScript bound, this value may not reflect the actual client side value. If you need access to the client side value, use jsRef() intead.

Implements Wt::WJavaScriptExposableObject.

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.

Note:
If this transform or the given point are JavaScript bound, the resulting point will also be JavaScript bound.
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
WRectF Wt::WTransform::map ( const WRectF rect) const

Applies the transformation to a rectangle.

Since the rectangle is aligned with X and Y axes, this may increase the size of the rectangle even for a transformation that only rotates.

Note:
If this transform or the given rectangle are JavaScript bound, the resulting rectangle will also be JavaScript bound.

Applies the transformation to a painter path.

This will transform all individual points according to the transformation. The radius of arcs will be unaffected.

Note:
If this transform or the given path are JavaScript bound, the resulting path will also be JavaScript bound.
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.

Resets the transformation to the identity.

Exceptions:
WExceptionif the transform is JavaScript bound
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()

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.

Scales the current transformation.

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.

Translates the transformation.

Translates the current transformation.

Note:
If this transform or the given point are JavaScript bound, the resulting transform will also be JavaScript bound.

Member Data Documentation

A constant that represents the identity transform.

See also:
isIdentity()
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator

Generated on Tue Mar 22 2016 for the C++ Web Toolkit (Wt) by doxygen 1.7.6.1