Spec-Zone.ru › OpenJDK 25

Класс AffineTransform

java.lang.Object
java.awt.geom.AffineTransform
Все реализуемые интерфейсы:
Serializable, Cloneable
public class AffineTransform extends Object implements Cloneable, Serializable
Класс AffineTransform представляет собой двумерное аффинное преобразование, которое выполняет линейное отображение двумерных координат в другие двумерные координаты, сохраняя «прямолинейность» и «параллельность» линий. Аффинные преобразования можно построить с помощью последовательностей перемещений, масштабирований, отражений, поворотов и сдвигов.

Такое преобразование координат можно представить матрицей из 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 аргумент типа double задает угол поворота в радианах. Эти методы предусматривают специальную обработку поворотов примерно на 90 градусов (включая кратные значения, например 180, 270 и 360 градусов), благодаря чему распространенный случай поворота на четверть оборота обрабатывается эффективнее. Из-за этой специальной обработки углы, очень близкие к кратным 90 градусам, могут рассматриваться как точные кратные 90 градусам. Для небольших кратных 90 градусов диапазон углов, рассматриваемых как поворот на четверть оборота, составляет примерно 0.00000121 градуса. В этом разделе объясняется, почему требуется такая специальная обработка и как она реализована.

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

Поскольку повороты на четверть оборота встречаются довольно часто, этот класс должен достаточно быстро обрабатывать такие случаи как при применении поворотов к преобразованию, так и при применении результирующего преобразования к координатам. Для обеспечения такой оптимальной обработки методы, принимающие угол поворота в радианах, пытаются распознать углы, соответствующие поворотам на четверть оборота, и обрабатывают их соответствующим образом. Поэтому эти методы рассматривают угол theta как поворот на четверть оборота, если 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 градусам значение.
static final int TYPE_TRANSLATION
Этот битовый флаг указывает, что преобразование, определяемое этим объектом, помимо преобразований, обозначенных другими битовыми флагами, выполняет перемещение.
static final int TYPE_UNIFORM_SCALE
Этот битовый флаг указывает, что преобразование, определяемое этим объектом, помимо преобразований, обозначенных другими битовыми флагами, выполняет равномерное масштабирование.

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

Конструктор Описание
AffineTransform()
Создает новый AffineTransform, представляющий тождественное преобразование.
AffineTransform(double[] flatmatrix)
Создает новый AffineTransform из массива значений двойной точности, представляющих либо 4 элемента матрицы преобразования 3x3, не относящихся к перемещению, либо 6 задаваемых элементов этой матрицы.
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
Создает новый AffineTransform из 6 значений двойной точности, представляющих 6 задаваемых элементов матрицы преобразования 3x3.
AffineTransform(float[] flatmatrix)
Создает новый AffineTransform из массива значений с плавающей точкой, представляющих либо 4 элемента матрицы преобразования 3x3, не относящихся к перемещению, либо 6 задаваемых элементов этой матрицы.
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)
Конкатенирует это преобразование с преобразованием перемещения.

Методы, объявленные в классе 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 градусов число градусов в дополнение к преобразованиям, указанным другими битами флагов. Поворот изменяет углы векторов на одну и ту же величину независимо от исходного направления вектора и не изменяет длину вектора. Этот бит флага взаимоисключающий с флагом 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, представляющий тождественное преобразование.
Начиная с:
1.2

AffineTransform

public AffineTransform(AffineTransform Tx)
Создает новый AffineTransform, являющийся копией указанного объекта AffineTransform.
Параметры:
Tx — объект AffineTransform, который нужно скопировать
Начиная с:
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.
Параметры:
m00 — элемент масштабирования координаты X матрицы 3x3
m10 — элемент сдвига координаты Y матрицы 3x3
m01 — элемент сдвига координаты X матрицы 3x3
m11 — элемент масштабирования координаты Y матрицы 3x3
m02 — элемент переноса координаты X матрицы 3x3
m12 — элемент переноса координаты Y матрицы 3x3
Начиная с:
1.2

AffineTransform

public AffineTransform(float[] flatmatrix)
Создает новый AffineTransform из массива значений с плавающей точкой, представляющих либо 4 элемента без переноса, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива в виде { m00 m10 m01 m11 [m02 m12]}.
Параметры:
flatmatrix — массив float, содержащий значения, которые нужно задать в новом объекте AffineTransform. Предполагается, что длина массива составляет не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений.
Начиная с:
1.2

AffineTransform

public AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
Создает новый AffineTransform из 6 значений двойной точности, представляющих 6 задаваемых элементов матрицы преобразования 3x3.
Параметры:
m00 — элемент масштабирования координаты X матрицы 3x3
m10 — элемент сдвига координаты Y матрицы 3x3
m01 — элемент сдвига координаты X матрицы 3x3
m11 — элемент масштабирования координаты Y матрицы 3x3
m02 — элемент переноса координаты X матрицы 3x3
m12 — элемент переноса координаты Y матрицы 3x3
Начиная с:
1.2

AffineTransform

public AffineTransform(double[] flatmatrix)
Создает новый AffineTransform из массива значений двойной точности, представляющих либо 4 элемента без переноса, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива в виде { m00 m10 m01 m11 [m02 m12]}.
Параметры:
flatmatrix — массив double, содержащий значения, которые нужно задать в новом объекте AffineTransform. Предполагается, что длина массива составляет не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений.
Начиная с:
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, представляющий перенос, созданный с указанным вектором.
Начиная с:
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 градусов.
Параметры:
theta — угол поворота в радианах
Возвращает:
объект AffineTransform, представляющий поворот, созданный с указанным углом.
Начиная с:
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 градусов.
Параметры:
theta — угол поворота в радианах
anchorx — координата X опорной точки поворота
anchory — координата Y опорной точки поворота
Возвращает:
объект AffineTransform, поворачивающий координаты вокруг указанной точки на заданный угол.
Начиная с:
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, поворачивающий координаты в соответствии с указанным вектором поворота.
Начиная с:
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, поворачивающий координаты вокруг указанной точки в соответствии с заданным вектором поворота.
Начиная с:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants)
Возвращает преобразование, поворачивающее координаты на указанное число квадрантов. Эта операция эквивалентна вызову:
    AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);
Поворот на положительное число квадрантов поворачивает точки на положительной оси X в направлении положительной оси Y.
Параметры:
numquadrants — число поворотов на 90 градусов
Возвращает:
объект AffineTransform, поворачивающий координаты на указанное число квадрантов.
Начиная с:
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, поворачивающий координаты на указанное число квадрантов вокруг заданной опорной точки.
Начиная с:
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, масштаб�ющий координаты с указанными коэффициентами.
Начиная с:
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, выполняющий сдвиг координат с указанными коэффициентами.
Начиная с:
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.
Возвращает:
комбинацию флагов, применимых к этому преобразованию, полученную операцией ИЛИ
Начиная с:
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   |
Возвращает:
определитель матрицы, используемой для преобразования координат.
Начиная с:
1.2
См. также:
  • getType()
  • createInverse()
  • inverseTransform(Point2D, Point2D)
  • TYPE_UNIFORM_SCALE

getMatrix

public void getMatrix(double[] flatmatrix)
Получает 6 задаваемых значений матрицы аффинного преобразования 3x3 и помещает их в массив значений double. Значения сохраняются в массиве в виде { m00 m10 m01 m11 m02 m12 }. Можно также указать массив из 4 элементов double; в этом случае извлекаются только первые четыре элемента, представляющие нетрансляционные части массива, и значения сохраняются в массиве в виде { m00 m10 m01 m11 }
Параметры:
flatmatrix — массив double для сохранения возвращаемых значений.
Начиная с:
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);
Возвращает:
значение double, являющееся элементом m00 матрицы аффинного преобразования 3x3.
Начиная с:
1.2
См. также:
  • getMatrix(double[])

getScaleY

public double getScaleY()
Возвращает элемент m11 аффинной матрицы преобразования 3×3. Этот множитель матрицы определяет, как входные координаты Y влияют на выходные координаты Y, и является одним из элементов масштаба преобразования. Чтобы измерить полную величину, на которую это преобразование растягивает или сжимает координаты Y, используйте следующий код:
    Point2D p = new Point2D.Double(0, 1);
    p = tx.deltaTransform(p, p);
    double scaleY = p.distance(0, 0);
Возвращает:
значение типа double, являющееся элементом m11 аффинной матрицы преобразования 3×3.
Начиная с версии:
1.2
См. также:
  • getMatrix(double[])

getShearX

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

getShearY

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

getTranslateX

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

getTranslateY

public double getTranslateY()
Возвращает координату Y элемента переноса (m12) аффинной матрицы преобразования 3×3.
Возвращает:
значение типа double, являющееся координатой 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   ]
Поворот на положительный угол 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

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)
Задает для этого объекта матрицу, определяемую шестью значениями двойной точности.
Параметры:
m00 — элемент масштабирования по координате X матрицы 3×3
m10 — элемент сдвига по координате Y матрицы 3×3
m01 — элемент сдвига по координате X матрицы 3×3
m11 — элемент масштабирования по координате Y матрицы 3×3
m02 — элемент переноса по координате X матрицы 3×3
m12 — элемент переноса по координате Y матрицы 3×3
Начиная с версии:
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(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(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 — массив, содержащий исходные объекты-точки
srcOff — смещение до первого объекта-точки, который нужно преобразовать в исходном массиве
ptDst — массив, в который возвращаются преобразованные объекты-точки
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.
srcOff — смещение до первой точки, которую нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются координаты преобразованных точек. Каждая точка хранится как пара координат x и y.
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.
srcOff — смещение до первой точки, которую нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются координаты преобразованных точек. Каждая точка хранится как пара координат x и y.
dstOff — смещение до места первой преобразованной точки, сохраняемой в массиве назначения
numPts — количество объектов-точек для преобразования
Начиная с версии:
1.2

transform

public void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив координат с плавающей точкой с помощью этого преобразования и сохраняет результаты в массиве значений double. Координаты сохраняются в массивах начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
Параметры:
srcPts — массив, содержащий координаты исходных точек. Каждая точка хранится как пара координат x и y.
srcOff — смещение до первой точки, которую нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются координаты преобразованных точек. Каждая точка хранится как пара координат x и y.
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.
srcOff — смещение до первой точки, которую нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются координаты преобразованных точек. Каждая точка хранится в виде пары координат x, y.
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.
srcOff — смещение до первой точки, которую нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются координаты преобразованных точек. Каждая точка хранится в виде пары координат x, y.
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 — вектор расстояния, который нужно преобразовать методом delta
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.
srcOff — смещение до первого вектора, который нужно преобразовать в исходном массиве
dstPts — массив, в который возвращаются преобразованные векторы расстояния. Каждый вектор хранится в виде пары относительных координат x, y.
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()
Возвращает String, представляющую значение этого Object.
Переопределяет:
toString в классе Object
Возвращает:
String, представляющую значение этого 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(Object)

equals

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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