Klassen MatrixTransformer innehåller statiska metoder för att tillämpa geometriska omformningar på matrisobjekt.
Metoden transform()
Metoden
transform()
innehåller följande parametrar:
-
sourceMatrix
– Indatamatrisen som metoden omformar
-
xScale
och
yScale
– Skalfaktorn
x
och
y
-
dx
och
dy
– Översättningsmängden
x
och
y
, i pixlar
-
rotation
– Rotationen i grader
-
skew
– Skevningsfaktorn i procent
-
skewType
– Riktningen på skevningen, antingen
"right"
eller
"left"
Det returnerade värdet är den resulterande matrisen.
Med metoden
transform()
anropas följande statiska metoder för klassen:
-
skew()
-
scale()
-
translate()
-
rotate()
Alla returnerar källmatrisen med den tillämpade omformningen.
Metoden skew()
Metoden
skew()
skevar matrisen genom att ändra dess egenskaper
b
och
c
. En valfri parameter,
unit
, används för att bestämma vilken enhet som ska användas för att definiera skevningsvinkeln. Om nödvändigt konverteras
angle
-värdet för metoden till radianer:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
Ett
skewMatrix
-matrisobjekt skapas och ändras för att tillämpa skevningsomformningen. Till att börja med har identitetsmatrisen följande utseende:
var skewMatrix:Matrix = new Matrix();
Parametrarna
skewSide
avgör vilken sida som skevningen ska tillämpas på. Om det är
"right"
används följande kod för att ställa in matrisegenskapen
b
:
skewMatrix.b = Math.tan(angle);
I annat fall är det undersidan som skevas genom att matrisegenskapen
c
ändras enligt följande:
skewMatrix.c = Math.tan(angle);
Den resulterande skevningen tillämpas sedan på den befintliga matrisen genom att två matriser slås samman enligt följande:
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
Metoden scale()
Följande exempel visar hur metoden
scale()
först justerar skalfaktorn om den anges i procent och sedan använder metoden
scale()
för matrisobjektet:
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
Metoden translate()
Metoden
translate()
tillämpar översättningsfaktorerna
dx
och
dy
genom att anropa metoden
translate()
för matrisobjektet enligt följande:
sourceMatrix.translate(dx, dy);
return sourceMatrix;
Metoden rotate()
Metoden
rotate()
används för att konvertera indatarotationsfaktorn till radianer (om den anges i grader eller övertoningar) och därefter anropas metoden
rotate()
för matrisobjektet:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;