Класс MatrixTransformer включает статические методы, которые применяют геометрические преобразования к объектам Matrix.
Метод transform()
Метод
transform()
включает параметры для нижеследующего:
-
sourceMatrix
— входная матрица, которая преобразуется с помощью этого метода
-
xScale
и
yScale
— масштабные коэффициенты
x
и
y
-
dx
и
dy
— величины перемещения
x
и
y
в пикселах
-
rotation
— угол поворота в градусах
-
skew
— коэффициент наклона в процентах
-
skewType
— направление наклона вправо или влево (
"right"
или
"left"
)
Возвращаемое значение — результирующая матрица.
Метод
transform()
вызывает следующие статические методы этого класса:
-
skew()
-
scale()
-
translate()
-
rotate()
Каждый из них возвращается в исходную матрицу с примененным преобразованием.
Метод skew()
Метод
skew()
вносит в матрицу корректировку наклона, задавая свойства матрицы
b
и
c
. Дополнительный параметр
unit
задает единицы измерения угла наклона — при необходимости в этом методе возможно конвертирование значения угла
angle
в радианы.
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
Матричный объект
skewMatrix
создается и корректируется для применения преобразования наклона. Первоначально это единичная матрица:
var skewMatrix:Matrix = new Matrix();
Параметр
skewSide
определяет сторону, к которой применяется преобразование наклона. Если задана правая сторона
"right"
, свойство матрицы
b
устанавливает следующий код:
skewMatrix.b = Math.tan(angle);
Нижний край наклоняется заданием свойства матрицы
c
:
skewMatrix.c = Math.tan(angle);
Результирующий наклон применяется к исходной матрице за счет объединения двух матриц, как показано в следующем примере:
sourceMatrix.concat(skewMatrix);
return sourceMatrix;
Метод scale()
Как показано в следующем примере, метод
scale()
сначала задает коэффициент масштабирования, если он представлен в процентах, затем метод
scale()
применяется к объекту Matrix:
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
Метод translate()
Метод
translate()
просто применяет коэффициенты преобразования
dx
и
dy
путем вызова метода
translate()
матричного объекта, как показано ниже:
sourceMatrix.translate(dx, dy);
return sourceMatrix;
Метод rotate()
Метод
rotate()
конвертирует входной коэффициент поворота в радианы (если он представлен в градусах или единицах градиента), а затем вызывает метод
rotate()
матричного объекта:
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;