Класс AffineTransform

Все реализованные интерфейсы:
Serializable, Cloneable
public class AffineTransform
extends Object
implements Cloneable, Serializable

Класс AffineTransform представляет 2D аффинное преобразование, которое выполняет линейное отображение из 2D координат в другие 2D координаты, сохраняя «прямолинейность» и «параллельность» линий. Аффинные преобразования могут быть построены с помощью последовательностей перемещений, масштабирования, переворачивания, вращения и наклона.

Такое преобразование координат можно представить матрицей 3 строки на 3 столбца с неявной последней строкой [ 0 0 1 ]. Эта матрица преобразует исходные координаты (x,y) в целевые координаты (x',y'), рассматривая их как вектор-столбец и умножая координатный вектор на матрицу в соответствии со следующим процессом:

[ x']   [  m00  m01  m02  ] [ x ]   [ m00x + m01y + m02 ]
      [ y'] = [  m10  m11  m12  ] [ y ] = [ m10x + m11y + m12 ]
      [ 1 ]   [   0    0    1   ] [ 1 ]   [         1         ]

Обработка вращений на 90 градусов

В некоторых вариантах методов rotate в классе AffineTransform аргумент с двойной точностью определяет угол вращения в радианах. Эти методы имеют специальную обработку для вращений примерно на 90 градусов (включая кратные значения, такие как 180, 270 и 360 градусов), чтобы более эффективно обрабатывать распространённый случай вращения на квадрант. Эта специальная обработка может привести к тому, что углы, очень близкие к кратным значениям 90 градусов, будут рассматриваться как точные кратные 90 градусов. Для небольших кратных 90 градусов диапазон углов, обрабатываемых как вращение на квадрант, составляет приблизительно 0,00000121 градуса. Этот раздел объясняет, почему необходима такая особая обработка и как она реализована.

Поскольку 90 градусов представлены как PI/2 в радианах, и поскольку PI является трансцендентным (а значит, иррациональным) числом, невозможно точно представить кратное 90 градусов как точное значение двойной точности, измеренное в радианах. В результате теоретически невозможно описать вращения на квадрант (90, 180, 270 или 360 градусов) с использованием этих значений. Значения с двойной точностью с плавающей запятой могут приближаться к ненулевым кратным PI/2, но никогда не достаточно близко, чтобы синус или косинус были точно равны 0,0, 1,0 или -1,0. Реализации Math.sin() и Math.cos() соответственно никогда не возвращают 0,0 ни в одном случае, кроме Math.sin(0.0). Однако эти же реализации возвращают точно 1,0 и -1,0 для некоторого диапазона чисел вокруг каждого кратного 90 градусов, поскольку правильный ответ настолько близок к 1,0 или -1,0, что разницу нельзя точно представить с помощью мантиссы двойной точности, как это возможно для чисел, близких к 0,0.

Итогом этих проблем является то, что если методы Math.sin() и Math.cos() используются для непосредственного создания значений для модификаций матрицы во время этих операций вращения на основе радиан, то результирующее преобразование никогда не будет строго классифицироваться как вращение на квадрант даже в простом случае, как rotate(Math.PI/2.0), из-за незначительных изменений в матрице, вызванных ненулевыми значениями синуса и косинуса. Если эти преобразования не классифицируются как вращения на квадрант, то последующий код, пытающийся оптимизировать дальнейшие операции на основе типа преобразования, будет ограничен его наиболее общей реализацией.

Поскольку вращения на квадрант довольно распространены, этот класс должен обрабатывать эти случаи достаточно быстро, как при применении вращений к преобразованию, так и при применении результирующего преобразования к координатам. Для обеспечения этой оптимальной обработки методы, принимающие угол вращения в радианах, пытаются определить углы, которые предназначены для вращения на квадрант, и обрабатывают их как таковые. Таким образом, эти методы рассматривают угол тета как вращение на квадрант, если Math.sin(theta) или Math.cos(theta) возвращают точно 1,0 или -1,0. Как правило, это свойство верно для диапазона примерно 0,0000000211 радиан (или 0,00000121 градуса) вокруг малых кратных значений Math.PI/2.0.

С момента:
1.2
См. также:
Сериализованная форма

Поля

Модификатор и тип Поле Описание
static int TYPE_FLIP

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

static int TYPE_GENERAL_ROTATION

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

static int TYPE_GENERAL_SCALE

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

static int TYPE_GENERAL_TRANSFORM

Эта константа указывает, что преобразование, определенное этим объектом, выполняет произвольное преобразование входных координат.

static int TYPE_IDENTITY

Эта константа указывает, что преобразование, определенное этим объектом, является тождественным преобразованием.

static int TYPE_MASK_ROTATION

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

static int TYPE_MASK_SCALE

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

static int TYPE_QUADRANT_ROTATION

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

static int TYPE_TRANSLATION

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

static int TYPE_UNIFORM_SCALE

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

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

Конструктор Описание
AffineTransform()

Создаёт новый AffineTransform, представляющий тождественное преобразование.

AffineTransform​(double[] flatmatrix)

Создаёт новый AffineTransform из массива значений двойной точности, представляющих либо 4 ненулевые элементы, либо 6 задаваемых элементов матрицы преобразования 3x3.

AffineTransform​(double m00, double m10, double m01, double m11, double m02, double m12)

Создаёт новый AffineTransform из 6 значений двойной точности, представляющих 6 задаваемых элементов матрицы преобразования 3x3.

AffineTransform​(float[] flatmatrix)

Создаёт новый AffineTransform из массива значений с плавающей точкой, представляющих либо 4 ненулевые элементы, либо 6 задаваемых элементов матрицы преобразования 3x3.

AffineTransform​(float m00, float m10, float m01, float m11, float m02, float m12)

Создаёт новый AffineTransform из 6 значений с плавающей точкой, представляющих 6 задаваемых элементов матрицы преобразования 3x3.

AffineTransform​(AffineTransform Tx)

Создаёт новый AffineTransform, являющийся копией указанного объекта AffineTransform.

Краткое описание методов

Модификатор и тип Метод Описание
Object clone()

Возвращает копию этого объекта AffineTransform.

void concatenate​(AffineTransform Tx)

Объединяет AffineTransform Tx с этим AffineTransform Cx наиболее распространенным способом для предоставления нового пользовательского пространства, которое отображается на прежнее пользовательское пространство с помощью Tx.

AffineTransform createInverse()

Возвращает объект AffineTransform, представляющий обратное преобразование.

Shape createTransformedShape​(Shape pSrc)

Возвращает новый объект Shape, определяемый геометрией указанного Shape после его преобразования этим преобразованием.

void deltaTransform​(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

Преобразует массив векторов относительных расстояний с помощью этого преобразования.

Point2D deltaTransform​(Point2D ptSrc, Point2D ptDst)

Преобразует вектор относительного расстояния, заданный ptSrc, и сохраняет результат в ptDst.

boolean equals​(Object obj)

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

double getDeterminant()

Возвращает определитель матричного представления преобразования.

void getMatrix​(double[] flatmatrix)

Извлекает 6 задаваемых значений в матрице аффинного преобразования 3x3 и помещает их в массив значений двойной точности.

static AffineTransform getQuadrantRotateInstance​(int numquadrants)

Возвращает преобразование, которое поворачивает координаты на указанное количество квадрантов.

static AffineTransform getQuadrantRotateInstance​(int numquadrants, double anchorx, double anchory)

Возвращает преобразование, которое поворачивает координаты на указанное количество квадрантов вокруг указанной точки привязки.

static AffineTransform getRotateInstance​(double theta)

Возвращает преобразование, представляющее преобразование вращения.

static AffineTransform getRotateInstance​(double vecx, double vecy)

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

static AffineTransform getRotateInstance​(double theta, double anchorx, double anchory)

Возвращает преобразование, которое поворачивает координаты вокруг точки привязки.

static AffineTransform getRotateInstance​(double vecx, double vecy, double anchorx, double anchory)

Возвращает преобразование, которое поворачивает координаты вокруг точки привязки в соответствии с вектором вращения.

static AffineTransform getScaleInstance​(double sx, double sy)

Возвращает преобразование, представляющее преобразование масштабирования.

double getScaleX()

Возвращает элемент m00 матрицы аффинного преобразования 3x3.

double getScaleY()

Возвращает элемент m11 матрицы аффинного преобразования 3x3.

static AffineTransform getShearInstance​(double shx, double shy)

Возвращает преобразование, представляющее преобразование сдвига.

double getShearX()

Возвращает элемент сдвига координаты X (m01) матрицы аффинного преобразования 3x3.

double getShearY()

Возвращает элемент сдвига координаты Y (m10) матрицы аффинного преобразования 3x3.

static AffineTransform getTranslateInstance​(double tx, double ty)

Возвращает преобразование, представляющее преобразование перемещения.

double getTranslateX()

Возвращает координату X элемента перемещения (m02) матрицы аффинного преобразования 3x3.

double getTranslateY()

Возвращает координату Y элемента перемещения (m12) матрицы аффинного преобразования 3x3.

int getType()

Извлекает биты флага, описывающие свойства преобразования этого преобразования.

int hashCode()

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

void inverseTransform​(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

Обратно преобразует массив координат двойной точности с помощью этого преобразования.

Point2D inverseTransform​(Point2D ptSrc, Point2D ptDst)

Обратно преобразует указанный ptSrc и сохраняет результат в ptDst.

void invert()

Устанавливает это преобразование в обратное самому себе.

boolean isIdentity()

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

void preConcatenate​(AffineTransform Tx)

Объединяет AffineTransform Tx с этим AffineTransform Cx менее распространенным способом, таким образом, что Tx изменяет преобразование координат относительно абсолютного пространства пикселей, а не относительно существующего пользовательского пространства.

void quadrantRotate​(int numquadrants)

Объединяет это преобразование с преобразованием, которое поворачивает координаты на указанное количество квадрантов.

void quadrantRotate​(int numquadrants, double anchorx, double anchory)

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

void rotate​(double theta)

Объединяет это преобразование с преобразованием вращения.

void rotate​(double vecx, double vecy)

Объединяет это преобразование с преобразованием, которое поворачивает координаты в соответствии с вектором вращения.

void rotate​(double theta, double anchorx, double anchory)

Объединяет это преобразование с преобразованием, которое поворачивает координаты вокруг точки привязки.

void rotate​(double vecx, double vecy, double anchorx, double anchory)

Объединяет это преобразование с преобразованием, которое поворачивает координаты вокруг точки привязки в соответствии с вектором вращения.

void scale​(double sx, double sy)

Объединяет это преобразование с преобразованием масштабирования.

void setToIdentity()

Сбрасывает это преобразование до тождественного преобразования.

void setToQuadrantRotation​(int numquadrants)

Устанавливает это преобразование в преобразование вращения, которое поворачивает координаты на указанное количество квадрантов.

void setToQuadrantRotation​(int numquadrants, double anchorx, double anchory)

Устанавливает это преобразование в переведенное преобразование вращения, которое поворачивает координаты на указанное количество квадрантов вокруг указанной точки привязки.

void setToRotation​(double theta)

Устанавливает это преобразование в преобразование вращения.

void setToRotation​(double vecx, double vecy)

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

void setToRotation​(double theta, double anchorx, double anchory)

Устанавливает это преобразование в переведенное преобразование вращения.

void setToRotation​(double vecx, double vecy, double anchorx, double anchory)

Устанавливает это преобразование в преобразование вращения, которое поворачивает координаты вокруг точки привязки в соответствии с вектором вращения.

void setToScale​(double sx, double sy)

Устанавливает это преобразование в преобразование масштабирования.

void setToShear​(double shx, double shy)

Устанавливает это преобразование в преобразование сдвига.

void setToTranslation​(double tx, double ty)

Устанавливает это преобразование в преобразование перемещения.

void setTransform​(double m00, double m10, double m01, double m11, double m02, double m12)

Устанавливает это преобразование в матрицу, заданную 6 значениями двойной точности.

void setTransform​(AffineTransform Tx)

Устанавливает это преобразование в копию преобразования в указанном объекте AffineTransform.

void shear​(double shx, double shy)

Объединяет это преобразование с преобразованием сдвига.

String toString()

Возвращает String, который представляет значение этого Object.

void transform​(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

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

void transform​(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)

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

void transform​(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

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

void transform​(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)

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

void transform​(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)

Преобразует массив объектов точек с помощью этого преобразования.

Point2D transform​(Point2D ptSrc, Point2D ptDst)

Преобразует указанный ptSrc и сохраняет результат в ptDst.

void translate​(double tx, double ty)

Конкатенирует это преобразование со смещением.

Методы, объявленные в классе java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

TYPE_IDENTITY

public static final int TYPE_IDENTITY

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

С тех пор:
1.2
См. также:
TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION

Этот флаг указывает, что преобразование, определённое этим объектом, выполняет сдвиг (трансляцию) в дополнение к преобразованиям, указанным другими флагами. Сдвиг перемещает координаты на постоянное значение по x и y без изменения длины или угла векторов.

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE

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

С тех пор:
1.2
См. также:
TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, Значения постоянных полей

TYPE_FLIP

public static final int TYPE_FLIP

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения постоянных полей

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION

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

С тех пор:
1.2
См. также:
TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, Значения постоянных полей

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM

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

С тех пор:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, getType(), Значения постоянных полей

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

AffineTransform

public AffineTransform()

Создаёт новый объект AffineTransform, представляющий тождественное преобразование.

Since:
1.2

AffineTransform

public AffineTransform(AffineTransform Tx)

Создаёт новый объект AffineTransform, являющийся копией указанного объекта AffineTransform.

Parameters:
Tx - копируемый объект AffineTransform
Since:
1.2

AffineTransform

@ConstructorProperties({"scaleX","shearY","shearX","scaleY","translateX","translateY"})
public AffineTransform(float m00,
                       float m10,
                       float m01,
                       float m11,
                       float m02,
                       float m12)

Создаёт новый объект AffineTransform из шести значений с плавающей точкой, представляющих шесть задаваемых элементов матрицы преобразования 3x3.

Parameters:
m00 - элемент масштабирования по оси X матрицы 3x3
m10 - элемент сдвига по оси Y матрицы 3x3
m01 - элемент сдвига по оси X матрицы 3x3
m11 - элемент масштабирования по оси Y матрицы 3x3
m02 - элемент смещения по оси X матрицы 3x3
m12 - элемент смещения по оси Y матрицы 3x3
Since:
1.2

AffineTransform

public AffineTransform(float[] flatmatrix)

Создаёт новый объект AffineTransform из массива значений с плавающей точкой, представляющих либо 4 элемента, не являющиеся смещениями, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива как { m00 m10 m01 m11 [m02 m12]}.

Parameters:
flatmatrix - массив типа float, содержащий значения, которые нужно установить в новый объект AffineTransform. Длина массива предполагается не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений.
Since:
1.2

AffineTransform

public AffineTransform(double m00,
                       double m10,
                       double m01,
                       double m11,
                       double m02,
                       double m12)

Создаёт новый объект AffineTransform из шести значений двойной точности, представляющих шесть задаваемых элементов матрицы преобразования 3x3.

Parameters:
m00 - элемент масштабирования по оси X матрицы 3x3
m10 - элемент сдвига по оси Y матрицы 3x3
m01 - элемент сдвига по оси X матрицы 3x3
m11 - элемент масштабирования по оси Y матрицы 3x3
m02 - элемент смещения по оси X матрицы 3x3
m12 - элемент смещения по оси Y матрицы 3x3
Since:
1.2

AffineTransform

public AffineTransform(double[] flatmatrix)

Создаёт новый объект AffineTransform из массива значений двойной точности, представляющих либо 4 элемента, не являющиеся смещениями, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива как { m00 m10 m01 m11 [m02 m12]}.

Parameters:
flatmatrix - массив типа double, содержащий значения, которые нужно установить в новый объект AffineTransform. Длина массива предполагается не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений.
Since:
1.2

Методы

getTranslateInstance

public static AffineTransform getTranslateInstance(double tx,
                                                   double ty)

Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращённое преобразование:

[   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]

Параметры:
tx - расстояние сдвига координат по оси X
ty - расстояние сдвига координат по оси Y
Возвращает:
объект AffineTransform, представляющий сдвиг, созданный с указанным вектором.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double theta)

Возвращает преобразование, представляющее поворот. Матрица, представляющая возвращённое преобразование:

[   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение обработки поворотов на 90 градусов выше.

Параметры:
theta - угол поворота в радианах
Возвращает:
объект AffineTransform, представляющий поворот, созданный с указанным углом.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double theta,
                                                double anchorx,
                                                double anchory)

Возвращает преобразование, вращающее координаты вокруг точки-якоря. Эта операция эквивалентна сдвигу координат так, что точка-якорь находится в начале координат (S1), затем вращению их вокруг нового начала координат (S2) и, наконец, сдвигу так, чтобы промежуточное начало координат восстановилось в координаты исходной точки-якоря (S3).

Эта операция эквивалентна следующей последовательности вызовов:

AffineTransform Tx = new AffineTransform();
     Tx.translate(anchorx, anchory);    // S3: final translation
     Tx.rotate(theta);                  // S2: rotate around anchor
     Tx.translate(-anchorx, -anchory);  // S1: translate anchor to origin
Матрица, представляющая возвращённое преобразование:
[   cos(theta)    -sin(theta)    x-x*cos+y*sin  ]
          [   sin(theta)     cos(theta)    y-x*sin-y*cos  ]
          [       0              0               1        ]
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение обработки поворотов на 90 градусов выше.
Параметры:
theta - угол поворота в радианах
anchorx - координата X точки-якоря
anchory - координата Y точки-якоря
Возвращает:
объект AffineTransform, вращающий координаты вокруг указанной точки на указанный угол.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double vecx,
                                                double vecy)

Возвращает преобразование, вращающее координаты согласно вектору поворота. Все координаты поворачиваются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты по прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если vecx и vecy равны 0.0, возвращается тождественное преобразование. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
Возвращает:
объект AffineTransform, вращающий координаты согласно указанному вектору поворота.
Since:
1.6

getRotateInstance

public static AffineTransform getRotateInstance(double vecx,
                                                double vecy,
                                                double anchorx,
                                                double anchory)

Возвращает преобразование, вращающее координаты вокруг точки-якоря согласно вектору поворота. Все координаты поворачиваются вокруг указанных координат точки-якоря на одинаковый угол. Величина поворота такова, что координаты по прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если vecx и vecy равны 0.0, возвращается тождественное преобразование. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(Math.atan2(vecy, vecx),
                                       anchorx, anchory);

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки-якоря
anchory - координата Y точки-якоря
Возвращает:
объект AffineTransform, вращающий координаты вокруг указанной точки согласно указанному вектору поворота.
Since:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants)

Возвращает преобразование, вращающее координаты на указанное число квадрантов. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);
Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество 90-градусных дуг поворота
Возвращает:
объект AffineTransform, вращающий координаты на указанное количество квадрантов.
Since:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants,
                                                        double anchorx,
                                                        double anchory)

Возвращает преобразование, вращающее координаты на указанное число квадрантов вокруг указанной точки-якоря. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0,
                                       anchorx, anchory);
Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество 90-градусных дуг поворота
anchorx - координата X точки-якоря
anchory - координата Y точки-якоря
Возвращает:
объект AffineTransform, вращающий координаты на указанное количество квадрантов вокруг указанной точки-якоря.
Since:
1.6

getScaleInstance

public static AffineTransform getScaleInstance(double sx,
                                               double sy)

Возвращает преобразование, представляющее масштабирование. Матрица, представляющая возвращённое преобразование:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Параметры:
sx - множитель масштабирования по оси X
sy - множитель масштабирования по оси Y
Возвращает:
объект AffineTransform, масштабирующий координаты на указанные множители.
Since:
1.2

getShearInstance

public static AffineTransform getShearInstance(double shx,
                                               double shy)

Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращённое преобразование:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Параметры:
shx - множитель сдвига по оси X, зависящий от координаты Y
shy - множитель сдвига по оси Y, зависящий от координаты X
Возвращает:
объект AffineTransform, сдвигающий координаты на указанные множители.
Since:
1.2

getType

public int getType()

Возвращает биты флагов, описывающие свойства преобразования. Возвращаемое значение — одна из констант TYPE_IDENTITY или TYPE_GENERAL_TRANSFORM, или комбинация соответствующих битов флагов. Допустимая комбинация битов флагов — операция побитового ИЛИ, которая может объединять бит флага TYPE_TRANSLATION в дополнение к любому из битов флагов TYPE_UNIFORM_SCALE или TYPE_GENERAL_SCALE, а также любому из битов флагов TYPE_QUADRANT_ROTATION или TYPE_GENERAL_ROTATION.

Возвращает:
комбинация побитового ИЛИ указанных флагов, применимых к этому преобразованию
Since:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM

getDeterminant

public double getDeterminant()

Возвращает определитель матрицы, представляющей преобразование. Определитель полезен для определения возможности обратного преобразования и получения единственного значения, представляющего комбинированное масштабирование по осям X и Y преобразования.

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

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

Математически определитель вычисляется по формуле:

|  m00  m01  m02  |
          |  m10  m11  m12  |  =  m00 * m11 - m01 * m10
          |   0    0    1   |
Возвращает:
определитель матрицы, используемой для преобразования координат.
Since:
1.2
См. также:
getType(), createInverse(), inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D), TYPE_UNIFORM_SCALE

getMatrix

public void getMatrix(double[] flatmatrix)

Возвращает 6 значений в матрице аффинного преобразования 3x3 и помещает их в массив значений двойной точности. Значения хранятся в массиве как { m00 m10 m01 m11 m02 m12 }. Массив из 4 двойных значений также может быть указан, в этом случае извлекаются только первые четыре элемента, представляющие нетрансформационные части массива, и значения хранятся в массиве как { m00 m10 m01 m11 }

Параметры:
flatmatrix - массив двойных значений для хранения возвращаемых значений.
Since:
1.2
См. также:
getScaleX(), getScaleY(), getShearX(), getShearY(), getTranslateX(), getTranslateY()

getScaleX

public double getScaleX()

Возвращает элемент m00 матрицы аффинного преобразования 3x3. Этот множитель матрицы определяет, как входные координаты X повлияют на выходные координаты X, и является одним элементом масштаба преобразования. Чтобы измерить полное количество, на которое координаты X растягиваются или сжимаются этим преобразованием, используйте следующий код:

Point2D p = new Point2D.Double(1, 0);
     p = tx.deltaTransform(p, p);
     double scaleX = p.distance(0, 0);

Возвращает:
двойное значение, которое является m00 элементом матрицы аффинного преобразования 3x3.
С:
1.2
См. также:
getMatrix(double[])

getScaleY

public double getScaleY()

Возвращает элемент m11 матрицы аффинного преобразования 3x3. Этот множитель матрицы определяет, как входные координаты Y повлияют на выходные координаты Y, и является одним элементом масштаба преобразования. Чтобы измерить полное количество, на которое координаты Y растягиваются или сжимаются этим преобразованием, используйте следующий код:

Point2D p = new Point2D.Double(0, 1);
     p = tx.deltaTransform(p, p);
     double scaleY = p.distance(0, 0);

Возвращает:
двойное значение, которое является m11 элементом матрицы аффинного преобразования 3x3.
С:
1.2
См. также:
getMatrix(double[])

getShearX

public double getShearX()

Возвращает элемент сдвига по оси X (m01) матрицы аффинного преобразования 3x3.

Возвращает:
двойное значение, являющееся координатой X элемента сдвига матрицы аффинного преобразования.
С:
1.2
См. также:
getMatrix(double[])

getShearY

public double getShearY()

Возвращает элемент сдвига по оси Y (m10) матрицы аффинного преобразования 3x3.

Возвращает:
двойное значение, являющееся координатой Y элемента сдвига матрицы аффинного преобразования.
С:
1.2
См. также:
getMatrix(double[])

getTranslateX

public double getTranslateX()

Возвращает координату X элемента перевода (m02) матрицы аффинного преобразования 3x3.

Возвращает:
двойное значение, являющееся координатой X элемента перевода матрицы аффинного преобразования.
С:
1.2
См. также:
getMatrix(double[])

getTranslateY

public double getTranslateY()

Возвращает координату Y элемента перевода (m12) матрицы аффинного преобразования 3x3.

Возвращает:
двойное значение, являющееся координатой Y элемента перевода матрицы аффинного преобразования.
С:
1.2
См. также:
getMatrix(double[])

translate

public void translate(double tx,
                      double ty)

Объединяет это преобразование с преобразованием перевода. Это эквивалентно вызову concatenate(T), где T — AffineTransform представленное следующей матрицей:

[   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]

Параметры:
tx - расстояние, на которое координаты переводятся по оси X
ty - расстояние, на которое координаты переводятся по оси Y
С:
1.2

rotate

public void rotate(double theta)

Объединяет это преобразование с преобразованием поворота. Это эквивалентно вызову concatenate(R), где R — AffineTransform представленное следующей матрицей:

[   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.

Параметры:
theta - угол поворота в радианах
С:
1.2

rotate

public void rotate(double theta,
                   double anchorx,
                   double anchory)

Объединяет это преобразование с преобразованием поворота вокруг точки-якоря. Эта операция эквивалентна перемещению координат так, чтобы точка-якорь находилась в начале координат (S1), затем повороту их вокруг нового начала координат (S2) и, наконец, перемещению так, чтобы промежуточное начало координат было возвращено в координаты исходной точки-якоря (S3).

Эта операция эквивалентна следующей последовательности вызовов:

translate(anchorx, anchory);      // S3: final translation
     rotate(theta);                    // S2: rotate around anchor
     translate(-anchorx, -anchory);    // S1: translate anchor to origin
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Параметры:
theta - угол поворота в радианах
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
С:
1.2

rotate

public void rotate(double vecx,
                   double vecy)

Объединяет это преобразование с преобразованием, которое поворачивает координаты в соответствии с вектором поворота. Все координаты поворачиваются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если и vecx и vecy равны 0,0, к этому преобразованию не добавляется дополнительный поворот. Эта операция эквивалентна вызову:

rotate(Math.atan2(vecy, vecx));

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
С:
1.6

rotate

public void rotate(double vecx,
                   double vecy,
                   double anchorx,
                   double anchory)

Объединяет это преобразование с преобразованием, которое поворачивает координаты вокруг точки-якоря в соответствии с вектором поворота. Все координаты поворачиваются вокруг указанных координат точки-якоря на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если и vecx и vecy равны 0,0, преобразование никак не изменяется. Этот метод эквивалентен вызову:

rotate(Math.atan2(vecy, vecx), anchorx, anchory);

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
С:
1.6

quadrantRotate

public void quadrantRotate(int numquadrants)

Объединяет это преобразование с преобразованием, которое поворачивает координаты на заданное количество квадрантов. Это эквивалентно вызову:

rotate(numquadrants * Math.PI / 2.0);
Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество 90-градусных дуг для поворота
С:
1.6

quadrantRotate

public void quadrantRotate(int numquadrants,
                           double anchorx,
                           double anchory)

Объединяет это преобразование с преобразованием, которое поворачивает координаты на заданное количество квадрантов вокруг указанной точки-якоря. Этот метод эквивалентен вызову:

rotate(numquadrants * Math.PI / 2.0, anchorx, anchory);
Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество 90-градусных дуг для поворота
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
С:
1.6

scale

public void scale(double sx,
                  double sy)

Объединяет это преобразование с преобразованием масштабирования. Это эквивалентно вызову concatenate(S), где S — AffineTransform представленное следующей матрицей:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Параметры:
sx - множитель, на который координаты масштабируются по оси X
sy - множитель, на который координаты масштабируются по оси Y
С:
1.2

shear

public void shear(double shx,
                  double shy)

Объединяет это преобразование с преобразованием сдвига. Это эквивалентно вызову concatenate(SH), где SH — AffineTransform представленное следующей матрицей:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Параметры:
shx - множитель, на который координаты смещаются в направлении положительной оси X, как функция их координаты Y
shy - множитель, на который координаты смещаются в направлении положительной оси Y, как функция их координаты X
С:
1.2

setToIdentity

public void setToIdentity()

Сбрасывает это преобразование до тождественного преобразования.

С:
1.2

setToTranslation

public void setToTranslation(double tx,
                             double ty)

Устанавливает это преобразование в преобразование перевода. Матрица, представляющая это преобразование, становится:

[   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]

Параметры:
tx - расстояние, на которое координаты переводятся по оси X
ty - расстояние, на которое координаты переводятся по оси Y
С:
1.2

setToRotation

public void setToRotation(double theta)

Устанавливает это преобразование в преобразование поворота. Матрица, представляющая это преобразование, становится:

[   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.

Параметры:
theta - угол поворота в радианах
С:
1.2

setToRotation

public void setToRotation(double theta,
                          double anchorx,
                          double anchory)

Устанавливает это преобразование в преобразование переведённого поворота. Эта операция эквивалентна перемещению координат так, чтобы точка-якорь находилась в начале координат (S1), затем повороту их вокруг нового начала координат (S2) и, наконец, перемещению так, чтобы промежуточное начало координат было возвращено в координаты исходной точки-якоря (S3).

Эта операция эквивалентна следующей последовательности вызовов:

setToTranslation(anchorx, anchory); // S3: final translation
     rotate(theta);                      // S2: rotate around anchor
     translate(-anchorx, -anchory);      // S1: translate anchor to origin
Матрица, представляющая это преобразование, становится:
[   cos(theta)    -sin(theta)    x-x*cos+y*sin  ]
          [   sin(theta)     cos(theta)    y-x*sin-y*cos  ]
          [       0              0               1        ]
Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Параметры:
theta — угол поворота, измеряемый в радианах
anchorx — координата X точки якоря поворота
anchory — координата Y точки якоря поворота
С момента:
1.2

setToRotation

public void setToRotation(double vecx,
                          double vecy)

Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты согласно вектору поворота. Все координаты поворачиваются вокруг начала координат на один и тот же угол. Величина поворота такова, что координаты вдоль прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к заданным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:

setToRotation(Math.atan2(vecy, vecx));

Параметры:
vecx — координата X вектора поворота
vecy — координата Y вектора поворота
С момента:
1.6

setToRotation

public void setToRotation(double vecx,
                          double vecy,
                          double anchorx,
                          double anchory)

Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты вокруг точки якоря согласно вектору поворота. Все координаты поворачиваются вокруг заданных координат якоря на один и тот же угол. Величина поворота такова, что координаты вдоль прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к заданным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:

setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);

Параметры:
vecx — координата X вектора поворота
vecy — координата Y вектора поворота
anchorx — координата X точки якоря поворота
anchory — координата Y точки якоря поворота
С момента:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants)

Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты на заданное количество квадрантов. Эта операция эквивалентна вызову:

setToRotation(numquadrants * Math.PI / 2.0);
Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants — количество дуг по 90 градусов для поворота
С момента:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants,
                                  double anchorx,
                                  double anchory)

Устанавливает данное преобразование в переведённое поворотное преобразование, которое поворачивает координаты на заданное количество квадрантов вокруг заданной точки якоря. Эта операция эквивалентна вызову:

setToRotation(numquadrants * Math.PI / 2.0, anchorx, anchory);
Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants — количество дуг по 90 градусов для поворота
anchorx — координата X точки якоря поворота
anchory — координата Y точки якоря поворота
С момента:
1.6

setToScale

public void setToScale(double sx,
                       double sy)

Устанавливает данное преобразование в масштабирующее преобразование. Матрица, представляющая данное преобразование, становится:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Параметры:
sx — коэффициент масштабирования координат вдоль направления оси X
sy — коэффициент масштабирования координат вдоль направления оси Y
С момента:
1.2

setToShear

public void setToShear(double shx,
                       double shy)

Устанавливает данное преобразование в сдвиговое преобразование. Матрица, представляющая данное преобразование, становится:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Параметры:
shx — множитель, на который координаты смещаются в направлении положительной оси X, как множитель от их координаты Y
shy — множитель, на который координаты смещаются в направлении положительной оси Y, как множитель от их координаты X
С момента:
1.2

setTransform

public void setTransform(AffineTransform Tx)

Устанавливает данное преобразование в копию преобразования в указанном AffineTransform объекте.

Параметры:
Tx — AffineTransform объект, из которого копируется преобразование
С момента:
1.2

setTransform

public void setTransform(double m00,
                         double m10,
                         double m01,
                         double m11,
                         double m02,
                         double m12)

Устанавливает данное преобразование в матрицу, заданную 6 значениями двойной точности.

Параметры:
m00 — элемент масштабирования координаты X 3x3 матрицы
m10 — элемент сдвига координаты Y 3x3 матрицы
m01 — элемент сдвига координаты X 3x3 матрицы
m11 — элемент масштабирования координаты Y 3x3 матрицы
m02 — элемент смещения координаты X 3x3 матрицы
m12 — элемент смещения координаты Y 3x3 матрицы
С момента:
1.2

concatenate

public void concatenate(AffineTransform Tx)

Конкатенирует AffineTransform Tx с данным AffineTransform Cx наиболее удобным способом, чтобы предоставить новое пользовательское пространство, которое отображается в прежнем пользовательском пространстве с помощью Tx. Cx обновляется для выполнения объединённого преобразования. Преобразование точки p обновлённым преобразованием Cx' эквивалентно первому преобразованию p преобразованием Tx и затем преобразованию результата исходным преобразованием Cx так: Cx'(p) = Cx(Tx(p)). В матричной записи, если данное преобразование Cx представлено матрицей [this], а Tx представлено матрицей [Tx], то этот метод делает следующее:

[this] = [this] x [Tx]

Параметры:
Tx — AffineTransform объект, который необходимо конкатенировать с этим AffineTransform объектом.
С момента:
1.2
См. также:
preConcatenate(java.awt.geom.AffineTransform)

preConcatenate

public void preConcatenate(AffineTransform Tx)

Конкатенирует AffineTransform Tx с этим AffineTransform Cx менее распространённым способом, так что Tx изменяет преобразование координат относительно абсолютного пространства пикселей, а не относительно существующего пользовательского пространства. Cx обновляется для выполнения объединённого преобразования. Преобразование точки p обновлённым преобразованием Cx' эквивалентно первому преобразованию p исходным преобразованием Cx и затем преобразованию результата преобразованием Tx так: Cx'(p) = Tx(Cx(p)). В матричной записи, если данное преобразование Cx представлено матрицей [this], а Tx представлено матрицей [Tx], то этот метод делает следующее:

[this] = [Tx] x [this]

Параметры:
Tx — AffineTransform объект, который необходимо конкатенировать с этим AffineTransform объектом.
С момента:
1.2
См. также:
concatenate(java.awt.geom.AffineTransform)

createInverse

public AffineTransform createInverse()
                              throws NoninvertibleTransformException

Возвращает AffineTransform объект, представляющий обратное преобразование. Обратное преобразование Tx' этого преобразования Tx отображает координаты, преобразованные Tx, обратно в их исходные координаты. Другими словами, Tx'(Tx(p)) = p = Tx(Tx'(p)).

Если данное преобразование отображает все координаты на точку или линию, то у него не будет обратного преобразования, так как координаты, которые не лежат на целевой точке или линии, не будут иметь обратного отображения. Метод getDeterminant может использоваться для определения, не имеет ли данное преобразование обратного преобразования, в этом случае исключение будет брошено, если будет вызван метод createInverse.

Возвращает:
новый AffineTransform объект, представляющий обратное преобразование.
Бросает:
NoninvertibleTransformException — если матрицу нельзя инвертировать.
С момента:
1.2
См. также:
getDeterminant()

invert

public void invert()
            throws NoninvertibleTransformException

Устанавливает данное преобразование в обратное по отношению к себе. Обратное преобразование Tx' этого преобразования Tx отображает координаты, преобразованные Tx, обратно в их исходные координаты. Другими словами, Tx'(Tx(p)) = p = Tx(Tx'(p)).

Если данное преобразование отображает все координаты на точку или линию, то у него не будет обратного преобразования, так как координаты, которые не лежат на целевой точке или линии, не будут иметь обратного отображения. Метод getDeterminant может использоваться для определения, не имеет ли данное преобразование обратного преобразования, в этом случае исключение будет брошено, если будет вызван метод invert.

Бросает:
NoninvertibleTransformException — если матрицу нельзя инвертировать.
С момента:
1.6
См. также:
getDeterminant()

transform

public Point2D transform(Point2D ptSrc,
                         Point2D ptDst)

Преобразует указанную ptSrc и сохраняет результат в ptDst. Если ptDst равно null, выделяется новый объект Point2D, а затем результат преобразования сохраняется в этом объекте. В любом случае, возвращается ptDst, содержащий преобразованную точку, для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой.

Параметры:
ptSrc — указанная Point2D для преобразования
ptDst — указанная Point2D для хранения результата преобразования ptSrc
Возвращает:
ptDst после преобразования ptSrc и хранения результата в ptDst.
С момента:
1.2

transform

public void transform(Point2D[] ptSrc,
                      int srcOff,
                      Point2D[] ptDst,
                      int dstOff,
                      int numPts)

Преобразует массив объектов точек с помощью этого преобразования. Если какой-либо элемент массива ptDst является null, новый объект Point2D выделяется и сохраняется в этот элемент перед сохранением результатов преобразования.

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

Параметры:
ptSrc - массив, содержащий исходные объекты точек
ptDst - массив, в который возвращаются преобразованные объекты точек
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
С:
1.2

transform

public void transform(float[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)

Преобразует массив координат с плавающей точкой с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
С:
1.2

transform

public void transform(double[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)

Преобразует массив координат двойной точности с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
С:
1.2

transform

public void transform(float[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)

Преобразует массив координат с плавающей точкой с помощью этого преобразования и сохраняет результаты в массив чисел двойной точности. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
С:
1.2

transform

public void transform(double[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)

Преобразует массив координат двойной точности с помощью этого преобразования и сохраняет результаты в массив чисел с плавающей точкой. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
С:
1.2

inverseTransform

public Point2D inverseTransform(Point2D ptSrc,
                                Point2D ptDst)
                         throws NoninvertibleTransformException

Обратное преобразование указанной ptSrc и сохранение результата в ptDst. Если ptDst является null, новый объект Point2D выделяется, и результат преобразования сохраняется в этом объекте. В любом случае, ptDst, содержащий преобразованную точку, возвращается для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой.

Параметры:
ptSrc - точка, подлежащая обратному преобразованию
ptDst - результирующая преобразованная точка
Возвращает:
ptDst, содержащий результат обратного преобразования.
Исключения:
NoninvertibleTransformException - если матрица не может быть обращена.
С:
1.2

inverseTransform

public void inverseTransform(double[] srcPts,
                             int srcOff,
                             double[] dstPts,
                             int dstOff,
                             int numPts)
                      throws NoninvertibleTransformException

Обратное преобразование массива координат двойной точности с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки, подлежащей преобразованию в исходном массиве
dstOff - смещение до места первой преобразованной точки, которая сохраняется в целевом массиве
numPts - количество точек, подлежащих преобразованию
Исключения:
NoninvertibleTransformException - если матрица не может быть обращена.
С:
1.2

deltaTransform

public Point2D deltaTransform(Point2D ptSrc,
                              Point2D ptDst)

Преобразует вектор относительного смещения, заданный ptSrc, и сохраняет результат в ptDst. Вектор относительного смещения преобразуется без применения компонент переноса матрицы аффинного преобразования, используя следующие уравнения:

[  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
  [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
  [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
Если ptDst является null, новый объект Point2D выделяется, и результат преобразования сохраняется в этом объекте. В любом случае, ptDst, содержащий преобразованную точку, возвращается для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой.

Параметры:
ptSrc - вектор смещения, подлежащий преобразованию
ptDst - результирующий преобразованный вектор смещения
Возвращает:
ptDst, содержащий результат преобразования.
С:
1.2

deltaTransform

public void deltaTransform(double[] srcPts,
                           int srcOff,
                           double[] dstPts,
                           int dstOff,
                           int numPts)

Преобразует массив векторов относительного смещения с помощью этого преобразования. Вектор относительного смещения преобразуется без применения компонент переноса матрицы аффинного преобразования, используя следующие уравнения:

[  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
  [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
  [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].

Параметры:
srcPts - массив, содержащий исходные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
dstPts - массив, в который возвращаются преобразованные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
srcOff - смещение до первого вектора, подлежащего преобразованию в исходном массиве
dstOff - смещение до места первого преобразованного вектора, который сохраняется в целевом массиве
numPts - количество пар координат векторов, подлежащих преобразованию
С:
1.2

createTransformedShape

public Shape createTransformedShape(Shape pSrc)

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

Параметры:
pSrc - указанный Shape объект, который должен быть преобразован этим преобразованием.
Возвращает:
новый Shape объект, который определяет геометрию преобразованного Shape, или null, если pSrc равно null.
С:
1.2

toString

public String toString()

Возвращает строку, представляющую значение этого объекта Object.

Переопределяет:
toString в классе Object
Возвращает:
строку, представляющую значение этого объекта Object.
С:
1.2

isIdentity

public boolean isIdentity()

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

Возвращает:
true, если это AffineTransform является преобразованием тождества; false в противном случае.
С:
1.2

clone

public Object clone()

Возвращает копию этого объекта AffineTransform.

Переопределяет:
clone в классе Object
Возвращает:
объект Object, являющийся копией этого объекта AffineTransform.
С:
1.2
См. также:
Cloneable

hashCode

public int hashCode()

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

Переопределяет:
hashCode в классе Object
Возвращает:
хэш-код для этого преобразования.
С:
1.2
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

equals

public boolean equals(Object obj)

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

Переопределяет:
equals в классе Object
Параметры:
obj - объект Object, для проверки равенства с этим объектом AffineTransform
Возвращает:
true, если obj равен этому объекту AffineTransform; false в противном случае.
С:
1.2
См. также:
Object.hashCode(), HashMap

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/AffineTransform.html

Spec-Zone .ru
спецификации, руководства, описания, API