Spec-Zone.ru › OpenJDK 24

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

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

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

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

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

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

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

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

Модификатор и тип Метод Описание
Object clone()
Возвращает копию этого объекта AffineTransform.
void concatenate(AffineTransform Tx)
Конкатенирует AffineTransform Tx с этим объектом AffineTransform Cx наиболее удобным способом, чтобы обеспечить новое адресное пространство, которое отображается на предыдущее адресное пространство с помощью Tx.
AffineTransform createInverse()
Возвращает объект AffineTransform, представляющий обратное преобразование.
Shape createTransformedShape(Shape pSrc)
Возвращает новый объект Shape, определённый геометрией указанного Shape после его преобразования этим преобразованием.
void deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив векторов относительных расстояний с помощью этого преобразования.
Point2D deltaTransform(Point2D ptSrc, Point2D ptDst)
Преобразует вектор относительного расстояния, указанный параметром ptSrc, и сохраняет результат в ptDst.
boolean equals(Object obj)
Возвращает true, если это преобразование AffineTransform представляет такое же аффинное преобразование координат, как и указанный аргумент.
double getDeterminant()
Возвращает определитель матричного представления преобразования.
void getMatrix(double[] flatmatrix)
Извлекает 6 задаваемых значений в матрице аффинного преобразования 3x3 и помещает их в массив значений с двойной точностью.
static AffineTransform getQuadrantRotateInstance(int numquadrants)
Возвращает преобразование, которое вращает координаты на указанное количество квадрантов.
static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
Возвращает преобразование, которое вращает координаты на указанное количество квадрантов вокруг указанной точки.
static AffineTransform getRotateInstance(double theta)
Возвращает преобразование, представляющее вращение.
static AffineTransform getRotateInstance(double vecx, double vecy)
Возвращает преобразование, которое вращает координаты в соответствии с вектором вращения.
static AffineTransform getRotateInstance(double theta, double anchorx, double anchory)
Возвращает преобразование, которое вращает координаты вокруг точки.
static AffineTransform getRotateInstance(double vecx, double vecy, double anchorx, double anchory)
Возвращает преобразование, которое вращает координаты вокруг точки в соответствии с вектором вращения.
static AffineTransform getScaleInstance(double sx, double sy)
Возвращает преобразование, представляющее масштабирование.
double getScaleX()
Возвращает элемент m00 матрицы аффинного преобразования 3x3.
double getScaleY()
Возвращает элемент m11 матрицы аффинного преобразования 3x3.
static AffineTransform getShearInstance(double shx, double shy)
Возвращает преобразование, представляющее сдвиг.
double getShearX()
Возвращает элемент сдвига по оси X (m01) матрицы аффинного преобразования 3x3.
double getShearY()
Возвращает элемент сдвига по оси Y (m10) матрицы аффинного преобразования 3x3.
static AffineTransform getTranslateInstance(double tx, double ty)
Возвращает преобразование, представляющее трансляцию.
double getTranslateX()
Возвращает координату X элемента трансляции (m02) матрицы аффинного преобразования 3x3.
double getTranslateY()
Возвращает координату Y элемента трансляции (m12) матрицы аффинного преобразования 3x3.
int getType()
Получает биты флагов, описывающие свойства преобразования.
int hashCode()
Возвращает хэш-код этого преобразования.
void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Обрабатывает массив координат двойной точности, применяя обратное преобразование.
Point2D inverseTransform(Point2D ptSrc, Point2D ptDst)
Обрабатывает указанный ptSrc и сохраняет результат в ptDst.
void invert()
Устанавливает это преобразование в обратное себе.
boolean isIdentity()
Возвращает true, если это AffineTransform является тождественным преобразованием.
void preConcatenate(AffineTransform Tx)
Конкатенирует AffineTransform Tx с этим AffineTransform Cx менее распространённым способом, так что Tx изменяет преобразование координат относительно абсолютного пространства пикселей, а не относительно существующего пространства пользователя.
void quadrantRotate(int numquadrants)
Конкатенирует это преобразование с преобразованием, вращающим координаты на указанное количество квадрантов.
void quadrantRotate(int numquadrants, double anchorx, double anchory)
Конкатенирует это преобразование с преобразованием, вращающим координаты на указанное количество квадрантов вокруг указанной точки привязки.
void rotate(double theta)
Конкатенирует это преобразование с преобразованием вращения.
void rotate(double vecx, double vecy)
Конкатенирует это преобразование с преобразованием, вращающим координаты согласно вектору вращения.
void rotate(double theta, double anchorx, double anchory)
Конкатенирует это преобразование с преобразованием, вращающим координаты вокруг точки привязки.
void rotate(double vecx, double vecy, double anchorx, double anchory)
Конкатенирует это преобразование с преобразованием, вращающим координаты вокруг точки привязки согласно вектору вращения.
void scale(double sx, double sy)
Конкатенирует это преобразование с преобразованием масштабирования.
void setToIdentity()
Сбрасывает это преобразование до тождественного преобразования.
void setToQuadrantRotation(int numquadrants)
Устанавливает это преобразование в преобразование вращения, вращающее координаты на указанное количество квадрантов.
void setToQuadrantRotation(int numquadrants, double anchorx, double anchory)
Устанавливает это преобразование в транслированное преобразование вращения, вращающее координаты на указанное количество квадрантов вокруг указанной точки привязки.
void setToRotation(double theta)
Устанавливает это преобразование в преобразование вращения.
void setToRotation(double vecx, double vecy)
Устанавливает это преобразование в преобразование вращения, вращающее координаты согласно вектору вращения.
void setToRotation(double theta, double anchorx, double anchory)
Устанавливает это преобразование в транслированное преобразование вращения.
void setToRotation(double vecx, double vecy, double anchorx, double anchory)
Устанавливает это преобразование в преобразование вращения, вращающее координаты вокруг точки привязки согласно вектору вращения.
void setToScale(double sx, double sy)
Устанавливает это преобразование в преобразование масштабирования.
void setToShear(double shx, double shy)
Устанавливает это преобразование в преобразование сдвига.
void setToTranslation(double tx, double ty)
Устанавливает это преобразование в преобразование трансляции.
void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
Устанавливает это преобразование в матрицу, заданную 6 значениями двойной точности.
void setTransform(AffineTransform Tx)
Устанавливает это преобразование в копию преобразования в указанном AffineTransform объекте.
void shear(double shx, double shy)
Конкатенирует это преобразование с преобразованием сдвига.
String toString()
Возвращает String, представляющий значение этого Object.
void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив координат двойной точности с помощью этого преобразования.
void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
Преобразует массив координат двойной точности с помощью этого преобразования и сохраняет результаты в массив чисел с плавающей запятой.
void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив координат с плавающей запятой с помощью этого преобразования и сохраняет результаты в массив чисел двойной точности.
void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
Преобразует массив координат с плавающей запятой с помощью этого преобразования.
void transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)
Преобразует массив объектов точек с помощью этого преобразования.
Point2D transform(Point2D ptSrc, Point2D ptDst)
Преобразует указанный ptSrc и сохраняет результат в ptDst.
void translate(double tx, double ty)
Конкатенирует это преобразование со сдвигом.

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

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

Подробное описание полей

TYPE_IDENTITY

public static final int TYPE_IDENTITY
Эта константа указывает, что преобразование, определённое этим объектом, является тождественным преобразованием. Тождественное преобразование — это такое, в котором координаты вывода всегда совпадают с координатами ввода. Если это преобразование отличается от тождественного, тип будет либо константой GENERAL_TRANSFORM, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
С:
1.2
См. также:
  • TYPE_TRANSLATION
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • TYPE_FLIP
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения константных полей

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет сдвиг (перевод) помимо преобразований, указанных другими флагами. Сдвиг перемещает координаты на постоянное значение по осям x и y, не изменяя длину или угол векторов.
С:
1.2
См. также:
  • TYPE_IDENTITY
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • TYPE_FLIP
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения константных полей

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет равномерное масштабирование помимо преобразований, указанных другими флагами. Равномерное масштабирование умножает длину векторов на одно и то же значение по обеим осям x и y, не изменяя угол между векторами. Этот флаг несовместим с флагом TYPE_GENERAL_SCALE.
С:
1.2
См. также:
  • TYPE_IDENTITY
  • TYPE_TRANSLATION
  • TYPE_GENERAL_SCALE
  • TYPE_FLIP
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения константных полей

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет общее масштабирование помимо преобразований, указанных другими флагами. Общее масштабирование умножает длину векторов на разные значения по осям x и y, не изменяя угол между перпендикулярными векторами. Этот флаг несовместим с флагом TYPE_UNIFORM_SCALE.
С:
1.2
См. также:
  • TYPE_IDENTITY
  • TYPE_TRANSLATION
  • TYPE_UNIFORM_SCALE
  • TYPE_FLIP
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения константных полей

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE
Эта константа — битовая маска для любого из битов флага масштабирования.
С момента:
1.2
См. также:
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • Значения константных полей

TYPE_FLIP

public static final int TYPE_FLIP
Этот бит флага указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение относительно некоторой оси, что изменяет обычную правую систему координат на левую систему координат в дополнение к преобразованиям, указанным другими битами флага. Правая система координат — это система, в которой положительная ось X вращается против часовой стрелки, чтобы наложиться на положительную ось Y, подобно тому, как пальцы вашей правой руки закручиваются, когда вы смотрите на кончик большого пальца. Левая система координат — это система, в которой положительная ось X вращается по часовой стрелке, чтобы наложиться на положительную ось Y, подобно тому, как пальцы вашей левой руки закручиваются. Нет математического способа определить угол исходного преобразования отражения, поскольку все углы отражения одинаковы при соответствующем повороте.
С момента:
1.2
См. также:
  • TYPE_IDENTITY
  • TYPE_TRANSLATION
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения константных полей

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION
Этот бит флага указывает, что преобразование, определённое этим объектом, выполняет поворот на 90 градусов, кратное некоторому числу раз, в дополнение к преобразованиям, указанным другими битами флага. Поворот изменяет углы векторов на одинаковую величину независимо от исходного направления вектора и не изменяет длину вектора. Этот бит флага взаимоисключающий с флагом 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.
Возвращает:
комбинацию ИЛИ любых указанных флагов, применимых к этому преобразованию
Since:
1.2
См. также:
  • TYPE_IDENTITY
  • TYPE_TRANSLATION
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM

getDeterminant

public double getDeterminant()
Возвращает определитель матричного представления преобразования. Определитель полезен как для определения, можно ли обратить преобразование, так и для получения одного значения, представляющего комбинированное масштабирование X и Y преобразования.

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

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

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

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

getMatrix

public void getMatrix(double[] flatmatrix)
Извлекает 6 определяемых значений в матрице аффинного преобразования 3x3 и помещает их в массив значений двойной точности. Значения хранятся в массиве как { m00 m10 m01 m11 m02 m12 }. Можно также указать массив из 4 двойных значений, в этом случае извлекаются только первые четыре элемента, представляющие непрозрачные части массива, и значения хранятся в массиве как { m00 m10 m01 m11 }
Параметры:
flatmatrix - массив двойных значений, используемый для хранения возвращаемых значений.
Since:
1.2
См. также:
  • getScaleX()
  • getScaleY()
  • getShearX()
  • getShearY()
  • getTranslateX()
  • getTranslateY()

getScaleX

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

getScaleY

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

getShearX

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

getShearY

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

getTranslateX

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

getTranslateY

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

translate

public void translate(double tx, double ty)
Объединяет это преобразование с преобразованием трансляции. Это эквивалентно вызову concatenate(T), где T — AffineTransform, представленная следующей матрицей:
          [   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]
 
Параметры:
tx — расстояние, на которое координаты транслируются по оси X
ty — расстояние, на которое координаты транслируются по оси Y
С:
1.2

rotate

public void rotate(double theta)
Объединяет это преобразование с преобразованием вращения. Это эквивалентно вызову concatenate(R), где R — AffineTransform, представленная следующей матрицей:
          [   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
 
Вращение на положительный угол 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

Поворот

public void rotate(double vecx, double vecy)
Соединяет это преобразование с преобразованием, которое вращает координаты в соответствии с вектором вращения. Все координаты вращаются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если оба vecx и vecy равны 0,0, дополнительный поворот к этому преобразованию не добавляется. Эта операция эквивалентна вызову:
          rotate(Math.atan2(vecy, vecx));
 
Параметры:
vecx - координата X вектора вращения
vecy - координата Y вектора вращения
С:
1.6

Поворот

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

масштабирование

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

смещение

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

установитьТождество

public void setToIdentity()
Сбрасывает это преобразование до преобразования тождества.
С:
1.2

установитьПеренос

public void setToTranslation(double tx, double ty)
Устанавливает это преобразование в преобразование переноса. Матрица, представляющая это преобразование, становится:
          [   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]
 
Параметры:
tx - расстояние, на которое координаты смещаются по направлению оси X
ty - расстояние, на которое координаты смещаются по направлению оси Y
С:
1.2

setToRotation

public void setToRotation(double theta)
Устанавливает данное преобразование в поворотное преобразование. Матрица, представляющая это преобразование, становится:
          [   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
 
Поворот на положительный угол тета вращает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Параметры:
theta - угол поворота в радианах
С:
1.2

setToRotation

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

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

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

setToRotation

public void setToRotation(double vecx, double vecy)
Устанавливает данное преобразование в поворотное преобразование, которое вращает координаты согласно вектору поворота. Все координаты вращаются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если оба vecx и vecy равны 0.0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:
     setToRotation(Math.atan2(vecy, vecx));
 
Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
С:
1.6

setToRotation

public void setToRotation(double vecx, double vecy, double anchorx, double anchory)
Устанавливает данное преобразование в поворотное преобразование, которое вращает координаты вокруг точки привязки согласно вектору поворота. Все координаты вращаются вокруг указанных координат точки привязки на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если оба vecx и vecy равны 0.0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:
     setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);
 
Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки привязки поворота
anchory - координата Y точки привязки поворота
С:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants)
Устанавливает данное преобразование в поворотное преобразование, которое вращает координаты на указанное количество квадрантов. Эта операция эквивалентна вызову:
     setToRotation(numquadrants * Math.PI / 2.0);
 
Поворот на положительное количество квадрантов вращает точки на положительной оси X к положительной оси Y.
Параметры:
numquadrants - число поворотов на 90 градусов
С:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants, double anchorx, double anchory)
Устанавливает данное преобразование в перемещённое поворотное преобразование, которое вращает координаты на указанное количество квадрантов вокруг указанной точки привязки. Эта операция эквивалентна вызову:
     setToRotation(numquadrants * Math.PI / 2.0, anchorx, anchory);
 
Поворот на положительное количество квадрантов вращает точки на положительной оси X к положительной оси Y.
Параметры:
numquadrants - число поворотов на 90 градусов
anchorx - координата X точки привязки поворота
anchory - координата Y точки привязки поворота
С:
1.6
END_OF_DOCUMENT_MARKER

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 представлено матрицей [это], а 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 представлено матрицей [это], а 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 - массив, содержащий исходные объекты точек
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)
Преобразует массив координат с плавающей точкой этим преобразованием и сохраняет результаты в массив чисел двойной точности. Координаты хранятся в массивах, начиная с указанного смещения в порядке [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

обратноеПреобразование

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

обратноеПреобразование

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

deltaПреобразование

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

deltaПреобразование

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()
Возвращает строковое представление значения этого Object.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление значения этого Object.
С:
1.2

isIdentity

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

clone

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

hashCode

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

equals

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

© 1993, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/geom/AffineTransform.html

Spec-Zone.ru

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