Spec-Zone.ru › OpenJDK 17

Класс AffineTransform

java.lang.Object
java.awt.geom.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 градусов. Для малых кратных 90 градусов диапазон углов, обрабатываемых как поворот на 90 градусов, составляет приблизительно 0,00000121 градусов. Этот раздел объясняет, почему необходима такая особая обработка, и как она реализована.

Поскольку 90 градусов представляются как PI/2 в радианах, и поскольку PI является трансцендентным (и, следовательно, иррациональным) числом, то невозможно точно представить кратное 90 градусов как точное значение двойной точности, измеренное в радианах. В результате теоретически невозможно описать повороты на 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() используются для непосредственного получения значений для модификаций матрицы во время этих операций вращения на основе радиан, то полученное преобразование никогда не будет строго классифицировано как поворот на 90 градусов, даже в простом случае, как rotate(Math.PI/2.0), из-за незначительных вариаций в матрице, вызванных ненулевыми значениями, полученными для синуса и косинуса. Если эти преобразования не классифицируются как повороты на 90 градусов, то последующий код, пытающийся оптимизировать дальнейшие операции на основе типа преобразования, будет использовать самый общий вариант реализации.

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

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

Краткое описание полей

Модификатор и тип Поле Описание
static final int TYPE_FLIP
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение относительно какой-либо оси, что изменяет обычно правостороннюю систему координат на левостороннюю в дополнение к преобразованиям, указанным другими флагами.
static final int TYPE_GENERAL_ROTATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет поворот на произвольный угол в дополнение к преобразованиям, указанным другими флагами.
static final int TYPE_GENERAL_SCALE
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет общее масштабирование в дополнение к преобразованиям, указанным другими флагами.
static final int TYPE_GENERAL_TRANSFORM
Эта константа указывает, что преобразование, определённое этим объектом, выполняет произвольное преобразование входных координат.
static final int TYPE_IDENTITY
Эта константа указывает, что преобразование, определённое этим объектом, является тождественным преобразованием.
static final int TYPE_MASK_ROTATION
Эта константа является битовой маской для любых битов флагов поворота.
static final int TYPE_MASK_SCALE
Эта константа является битовой маской для любых битов флагов масштабирования.
static final int TYPE_QUADRANT_ROTATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет поворот на 90 градусов на какое-либо кратное 90 градусов, в дополнение к преобразованиям, указанным другими флагами.
static final int TYPE_TRANSLATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет сдвиг в дополнение к преобразованиям, указанным другими флагами.
static final 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)
Преобразует массив координат двойной точности с помощью этого преобразования и сохраняет результаты в массив чисел с плавающей точкой.
END_OF_DOCUMENT_MARKER
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, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
Since:
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, не изменяя длину или угол векторов.
Since:
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.
Since:
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.
Since:
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
Эта константа — битовая маска для любого из флаговых битов масштабирования.
Since:
1.2
См. также:
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • Значения константных полей

TYPE_FLIP

public static final int TYPE_FLIP
Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение относительно некоторой оси, что изменяет обычную правую систему координат на левую, помимо преобразований, указанных другими флаговыми битами. Правая система координат — это система, где положительная ось X вращается против часовой стрелки, чтобы наложить положительную ось Y, подобно тому, как скручиваются пальцы правой руки, когда вы смотрите прямо на большой палец. Левая система координат — это система, где положительная ось X вращается по часовой стрелке, чтобы наложить положительную ось Y, подобно тому, как скручиваются пальцы левой руки. Нет математического способа определить угол исходного преобразования отражения, так как все углы отражения одинаковы при соответствующем корректирующем вращении.
Since:
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 градусов, кратный целому числу, помимо преобразований, указанных другими флаговыми битами. Поворот изменяет углы векторов на одно и то же значение независимо от первоначального направления вектора и не изменяет длину вектора. Этот флаговый бит несовместим с флаговым битом TYPE_GENERAL_ROTATION.
Since:
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.
Since:
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
Эта константа — битовая маска для любого из флаговых битов поворота.
Since:
1.2
См. также:
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • Значения константных полей

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM
Эта константа указывает, что преобразование, определённое этим объектом, выполняет произвольное преобразование входных координат. Если это преобразование можно классифицировать по какой-либо из вышеперечисленных констант, тип будет либо константой TYPE_IDENTITY, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
Since:
1.2
See Also:
  • 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 из 6 значений с плавающей запятой, представляющих 6 задаваемых элементов матрицы преобразования 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 из 6 значений двойной точности, представляющих 6 задаваемых элементов матрицы преобразования 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   ]
 
Parameters:
tx - расстояние, на которое координаты смещаются по оси X
ty - расстояние, на которое координаты смещаются по оси Y
Returns:
объект AffineTransform, представляющий преобразование смещения, созданный со заданным вектором.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double theta)
Возвращает преобразование, представляющее собой поворот. Матрица, представляющая возвращаемое преобразование:
          [   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
 
Поворот на положительный угол theta поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Parameters:
theta - угол поворота в радианах
Returns:
объект 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        ]
 
Поворот на положительный угол theta поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Parameters:
theta - угол поворота в радианах
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
Returns:
объект AffineTransform, который вращает координаты вокруг указанной точки на указанный угол поворота.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double vecx, double vecy)
Возвращает преобразование, которое вращает координаты по вектору поворота. Все координаты вращаются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к координатам указанного вектора. Если оба vecx и vecy равны 0,0, возвращается тождественное преобразование. Эта операция эквивалентна вызову:
     AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));
 
Parameters:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
Returns:
объект 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);
 
Parameters:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
Returns:
объект AffineTransform, который вращает координаты вокруг указанной точки по указанному вектору поворота.
Since:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants)
Возвращает преобразование, которое вращает координаты на указанное количество квадрантов. Эта операция эквивалентна вызову:
     AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);
 
Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.
Parameters:
numquadrants - число 90-градусных дуг для поворота
Returns:
объект 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.
Parameters:
numquadrants - количество 90-градусных дуг поворота
anchorx - координата X точки вращения
anchory - координата Y точки вращения
Returns:
объект AffineTransform, который вращает координаты на указанное количество квадрантов вокруг указанной точки якорной точки.
Since:
1.6

getScaleInstance

public static AffineTransform getScaleInstance(double sx, double sy)
Возвращает преобразование, представляющее масштабирование. Матрица, представляющая возвращаемое преобразование:
          [   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]
 
Parameters:
sx - коэффициент масштабирования координат по оси X
sy - коэффициент масштабирования координат по оси Y
Returns:
объект AffineTransform, который масштабирует координаты на указанные коэффициенты.
Since:
1.2

getShearInstance

public static AffineTransform getShearInstance(double shx, double shy)
Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращаемое преобразование:
          [   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]
 
Parameters:
shx - множитель, на который координаты смещаются в направлении положительной оси X как функция от их координаты Y
shy - множитель, на который координаты смещаются в направлении положительной оси Y как функция от их координаты X
Returns:
объект 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.
Returns:
логическое ИЛИ всех применимых флагов к этому преобразованию
Since:
1.2
See Also:
  • 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   |
 
Returns:
определитель матрицы, используемой для преобразования координат.
Since:
1.2
See Also:
  • 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 элементов double, в этом случае извлекаются только первые четыре элемента, представляющие нетрансформированные части массива, и значения хранятся в массиве как { m00 m10 m01 m11 }
Parameters:
flatmatrix - массив double для хранения возвращаемых значений.
Since:
1.2
See Also:
  • 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);
 
Returns:
значение double, которое является элементом m00 матрицы аффинного преобразования 3x3.
Since:
1.2
See Also:
  • 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);
 
Returns:
значение double, которое является элементом m11 матрицы аффинного преобразования 3x3.
Since:
1.2
See Also:
  • getMatrix(double[])

getShearX

public double getShearX()
Возвращает элемент сдвига по оси X (m01) матрицы аффинного преобразования 3x3.
Returns:
значение double, являющееся координатой X элемента сдвига матрицы аффинного преобразования.
Since:
1.2
See Also:
  • getMatrix(double[])

getShearY

public double getShearY()
Возвращает элемент сдвига по оси Y (m10) матрицы аффинного преобразования 3x3.
Returns:
значение double, являющееся координатой Y элемента сдвига матрицы аффинного преобразования.
Since:
1.2
See Also:
  • getMatrix(double[])

getTranslateX

public double getTranslateX()
Возвращает координату X элемента смещения (m02) матрицы аффинного преобразования 3x3.
Returns:
значение double, являющееся координатой X элемента смещения матрицы аффинного преобразования.
Since:
1.2
See Also:
  • getMatrix(double[])

getTranslateY

public double getTranslateY()
Возвращает координату Y элемента смещения (m12) матрицы аффинного преобразования 3x3.
Returns:
значение double, являющееся координатой Y элемента смещения матрицы аффинного преобразования.
Since:
1.2
See Also:
  • getMatrix(double[])

translate

public void translate(double tx, double ty)
Добавляет к этому преобразованию преобразование смещения. Это эквивалентно вызову concatenate(T), где T — это AffineTransform, представленное следующей матрицей:
          [   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]
 
Parameters:
tx - расстояние смещения по оси X
ty - расстояние смещения по оси Y
Since:
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   ]
 
Поворот на положительный угол theta поворачивает точки на положительной оси 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
 
Поворот на положительный угол theta поворачивает точки на положительной оси 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   ]
 
Поворот на положительный угол theta поворачивает точки на положительной оси 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        ]
 
Поворот на положительный угол theta поворачивает точки на положительной оси 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
END_OF_DOCUMENT_MARKER

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].
Parameters:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки для преобразования в исходном массиве
dstOff - смещение до места первой преобразованной точки, хранящейся в целевом массиве
numPts - количество точек для преобразования
Since:
1.2

transform

public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив координат двойной точности с помощью этого преобразования. Два массива координат могут быть абсолютно одинаковыми или перекрывающимися участками одного массива, не влияя на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией, прежде чем они могут быть преобразованы. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
Parameters:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки для преобразования в исходном массиве
dstOff - смещение до места первой преобразованной точки, хранящейся в целевом массиве
numPts - количество точек для преобразования
Since:
1.2

transform

public void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив координат с плавающей точкой с помощью этого преобразования и сохраняет результаты в массив чисел двойной точности. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
Parameters:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки для преобразования в исходном массиве
dstOff - смещение до места первой преобразованной точки, хранящейся в целевом массиве
numPts - количество точек для преобразования
Since:
1.2

transform

public void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
Преобразует массив координат двойной точности с помощью этого преобразования и сохраняет результаты в массив чисел с плавающей точкой. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
Parameters:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки для преобразования в исходном массиве
dstOff - смещение до места первой преобразованной точки, хранящейся в целевом массиве
numPts - количество точек для преобразования
Since:
1.2

inverseTransform

public Point2D inverseTransform(Point2D ptSrc, Point2D ptDst) throws NoninvertibleTransformException
Обратное преобразование указанной ptSrc и сохранение результата в ptDst. Если ptDst равно null, новый объект Point2D выделяется, и затем результат преобразования сохраняется в этом объекте. В любом случае, ptDst, содержащий преобразованную точку, возвращается для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка правильно перезаписывается преобразованной точкой.
Parameters:
ptSrc - точка, которая должна быть обратным преобразованием
ptDst - результирующая преобразованная точка
Returns:
ptDst, содержащий результат обратного преобразования.
Throws:
NoninvertibleTransformException - если матрица не может быть обращена.
Since:
1.2

inverseTransform

public void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws NoninvertibleTransformException
Обратное преобразование массива координат двойной точности с помощью этого преобразования. Два массива координат могут быть абсолютно одинаковыми или перекрывающимися участками одного массива, не влияя на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией, прежде чем они могут быть преобразованы. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
Parameters:
srcPts - массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y.
dstPts - массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y.
srcOff - смещение до первой точки для преобразования в исходном массиве
dstOff - смещение до места первой преобразованной точки, хранящейся в целевом массиве
numPts - количество точек для преобразования
Throws:
NoninvertibleTransformException - если матрица не может быть обращена.
Since:
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 являются одним и тем же объектом, входная точка правильно перезаписывается преобразованной точкой.
Parameters:
ptSrc - вектор смещения, который должен быть преобразован
ptDst - результирующий преобразованный вектор смещения
Returns:
ptDst, содержащий результат преобразования.
Since:
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].
Parameters:
srcPts - массив, содержащий исходные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
dstPts - массив, в который возвращаются преобразованные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
srcOff - смещение до первого вектора для преобразования в исходном массиве
dstOff - смещение до места первого преобразованного вектора, хранящегося в целевом массиве
numPts - количество пар координат векторов для преобразования
Since:
1.2

createTransformedShape

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

toString

public String toString()
Возвращает String, представляющий значение этого Object.
Overrides:
toString в классе Object
Returns:
String, представляющий значение этого Object.
Since:
1.2

isIdentity

public boolean isIdentity()
Возвращает true, если это AffineTransform является тождественным преобразованием.
Returns:
true, если это AffineTransform является тождественным преобразованием; false в противном случае.
Since:
1.2

clone

public Object clone()
Возвращает копию этого AffineTransform объекта.
Overrides:
clone в классе Object
Returns:
объект Object, являющийся копией этого объекта AffineTransform.
Since:
1.2
See Also:
  • Cloneable

hashCode

public int hashCode()
Возвращает хэш-код для этого преобразования.
Overrides:
hashCode в классе Object
Returns:
хэш-код для этого преобразования.
Since:
1.2
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

equals

public boolean equals(Object obj)
Возвращает true, если этот AffineTransform представляет ту же аффинную координатную трансформацию, что и указанный аргумент.
Overrides:
equals в классе Object
Parameters:
obj - объект Object для проверки равенства с этим объектом AffineTransform
Returns:
true, если obj равен этому объекту AffineTransform; false в противном случае.
Since:
1.2
See Also:
  • Object.hashCode()
  • HashMap

© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/geom/AffineTransform.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API