Matrix

Inheritance: java.lang.Object

public class Matrix

Заменяет матрицу GDI+.


Большинство алгоритмов взяты из AffineTransform.java от Sun. Внутри используются имена элементов матрицы из Java. Сопоставление имен Java с .net и их описание: m00 M11 Scale X m10 M12 Shear Y m01 M21 Shear X m11 M22 Scale Y m02 M31 Translate X m12 M32 Translate Y

Конструкторы

КонструкторОписание
Matrix()Инициализирует новый экземпляр класса Matrix как единичную матрицу.
Matrix(float m11, float m12, float m21, float m22, float m31, float m32)Инициализирует новый экземпляр класса Matrix.
Matrix(RectangleF rect, PointF[] plgpts)Инициализирует новый экземпляр класса Matrix с геометрическим преобразованием, определённым заданным прямоугольником и массивом точек.
Matrix(Rectangle rect, Point[] plgpts)Инициализирует новый экземпляр класса Matrix с геометрическим преобразованием, определённым заданным прямоугольником и массивом точек.
Matrix(Matrix origin)Создаёт копию класса Matrix.

Поля

ПолеОписание
TYPE_IDENTITYЕдиничное преобразование — это такое, при котором выходные координаты всегда совпадают с входными.
TYPE_TRANSLATIONПеренос смещает координаты на постоянное значение по осям x и y, не изменяя длину и угол векторов.
TYPE_UNIFORM_SCALEОднородное масштабирование умножает длину векторов на одинаковое значение по осям x и y, не изменяя угол между векторами.
TYPE_GENERAL_SCALEОбщий масштаб умножает длину векторов на разные величины в направлениях x и y, не изменяя угол между перпендикулярными векторами.
TYPE_MASK_SCALEЭта константа является битовой маской для любого из битов флага масштаба.
TYPE_FLIPЭтот бит флага указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение относительно некоторой оси, которое меняет обычно правостороннюю систему координат на левостороннюю, в дополнение к преобразованиям, указанным другими битами флага.
TYPE_QUADRANT_ROTATIONЭтот бит флага указывает, что преобразование, определённое этим объектом, выполняет поворот квадранта на некоторый кратный 90‑градусный угол, в дополнение к преобразованиям, указанным другими битами флага.
TYPE_GENERAL_ROTATIONЭтот бит флага указывает, что преобразование, определённое этим объектом, выполняет вращение на произвольный угол, в дополнение к преобразованиям, указанным другими битами флага.
TYPE_MASK_ROTATIONЭта константа является битовой маской для любого из битов флага вращения.
TYPE_GENERAL_TRANSFORMЭта константа указывает, что преобразование, определённое этим объектом, выполняет произвольное преобразование входных координат.

Методы

МетодОписание
isEquals(Matrix a, Matrix b)Определяет, равны ли две матрицы.
getM11()Получает элемент матрицы в первой строке и первом столбце.
getM12()Получает элемент матрицы в первой строке и втором столбце.
getM21()Получает элемент матрицы во второй строке и первом столбце.
getM22()Получает элемент матрицы во второй строке и втором столбце.
getM31()Получает элемент матрицы в третьей строке и первом столбце.
getM32()Получает элемент матрицы в третьей строке и первом столбце.
toString()Возвращает строку, представляющую этот экземпляр.
getElements()Получает копию элементов матрицы.
transformPoints(PointF[] points)Применяет геометрическое преобразование, представленное этой Matrix, к указанному массиву точек.
scale(float scaleX, float scaleY, int order)Применяет указанный вектор масштабирования (scaleX и scaleY) к этой Matrix, используя указанный порядок.
scale(float sx, float sy)Применяет указанный вектор масштабирования (scaleX и scaleY) к этой Matrix, используя (по умолчанию) порядок Prepend.
translate(float offsetX, float offsetY, int order)Применяет указанный вектор переноса к этой Matrix в указанном порядке.
translate(float tx, float ty)Применяет указанный вектор переноса к этой Matrix, используя (по умолчанию) порядок Prepend.
multiply(Matrix tTx, int order)Умножает эту Matrix на матрицу, указанную в параметре matrix, и в порядке, указанном в параметре order.
multiply(Matrix tTx)Умножает эту Matrix на матрицу, указанную в параметре matrix, используя (по умолчанию) порядок Prepend.
rotate(float angle, int order)Применяет вращение по часовой стрелке на величину, указанную в параметре angle, вокруг начала координат (ноль по x и y) для этой Matrix в указанном порядке.
rotate(float angle)Применяет вращение по часовой стрелке на величину, указанную в параметре angle, вокруг начала координат (ноль по x и y) для этой Matrix в порядке по умолчанию (Prepend).
rotateAt(float angle, PointF point, int order)Применяет вращение по часовой стрелке вокруг указанной точки к этой Matrix в указанном порядке.
rotateAt(float angle, PointF point)Применяет вращение по часовой стрелке вокруг указанной точки к этой Matrix в порядке по умолчанию (Prepend).
reset()Сбрасывает эту матрицу, чтобы её элементы соответствовали единичной матрице.
hashCode()Возвращает хеш-код для этого экземпляра.
equals(Object obj)Определяет, равен ли указанный Object этому экземпляру.
isIdentity()Возвращает true, если этот AffineTransform является единичным преобразованием.

Matrix()

public Matrix()

Инициализирует новый экземпляр класса Matrix как единичную матрицу.

Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

public Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

Инициализирует новый экземпляр класса Matrix.

Parameters:

ПараметрТипОписание
m11floatm00 M11 Масштаб X
m12floatm10 M12 Сдвиг Y
m21floatm01 M21 Сдвиг X
m22floatm11 M22 Масштаб Y
m31floatm02 M31 Перемещение X
m32floatm12 M32 Перемещение Y

Matrix(RectangleF rect, PointF[] plgpts)

public Matrix(RectangleF rect, PointF[] plgpts)

Инициализирует новый экземпляр класса Matrix с геометрическим преобразованием, определённым заданным прямоугольником и массивом точек.

Parameters:

ПараметрТипОписание
rectRectangleFСтруктура RectangleF, представляющая прямоугольник, подлежащий преобразованию.
plgptsPointF[]Массив из трёх структур PointF, представляющих точки параллелограмма, в который будут преобразованы верхний‑левый, верхний‑правый и нижний‑левый углы прямоугольника. Нижний‑правый угол параллелограмма подразумевается третьими углами.

Matrix(Rectangle rect, Point[] plgpts)

public Matrix(Rectangle rect, Point[] plgpts)

Инициализирует новый экземпляр класса Matrix с геометрическим преобразованием, определённым заданным прямоугольником и массивом точек.

Parameters:

ПараметрТипОписание
rectRectangleСтруктура Rectangle, представляющая прямоугольник, подлежащий преобразованию.
plgptsPoint[]Массив из трёх структур Point, представляющих точки параллелограмма, в который будут преобразованы верхний‑левый, верхний‑правый и нижний‑левый углы прямоугольника. Нижний‑правый угол параллелограмма подразумевается первыми тремя углами.

Matrix(Matrix origin)

public Matrix(Matrix origin)

Создаёт копию класса Matrix.

Parameters:

ПараметрТипОписание
originMatrixБазовая матрица для копирования

TYPE_IDENTITY

public static final int TYPE_IDENTITY

Единичное преобразование — это такое, при котором выходные координаты всегда совпадают с входными координатами. Если это преобразование не является единичным, тип будет либо константой GENERAL_TRANSFORM, либо комбинацией соответствующих битов флагов для различных преобразований координат, которые выполняет данное преобразование.

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION

Перенос смещает координаты на постоянное значение по осям x и y, не изменяя длину и угол векторов.

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE

Однородный масштаб умножает длину векторов на одинаковую величину по осям x и y, не изменяя угол между векторами. Этот бит флага взаимно исключает бит флага TypeGeneralScale.

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE

Общий масштаб умножает длину векторов на разные величины по осям x и y, не изменяя угол между перпендикулярными векторами. Этот бит флага взаимно исключает бит флага TypeUniformScale.

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE

Эта константа является битовой маской для любого из битов флага масштаба.

TYPE_FLIP

public static final int TYPE_FLIP

Этот бит флага указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение относительно некоторой оси, что меняет обычную правостороннюю систему координат на левостороннюю, в дополнение к преобразованиям, указанным другими битами флага. Правосторонняя система координат — это система, в которой положительная ось X вращается против часовой стрелки, накладываясь на положительную ось Y, аналогично направлению, в котором изгибаются пальцы правой руки, когда вы смотрите на большой палец. Левосторонняя система координат — это система, в которой положительная ось X вращается по часовой стрелке, накладываясь на положительную ось Y, аналогично направлению, в котором изгибаются пальцы левой руки. Нет математического способа определить угол исходного отражения или зеркального преобразования, поскольку все углы отражения одинаковы при соответствующем корректирующем вращении. ПРИМЕЧАНИЕ: TypeFlip был добавлен после того, как GENERAL_TRANSFORM стал публичным, и биты флага больше нельзя было удобно перенумеровать без введения бинарной несовместимости во внешнем коде.

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION

Этот бит флага указывает, что преобразование, определённое этим объектом, выполняет поворот квадранта на кратное 90‑градусное значение, в дополнение к преобразованиям, указанным другими битами флага. Поворот изменяет углы векторов на одинаковую величину независимо от исходного направления вектора и без изменения длины вектора. Этот бит флага взаимно исключает бит флага TypeGeneralRotation.

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION

Этот бит флага указывает, что преобразование, определённое этим объектом, выполняет вращение на произвольный угол в дополнение к преобразованиям, указанным другими битами флага. Вращение изменяет углы векторов на одинаковую величину независимо от исходного направления вектора и без изменения длины вектора. Этот бит флага взаимно исключает с

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION

Эта константа является битовой маской для любого из битов флага вращения.

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM

Эта константа указывает, что преобразование, определённое этим объектом, выполняет произвольное преобразование входных координат. Если это преобразование может быть классифицировано любой из вышеуказанных констант, тип будет либо константой TypeIdentity, либо комбинацией соответствующих битов флага для различных преобразований координат, которые выполняет это преобразование.

isEquals(Matrix a, Matrix b)

public static boolean isEquals(Matrix a, Matrix b)

Определяет, равны ли две матрицы.

Parameters:

ПараметрТипОписание
aMatrixПервая матрица для сравнения.
bMatrixВторая матрица для сравнения.

Returns: boolean - Истина, если матрицы равны.

getM11()

public final float getM11()

Получает элемент матрицы в первой строке первой колонке. Представляет масштаб вдоль оси X.

Returns: float - элемент матрицы в первой строке первой колонке.

getM12()

public final float getM12()

Получает элемент матрицы в первой строке второй колонке. Представляет сдвиг вдоль оси Y.

Returns: float - элемент матрицы в первой строке второй колонке.

getM21()

public final float getM21()

Получает элемент матрицы во второй строке первой колонке. Представляет сдвиг вдоль оси X.

Returns: float - элемент матрицы во второй строке первой колонке.

getM22()

public final float getM22()

Получает элемент матрицы во второй строке второй колонке. Представляет масштаб вдоль оси Y.

Returns: float - элемент матрицы во второй строке второй колонке.

getM31()

public final float getM31()

Получает элемент матрицы в третьей строке первой колонке. Представляет перемещение вдоль оси X.

Returns: float - элемент матрицы в третьей строке первой колонке.

getM32()

public final float getM32()

Получает элемент матрицы в третьей строке первой колонке. Представляет перемещение вдоль оси Y.

Returns: float - элемент матрицы в третьей строке первой колонке.

toString()

public String toString()

Возвращает строку, представляющую этот экземпляр.

Returns: java.lang.String - Строка, представляющая этот экземпляр.

getElements()

public final float[] getElements()

Получает копию элементов матрицы.

Returns: float[] - Копия элементов матрицы.

transformPoints(PointF[] points)

public final void transformPoints(PointF[] points)

Применяет геометрическое преобразование, представленное этой Matrix, к указанному массиву точек.

Parameters:

ПараметрТипОписание
pointsPointF[]Точки.

scale(float scaleX, float scaleY, int order)

public final void scale(float scaleX, float scaleY, int order)

Применяет указанный вектор масштабирования (scaleX и scaleY) к этой Matrix, используя указанный порядок.

Parameters:

ПараметрТипОписание
scaleXfloatМасштаб X.
scaleYfloatМасштаб Y.
orderintПорядок.

scale(float sx, float sy)

public final void scale(float sx, float sy)

Применяет указанный вектор масштабирования (scaleX и scaleY) к этой Matrix, используя (по умолчанию) порядок Prepend.

Parameters:

ПараметрТипОписание
sxfloatЗначение sx. Значение sx. Значение sx.
syfloatЗначение sy. Значение sy. Значение sy.

translate(float offsetX, float offsetY, int order)

public final void translate(float offsetX, float offsetY, int order)

Применяет указанный вектор переноса к этой Matrix в указанном порядке.

Parameters:

ПараметрТипОписание
offsetXfloatСмещение X.
offsetYfloatСмещение Y.
orderintПорядок.

translate(float tx, float ty)

public final void translate(float tx, float ty)

Применяет указанный вектор переноса к этой Matrix, используя (по умолчанию) порядок Prepend.

Parameters:

ПараметрТипОписание
txfloatЗначение tx. Значение tx. Значение tx.
tyfloatЗначение ty. Значение ty. Значение ty.

multiply(Matrix tTx, int order)

public final void multiply(Matrix tTx, int order)

Умножает эту Matrix на матрицу, указанную в параметре matrix, и в порядке, указанном в параметре order.

Parameters:

ПараметрТипОписание
tTxMatrixЗначение tx. Значение tx. Значение tx.
orderintПорядок. Порядок. Порядок.

multiply(Matrix tTx)

public final void multiply(Matrix tTx)

Умножает эту Matrix на матрицу, указанную в параметре matrix, используя (по умолчанию) порядок Prepend.

Parameters:

ПараметрТипОписание
tTxMatrixМатрица для умножения.

rotate(float angle, int order)

public final void rotate(float angle, int order)

Применяет вращение по часовой стрелке на величину, указанную в параметре angle, вокруг начала координат (ноль по x и y) для этой Matrix в указанном порядке.

Parameters:

ПараметрТипОписание
anglefloatУгол вращения.
orderintПорядок матрицы.

rotate(float angle)

public final void rotate(float angle)

Применяет вращение по часовой стрелке на величину, указанную в параметре angle, вокруг начала координат (ноль по x и y) для этой Matrix в порядке по умолчанию (Prepend).

Parameters:

ПараметрТипОписание
anglefloatУгол вращения.

rotateAt(float angle, PointF point, int order)

public final void rotateAt(float angle, PointF point, int order)

Применяет вращение по часовой стрелке вокруг указанной точки к этой Matrix в указанном порядке.

Parameters:

ПараметрТипОписание
anglefloatУгол.
pointPointFТочка.
orderintПорядок.

rotateAt(float angle, PointF point)

public final void rotateAt(float angle, PointF point)

Применяет вращение по часовой стрелке вокруг указанной точки к этой Matrix в порядке по умолчанию (Prepend).

Parameters:

ПараметрТипОписание
anglefloatУгол.
pointPointFТочка.

reset()

public final void reset()

Сбрасывает эту матрицу, чтобы её элементы соответствовали единичной матрице.

hashCode()

public int hashCode()

Возвращает хеш-код для этого экземпляра.

Returns: int — хеш-код для этого экземпляра, пригодный для использования в алгоритмах хеширования и структурах данных, таких как хеш-таблица.

equals(Object obj)

public boolean equals(Object obj)

Определяет, равен ли указанный Object этому экземпляру.

Parameters:

ПараметрТипОписание
objjava.lang.ObjectОбъект Object для сравнения с этим экземпляром.

Returns: логический тип - true, если указанный Object равен этому экземпляру; иначе false.

isIdentity()

public boolean isIdentity()

Возвращает true, если этот AffineTransform является единичным преобразованием.

Returns: логический тип - true, если этот AffineTransform является единичным преобразованием; false в противном случае.