La classe MatrixTransformer comprende dei metodi statici che applicano trasformazioni geometriche degli oggetti Matrix.
Metodo transform()
Il metodo
transform()
comprende parametri per gli elementi seguenti:
-
sourceMatrix
- Matrice di partenza a cui il metodo applica le trasformazioni
-
xScale
e
yScale
- Fattori di scala di
x
e
y
-
dx
e
dy
- Ammontare dello spostamento di
x
e
y
, espresso in pixel
-
rotation
- Ammontare della rotazione, espresso in gradi
-
skew
- Fattore di inclinazione, espresso in percentuale
-
skewType
- Direzione dell'inclinazione, può essere destra (
"right"
) o sinistra (
"left"
)
Il valore restituito è la matrice risultante.
Il metodo
transform()
chiama i seguenti metodi statici della classe:
-
skew()
-
scale()
-
translate()
-
rotate()
Ognuno restituisce la matrice di partenza con la trasformazione applicata.
Metodo skew()
Il metodo
skew()
inclina la matrice modificando le proprietà
b
e
c
della matrice stessa. Un parametro facoltativo,
unit
, stabilisce le unità in cui è definito l'angolo di inclinazione e, se necessario, il metodo converte il valore
angle
in radianti:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
L'oggetto Matrix
skewMatrix
viene creato e modificato in base al valore di inclinazione. Inizialmente si tratta della matrice di identità:
var skewMatrix:Matrix = new Matrix();
Il parametro
skewSide
determina il lato a cui va applicata l'inclinazione. Se il parametro è impostato su
"right"
, il codice seguente imposta la proprietà
b
della matrice:
skewMatrix.b = Math.tan(angle);
Altrimenti, il lato inferiore viene inclinato modificando la proprietà
c
dell'oggetto Matrix nel modo seguente:
skewMatrix.c = Math.tan(angle);
L'inclinazione risultante viene applicata alla matrice esistente concatenando le due matrici, come illustra l'esempio seguente:
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
Metodo scale()
Nell'esempio seguente, il metodo
scale()
prima modifica il fattore di scala, se espresso in valore di percentuale, quindi usa il metodo
scale()
dell'oggetto Matrix:
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
Metodo translate()
Il metodo
translate()
semplicemente applica i fattori di conversione
dx
e
dy
chiamando il metodo
translate()
dell'oggetto Matrix come segue:
sourceMatrix.translate(dx, dy);
return sourceMatrix;
Metodo rotate()
Il metodo
rotate()
converte il fattore di rotazione specificato in radianti (se espresso in gradi o gradienti), quindi chiama il metodo
rotate()
dell'oggetto Matrix:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;