Spec-Zone.ru › OpenJDK 21

Класс 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.

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

Modifier and Type Method Description
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, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
Since:
1.2
См. также:
  • TYPE_TRANSLATION
  • TYPE_UNIFORM_SCALE
  • TYPE_GENERAL_SCALE
  • TYPE_FLIP
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • TYPE_GENERAL_TRANSFORM
  • getType()
  • Значения постоянных полей

TYPE_TRANSLATION

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

TYPE_UNIFORM_SCALE

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

TYPE_GENERAL_SCALE

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

TYPE_MASK_SCALE

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

TYPE_FLIP

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

TYPE_QUADRANT_ROTATION

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

TYPE_GENERAL_ROTATION

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

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION
Эта константа — это битовая маска для любых флаговых битов поворота.
Since:
1.2
См. также:
  • TYPE_QUADRANT_ROTATION
  • TYPE_GENERAL_ROTATION
  • Значения постоянных полей

TYPE_GENERAL_TRANSFORM

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

Подробное описание конструкторов

AffineTransform

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

AffineTransform

public AffineTransform(AffineTransform Tx)
Создаёт новый объект AffineTransform, являющийся копией указанного объекта AffineTransform.
Parameters:
Tx - копируемый объект AffineTransform
Since:
1.2

AffineTransform

@ConstructorProperties({"scaleX","shearY","shearX","scaleY","translateX","translateY"}) public AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
Создаёт новый объект AffineTransform из 6 значений с плавающей точкой, представляющих 6 задаваемых элементов матрицы преобразования 3x3.
Parameters:
m00 - элемент масштабирования по оси X матрицы 3x3
m10 - элемент сдвига по оси Y матрицы 3x3
m01 - элемент сдвига по оси X матрицы 3x3
m11 - элемент масштабирования по оси Y матрицы 3x3
m02 - элемент смещения по оси X матрицы 3x3
m12 - элемент смещения по оси Y матрицы 3x3
Since:
1.2

AffineTransform

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

AffineTransform

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

AffineTransform

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

Подробное описание методов

getTranslateInstance

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

getRotateInstance

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

getRotateInstance

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

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

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

getRotateInstance

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

getRotateInstance

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

getQuadrantRotateInstance

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

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
Возвращает преобразование, которое вращает координаты на указанное количество квадрантов вокруг указанной точки якоря. Данная операция эквивалентна вызову:
     AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0,
                                       anchorx, anchory);
 
Вращение на положительное число квадрантов поворачивает точки на положительной оси X к положительной оси Y.
Параметры:
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(java.awt.geom.Point2D, java.awt.geom.Point2D)
  • TYPE_UNIFORM_SCALE

getMatrix

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

getShearX

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

getShearY

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

getTranslateX

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

getTranslateY

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

Поворот

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

Поворот

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

ПоворотНаЧетверти

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

ПоворотНаЧетверти

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

УстановитьПоворот

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

УстановитьПоворот

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

УстановитьПоворот

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

УстановитьПоворот

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

УстановитьПоворотНаЧетверти

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

setToQuadrantRotation

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

setToScale

public void setToScale(double sx, double sy)
Устанавливает это преобразование в масштабирующее преобразование. Матрица, представляющая это преобразование, становится:
          [   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]
 
Параметры:
sx - коэффициент, на который масштабируются координаты вдоль оси X
sy - коэффициент, на который масштабируются координаты вдоль оси Y
С момента:
1.2

setToShear

public void setToShear(double shx, double shy)
Устанавливает это преобразование в сдвиговое преобразование. Матрица, представляющая это преобразование, становится:
          [   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]
 
Параметры:
shx - множитель, на который координаты сдвигаются в направлении положительной оси X, как коэффициент их координаты Y
shy - множитель, на который координаты сдвигаются в направлении положительной оси Y, как коэффициент их координаты X
С момента:
1.2

setTransform

public void setTransform(AffineTransform Tx)
Устанавливает это преобразование в копию преобразования в указанном AffineTransform объекте.
Параметры:
Tx - AffineTransform объект, из которого копируется преобразование
С момента:
1.2

setTransform

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

concatenate

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

preConcatenate

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

createInverse

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

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

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

invert

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

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

Выбрасывает:
NoninvertibleTransformException - если матрицу нельзя инвертировать.
С момента:
1.6
См. также:
  • getDeterminant()

transform

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

transform

public void transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)
Преобразует массив объектов точек с помощью этого преобразования. Если какой-либо элемент массива ptDst является null, новый Point2D объект выделяется и сохраняется в этом элементе перед сохранением результатов преобразования.

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

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

transform

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

transform

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

transform

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

inverseTransform

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

inverseTransform

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

deltaTransform

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

deltaTransform

public void deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
Преобразует массив векторов относительного смещения с помощью этого преобразования. Вектор относительного смещения преобразуется без применения компонентов переноса матрицы аффинного преобразования, используя следующие уравнения:
  [  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
  [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
  [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
 
Два массива координат могут быть идентичными или перекрывающимися участками одного массива, не влияя на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не будут перезаписаны предыдущей операцией, прежде чем они смогут быть преобразованы. Координаты хранятся в массивах, начиная со значения смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].
Parameters:
srcPts - массив, содержащий исходные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
srcOff - смещение до первого вектора, который должен быть преобразован в исходном массиве
dstPts - массив, в который возвращаются преобразованные векторы смещения. Каждый вектор хранится как пара относительных координат x, y.
dstOff - смещение до расположения первого преобразованного вектора, который хранится в целевом массиве
numPts - количество пар координат векторов, которые должны быть преобразованы
Since:
1.2

createTransformedShape

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

toString

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

isIdentity

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

clone

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

hashCode

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

equals

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

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

Spec-Zone.ru

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