Wt
4.11.1
|
A value class that defines a 2D affine transformation matrix. More...
#include <Wt/WTransform.h>
Classes | |
struct | TRSRDecomposition |
Result of a TRSR decomposition. More... | |
struct | TRSSDecomposition |
Result of a TRSS decomposition. More... | |
Public Member Functions | |
WTransform () | |
Default constructor. More... | |
WTransform (double m11, double m12, double m21, double m22, double dx, double dy) | |
Construct a custom matrix by specifying the parameters. More... | |
WTransform (const WTransform &other) | |
Copy constructor. | |
WTransform & | operator= (const WTransform &rhs) |
Assignment operator. More... | |
bool | operator== (const WTransform &rhs) const |
Comparison operator. More... | |
bool | operator!= (const WTransform &rhs) const |
Comparison operator. More... | |
bool | isIdentity () const |
Identity check. More... | |
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. More... | |
double | m32 () const |
Returns the vertical translation factor. More... | |
double | m33 () const |
Returns m33 = 1. | |
double | dx () const |
Returns the horizontal translation factor. More... | |
double | dy () const |
Returns the vertical translation factor. More... | |
WPointF | map (const WPointF &p) const |
Applys the transformation to a point. More... | |
void | map (double x, double y, double *tx, double *ty) const |
Applys the transformation to a point. More... | |
WRectF | map (const WRectF &rect) const |
Applies the transformation to a rectangle. More... | |
WPainterPath | map (const WPainterPath &path) const |
Applies the transformation to a painter path. More... | |
void | reset () |
Resets the transformation to the identity. More... | |
WTransform & | rotate (double angle) |
Rotates the transformation. More... | |
WTransform & | rotateRadians (double angle) |
Rotates the transformation. More... | |
WTransform & | scale (double sx, double sy) |
Scales the transformation. More... | |
WTransform & | shear (double sh, double sv) |
Shears the transformation. More... | |
WTransform & | translate (double dx, double dy) |
Translates the transformation. More... | |
WTransform & | translate (const WPointF &p) |
Translates the transformation. More... | |
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. More... | |
void | decomposeTranslateRotateScaleSkew (TRSSDecomposition &result) const |
Decomposes the transformation. More... | |
void | decomposeTranslateRotateScaleRotate (TRSRDecomposition &result) const |
Decomposes the transformation. More... | |
virtual std::string | jsValue () const override |
Returns a JavaScript representation of the value of this object. More... | |
Public Member Functions inherited from Wt::WJavaScriptExposableObject | |
bool | isJavaScriptBound () const |
Returns whether this object is JavaScript bound. More... | |
std::string | jsRef () const |
Returns a JavaScript reference to this object. More... | |
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. More... | |
A value class that defines a 2D affine transformation matrix.
The matrix is encoded using 6 parameters:
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.
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:
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.
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.
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.
|
overridevirtual |
Returns a JavaScript representation of the value of this object.
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()
WPainterPath Wt::WTransform::map | ( | const WPainterPath & | path | ) | const |
Applies the transformation to a painter path.
This will transform all individual points according to the transformation. The radius of arcs will be unaffected.
Applys the transformation to a point.
Returns the transformed point.
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.
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
).
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.
WException | if the transform is JavaScript bound |
WTransform & Wt::WTransform::rotate | ( | double | angle | ) |
Rotates the transformation.
Applies a clock-wise rotation to the current transformation matrix, over angle
degrees.
WTransform & Wt::WTransform::rotateRadians | ( | double | angle | ) |
Rotates the transformation.
Applies a clock-wise rotation to the current transformation matrix, over angle
radians.
WTransform & Wt::WTransform::scale | ( | double | sx, |
double | sy | ||
) |
WTransform & Wt::WTransform::shear | ( | double | sh, |
double | sv | ||
) |
WTransform & Wt::WTransform::translate | ( | const WPointF & | p | ) |
Translates the transformation.
Translates the current transformation.
WTransform & Wt::WTransform::translate | ( | double | dx, |
double | dy | ||
) |
Translates the transformation.
Translates the current transformation.
|
static |
A constant that represents the identity transform.