The MatrixTransformer class includes static methods that apply
geometric transformations of Matrix objects.
The transform() method
The transform() method
includes parameters for each of the following:
sourceMatrix—The
input matrix, which the method transforms
xScale and yScale—The x and y scale
factor
dx and dy—The x and y translation
amounts, in pixels
rotation—The rotation amount, in degrees
skew—The skew factor, as a percentage
skewType—The direction in which the skew,
either "right" or "left"
The
return value is the resulting matrix.
The transform() method
calls the following static methods of the class:
skew()
scale()
translate()
rotate()
Each returns the
source matrix with the applied transformation.
The skew() method
The skew() method skews
the matrix by adjusting the b and c properties
of the matrix. An optional parameter, unit, determines
the units used to define the skew angle, and if necessary, the method
converts the angle value to radians:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
A skewMatrix Matrix object is
created and adjusted to apply the skew transformation. Initially,
it is the identity matrix, as follows:
var skewMatrix:Matrix = new Matrix();
The skewSide parameter
determines the side to which the skew is applied. If it is set to "right",
the following code sets the b property of the matrix:
skewMatrix.b = Math.tan(angle);
Otherwise,
the bottom side is skewed by adjusting the c property
of the Matrix, as follows:
skewMatrix.c = Math.tan(angle);
The
resulting skew is then applied to the existing matrix by concatenating
the two matrixes, as the following example shows:
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
The scale() method
The following example shows the scale() method
adjusts the scale factor if it is provided as a percentage, first,
and then uses the scale() method of the matrix
object:
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
The translate() method
The translate() method
simply applies the dx and dy translation
factors by calling the translate() method of the
matrix object, as follows:
sourceMatrix.translate(dx, dy);
return sourceMatrix;
The rotate() method
The rotate() method converts
the input rotation factor to radians (if it is provided in degrees
or gradients), and then calls the rotate() method
of the matrix object:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;