La classe MatrixTransformer comprend des méthodes statiques qui appliquent des transformations géométriques d’objets Matrix.
Méthode transform()
La méthode
transform()
comprend des paramètres associés à chaque élément suivant :
-
sourceMatrix
—La matrice d’entrée, que la méthode transforme
-
xScale
et
yScale
—Le facteur de redimensionnement
x
et
y
-
dx
et
dy
—Les montants de translation
x
et
y
, en pixels
-
rotation
—Le montant de rotation, en degrés
-
skew
—Le facteur d’inclinaison, en pourcentage
-
skewType
—Le sens d’inclinaison,
"right"
ou
"left"
La valeur renvoyée est la matrice résultante.
La méthode
transform()
appelle les méthodes statiques suivantes de la classe :
-
skew()
-
scale()
-
translate()
-
rotate()
Chacune renvoie la matrice source avec la transformation appliquée.
Méthode skew()
La méthode
skew()
incline la matrice en ajustant les propriétés
b
et
c
de la matrice. Un paramètre facultatif,
unit
, détermine les unités utilisées pour définir l’angle d’inclinaison et, le cas échéant, la méthode convertit la valeur
angle
en radians :
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
Un objet Matrix
skewMatrix
est créé et ajusté pour appliquer la transformation par inclinaison. Au départ, il s’agit de la matrice d’identité, comme suit :
var skewMatrix:Matrix = new Matrix();
Le paramètre
skewSide
détermine le côté auquel l’inclinaison est appliquée. S’il est défini sur
"right"
, le code suivant définit la propriété
b
de la matrice :
skewMatrix.b = Math.tan(angle);
Autrement, le côté inférieur est incliné en ajustant la propriété
c
de la matrice, comme suit :
skewMatrix.c = Math.tan(angle);
L’inclinaison résultante est ensuite appliquée à la matrice existante en concaténant les deux matrices, comme indiqué dans l’exemple suivant :
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
Méthode scale()
Comme le montre l’exemple suivant, la méthode
scale()
ajuste d’abord le facteur de redimensionnement s’il est défini sous la forme de pourcentage, puis utilise la méthode
scale()
de l’objet matrix :
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
Méthode translate()
La méthode
translate()
applique simplement les facteurs de translation
dx
et
dy
en appelant la méthode
translate()
de l’objet matrix, comme suit :
sourceMatrix.translate(dx, dy);
return sourceMatrix;
Méthode rotate()
La méthode
rotate()
convertit le facteur de rotation d’entrée en radians (s’il est fourni en degrés ou dégradés), puis appelle la méthode
rotate()
de l’objet matrix :
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;