Класс 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 int | TYPE_FLIP | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет отражение относительно некоторой оси, что изменяет обычно правостороннюю систему координат на левостороннюю, помимо преобразований, указанных другими флагами. |
static int | TYPE_GENERAL_ROTATION | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет вращение на произвольный угол, помимо преобразований, указанных другими флагами. |
static int | TYPE_GENERAL_SCALE | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет масштабирование в общем случае, помимо преобразований, указанных другими флагами. |
static int | TYPE_GENERAL_TRANSFORM | Эта константа указывает, что преобразование, определенное этим объектом, выполняет произвольное преобразование входных координат. |
static int | TYPE_IDENTITY | Эта константа указывает, что преобразование, определенное этим объектом, является тождественным преобразованием. |
static int | TYPE_MASK_ROTATION | Эта константа является маской для любых битов флагов вращения. |
static int | TYPE_MASK_SCALE | Эта константа является маской для любых битов флагов масштабирования. |
static int | TYPE_QUADRANT_ROTATION | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет вращение на квадрант на кратное 90 градусов, помимо преобразований, указанных другими флагами. |
static int | TYPE_TRANSLATION | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет перемещение, помимо преобразований, указанных другими флагами. |
static int | TYPE_UNIFORM_SCALE | Этот флаг указывает, что преобразование, определенное этим объектом, выполняет равномерное масштабирование, помимо преобразований, указанных другими флагами. |
Конструкторы
| Конструктор | Описание |
|---|---|
AffineTransform() | Создаёт новый |
AffineTransform(double[] flatmatrix) | Создаёт новый |
AffineTransform(double m00,
double m10,
double m01,
double m11,
double m02,
double m12) | Создаёт новый |
AffineTransform(float[] flatmatrix) | Создаёт новый |
AffineTransform(float m00,
float m10,
float m01,
float m11,
float m02,
float m12) | Создаёт новый |
AffineTransform(AffineTransform Tx) | Создаёт новый |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object | clone() | Возвращает копию этого объекта |
void | concatenate(AffineTransform Tx) | Объединяет |
AffineTransform | createInverse() | Возвращает объект |
Shape | createTransformedShape(Shape pSrc) | Возвращает новый объект |
void | deltaTransform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts) | Преобразует массив векторов относительных расстояний с помощью этого преобразования. |
Point2D | deltaTransform(Point2D ptSrc,
Point2D ptDst) | Преобразует вектор относительного расстояния, заданный |
boolean | equals(Object obj) | Возвращает |
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() | Возвращает элемент |
double | getScaleY() | Возвращает элемент |
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) | Обратно преобразует указанный |
void | invert() | Устанавливает это преобразование в обратное самому себе. |
boolean | isIdentity() | Возвращает |
void | preConcatenate(AffineTransform 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) | Устанавливает это преобразование в копию преобразования в указанном объекте |
void | shear(double shx,
double shy) | Объединяет это преобразование с преобразованием сдвига. |
String | toString() | Возвращает |
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) | Преобразует указанный |
void | translate(double tx,
double ty) | Конкатенирует это преобразование со смещением. |
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Поля
TYPE_IDENTITY
public static final int TYPE_IDENTITY
Эта константа указывает, что преобразование, определённое этим объектом, является тождественным преобразованием. Тождественное преобразование — это преобразование, в котором выходные координаты всегда совпадают с входными координатами. Если это преобразование отличается от тождественного преобразования, тип будет либо константой GENERAL_TRANSFORM, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
- С тех пор:
- 1.2
- См. также:
-
TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_TRANSLATION
public static final int TYPE_TRANSLATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет сдвиг (трансляцию) в дополнение к преобразованиям, указанным другими флагами. Сдвиг перемещает координаты на постоянное значение по x и y без изменения длины или угла векторов.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_UNIFORM_SCALE
public static final int TYPE_UNIFORM_SCALE
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет равномерное масштабирование в дополнение к преобразованиям, указанным другими флагами. Равномерное масштабирование умножает длину векторов на одно и то же значение как по оси x, так и по оси y, не изменяя угол между векторами. Этот флаг взаимоисключающий с флагом TYPE_GENERAL_SCALE.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_GENERAL_SCALE
public static final int TYPE_GENERAL_SCALE
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет общее масштабирование в дополнение к преобразованиям, указанным другими флагами. Общее масштабирование умножает длину векторов на разные значения по осям x и y, не изменяя угол между перпендикулярными векторами. Этот флаг взаимоисключающий с флагом TYPE_UNIFORM_SCALE.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_MASK_SCALE
public static final int TYPE_MASK_SCALE
Эта константа является битовой маской для любых флагов масштабирования.
- С тех пор:
- 1.2
- См. также:
-
TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE, Значения постоянных полей
TYPE_FLIP
public static final int TYPE_FLIP
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет зеркальное отображение относительно какой-либо оси, изменяя правую систему координат на левую, в дополнение к преобразованиям, указанным другими флагами. Правая система координат — это система, где положительная ось X поворачивается против часовой стрелки для совмещения с положительной осью Y, подобно тому, как пальцы правой руки закручиваются, когда вы смотрите на свой большой палец. Левая система координат — это система, где положительная ось X поворачивается по часовой стрелке для совмещения с положительной осью Y, подобно тому, как пальцы левой руки закручиваются. Нет математического способа определить угол исходного отражающего преобразования, так как все углы отражения идентичны при соответствующем вращении.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_QUADRANT_ROTATION
public static final int TYPE_QUADRANT_ROTATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет поворот на 90 градусов (или кратное 90 градусов) в дополнение к преобразованиям, указанным другими флагами. Поворот изменяет углы векторов на одинаковое значение независимо от исходного направления вектора и не изменяет длину вектора. Этот флаг взаимоисключающий с флагом TYPE_GENERAL_ROTATION.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_GENERAL_ROTATION
public static final int TYPE_GENERAL_ROTATION
Этот флаг указывает, что преобразование, определённое этим объектом, выполняет поворот на произвольный угол в дополнение к преобразованиям, указанным другими флагами. Поворот изменяет углы векторов на одинаковое значение независимо от исходного направления вектора и не изменяет длину вектора. Этот флаг взаимоисключающий с флагом TYPE_QUADRANT_ROTATION.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_TRANSFORM,getType(), Значения постоянных полей
TYPE_MASK_ROTATION
public static final int TYPE_MASK_ROTATION
Эта константа является битовой маской для любых флагов поворота.
- С тех пор:
- 1.2
- См. также:
-
TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION, Значения постоянных полей
TYPE_GENERAL_TRANSFORM
public static final int TYPE_GENERAL_TRANSFORM
Эта константа указывает, что преобразование, определённое этим объектом, выполняет произвольное преобразование входных координат. Если это преобразование можно классифицировать по одному из вышеперечисленных значений, тип будет либо константой TYPE_IDENTITY, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.
- С тех пор:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_FLIP,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,getType(), Значения постоянных полей
Конструкторы
AffineTransform
public AffineTransform()
Создаёт новый объект AffineTransform, представляющий тождественное преобразование.
- Since:
- 1.2
AffineTransform
public AffineTransform(AffineTransform Tx)
Создаёт новый объект AffineTransform, являющийся копией указанного объекта AffineTransform.
- Parameters:
-
Tx- копируемый объектAffineTransform - Since:
- 1.2
AffineTransform
@ConstructorProperties({"scaleX","shearY","shearX","scaleY","translateX","translateY"})
public AffineTransform(float m00,
float m10,
float m01,
float m11,
float m02,
float m12) Создаёт новый объект AffineTransform из шести значений с плавающей точкой, представляющих шесть задаваемых элементов матрицы преобразования 3x3.
- Parameters:
-
m00- элемент масштабирования по оси X матрицы 3x3 -
m10- элемент сдвига по оси Y матрицы 3x3 -
m01- элемент сдвига по оси X матрицы 3x3 -
m11- элемент масштабирования по оси Y матрицы 3x3 -
m02- элемент смещения по оси X матрицы 3x3 -
m12- элемент смещения по оси Y матрицы 3x3 - Since:
- 1.2
AffineTransform
public AffineTransform(float[] flatmatrix)
Создаёт новый объект AffineTransform из массива значений с плавающей точкой, представляющих либо 4 элемента, не являющиеся смещениями, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива как { m00 m10 m01 m11 [m02 m12]}.
- Parameters:
-
flatmatrix- массив типа float, содержащий значения, которые нужно установить в новый объектAffineTransform. Длина массива предполагается не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений. - Since:
- 1.2
AffineTransform
public AffineTransform(double m00,
double m10,
double m01,
double m11,
double m02,
double m12) Создаёт новый объект AffineTransform из шести значений двойной точности, представляющих шесть задаваемых элементов матрицы преобразования 3x3.
- Parameters:
-
m00- элемент масштабирования по оси X матрицы 3x3 -
m10- элемент сдвига по оси Y матрицы 3x3 -
m01- элемент сдвига по оси X матрицы 3x3 -
m11- элемент масштабирования по оси Y матрицы 3x3 -
m02- элемент смещения по оси X матрицы 3x3 -
m12- элемент смещения по оси Y матрицы 3x3 - Since:
- 1.2
AffineTransform
public AffineTransform(double[] flatmatrix)
Создаёт новый объект AffineTransform из массива значений двойной точности, представляющих либо 4 элемента, не являющиеся смещениями, либо 6 задаваемых элементов матрицы преобразования 3x3. Значения извлекаются из массива как { m00 m10 m01 m11 [m02 m12]}.
- Parameters:
-
flatmatrix- массив типа double, содержащий значения, которые нужно установить в новый объектAffineTransform. Длина массива предполагается не менее 4. Если длина массива меньше 6, используются только первые 4 значения. Если длина массива больше 6, используются первые 6 значений. - Since:
- 1.2
Методы
getTranslateInstance
public static AffineTransform getTranslateInstance(double tx,
double ty) Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращённое преобразование:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ] - Параметры:
-
tx- расстояние сдвига координат по оси X -
ty- расстояние сдвига координат по оси Y - Возвращает:
- объект
AffineTransform, представляющий сдвиг, созданный с указанным вектором. - Since:
- 1.2
getRotateInstance
public static AffineTransform getRotateInstance(double theta)
Возвращает преобразование, представляющее поворот. Матрица, представляющая возвращённое преобразование:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ] Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение обработки поворотов на 90 градусов выше. - Параметры:
-
theta- угол поворота в радианах - Возвращает:
- объект
AffineTransform, представляющий поворот, созданный с указанным углом. - Since:
- 1.2
getRotateInstance
public static AffineTransform getRotateInstance(double theta,
double anchorx,
double anchory) Возвращает преобразование, вращающее координаты вокруг точки-якоря. Эта операция эквивалентна сдвигу координат так, что точка-якорь находится в начале координат (S1), затем вращению их вокруг нового начала координат (S2) и, наконец, сдвигу так, чтобы промежуточное начало координат восстановилось в координаты исходной точки-якоря (S3).
Эта операция эквивалентна следующей последовательности вызовов:
AffineTransform Tx = new AffineTransform();
Tx.translate(anchorx, anchory); // S3: final translation
Tx.rotate(theta); // S2: rotate around anchor
Tx.translate(-anchorx, -anchory); // S1: translate anchor to origin Матрица, представляющая возвращённое преобразование: [ cos(theta) -sin(theta) x-x*cos+y*sin ]
[ sin(theta) cos(theta) y-x*sin-y*cos ]
[ 0 0 1 ] Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение обработки поворотов на 90 градусов выше.- Параметры:
-
theta- угол поворота в радианах -
anchorx- координата X точки-якоря -
anchory- координата Y точки-якоря - Возвращает:
- объект
AffineTransform, вращающий координаты вокруг указанной точки на указанный угол. - Since:
- 1.2
getRotateInstance
public static AffineTransform getRotateInstance(double vecx,
double vecy) Возвращает преобразование, вращающее координаты согласно вектору поворота. Все координаты поворачиваются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты по прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если vecx и vecy равны 0.0, возвращается тождественное преобразование. Эта операция эквивалентна вызову:
AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));
- Параметры:
-
vecx- координата X вектора поворота -
vecy- координата Y вектора поворота - Возвращает:
- объект
AffineTransform, вращающий координаты согласно указанному вектору поворота. - Since:
- 1.6
getRotateInstance
public static AffineTransform getRotateInstance(double vecx,
double vecy,
double anchorx,
double anchory) Возвращает преобразование, вращающее координаты вокруг точки-якоря согласно вектору поворота. Все координаты поворачиваются вокруг указанных координат точки-якоря на одинаковый угол. Величина поворота такова, что координаты по прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если vecx и vecy равны 0.0, возвращается тождественное преобразование. Эта операция эквивалентна вызову:
AffineTransform.getRotateInstance(Math.atan2(vecy, vecx),
anchorx, anchory); - Параметры:
-
vecx- координата X вектора поворота -
vecy- координата Y вектора поворота -
anchorx- координата X точки-якоря -
anchory- координата Y точки-якоря - Возвращает:
- объект
AffineTransform, вращающий координаты вокруг указанной точки согласно указанному вектору поворота. - Since:
- 1.6
getQuadrantRotateInstance
public static AffineTransform getQuadrantRotateInstance(int numquadrants)
Возвращает преобразование, вращающее координаты на указанное число квадрантов. Эта операция эквивалентна вызову:
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.
- Параметры:
-
numquadrants- количество 90-градусных дуг поворота - Возвращает:
- объект
AffineTransform, вращающий координаты на указанное количество квадрантов. - Since:
- 1.6
getQuadrantRotateInstance
public static AffineTransform getQuadrantRotateInstance(int numquadrants,
double anchorx,
double anchory) Возвращает преобразование, вращающее координаты на указанное число квадрантов вокруг указанной точки-якоря. Эта операция эквивалентна вызову:
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0,
anchorx, anchory); Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y. - Параметры:
-
numquadrants- количество 90-градусных дуг поворота -
anchorx- координата X точки-якоря -
anchory- координата Y точки-якоря - Возвращает:
- объект
AffineTransform, вращающий координаты на указанное количество квадрантов вокруг указанной точки-якоря. - Since:
- 1.6
getScaleInstance
public static AffineTransform getScaleInstance(double sx,
double sy) Возвращает преобразование, представляющее масштабирование. Матрица, представляющая возвращённое преобразование:
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ] - Параметры:
-
sx- множитель масштабирования по оси X -
sy- множитель масштабирования по оси Y - Возвращает:
- объект
AffineTransform, масштабирующий координаты на указанные множители. - Since:
- 1.2
getShearInstance
public static AffineTransform getShearInstance(double shx,
double shy) Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращённое преобразование:
[ 1 shx 0 ]
[ shy 1 0 ]
[ 0 0 1 ] - Параметры:
-
shx- множитель сдвига по оси X, зависящий от координаты Y -
shy- множитель сдвига по оси Y, зависящий от координаты X - Возвращает:
- объект
AffineTransform, сдвигающий координаты на указанные множители. - Since:
- 1.2
getType
public int getType()
Возвращает биты флагов, описывающие свойства преобразования. Возвращаемое значение — одна из констант TYPE_IDENTITY или TYPE_GENERAL_TRANSFORM, или комбинация соответствующих битов флагов. Допустимая комбинация битов флагов — операция побитового ИЛИ, которая может объединять бит флага TYPE_TRANSLATION в дополнение к любому из битов флагов TYPE_UNIFORM_SCALE или TYPE_GENERAL_SCALE, а также любому из битов флагов TYPE_QUADRANT_ROTATION или TYPE_GENERAL_ROTATION.
- Возвращает:
- комбинация побитового ИЛИ указанных флагов, применимых к этому преобразованию
- Since:
- 1.2
- См. также:
-
TYPE_IDENTITY,TYPE_TRANSLATION,TYPE_UNIFORM_SCALE,TYPE_GENERAL_SCALE,TYPE_QUADRANT_ROTATION,TYPE_GENERAL_ROTATION,TYPE_GENERAL_TRANSFORM
getDeterminant
public double getDeterminant()
Возвращает определитель матрицы, представляющей преобразование. Определитель полезен для определения возможности обратного преобразования и получения единственного значения, представляющего комбинированное масштабирование по осям X и Y преобразования.
Если определитель не равен нулю, это преобразование обратимо, и различные методы, зависящие от обратного преобразования, не должны выбрасывать исключение NoninvertibleTransformException. Если определитель равен нулю, это преобразование необратимо, так как преобразование отображает все входные координаты на прямую или точку. Если определитель близок к нулю, операции обратного преобразования могут не иметь достаточной точности для получения осмысленных результатов.
Если это преобразование представляет однородное масштабирование, как указано методом getType, то определитель также представляет квадрат множителя однородного масштабирования, на который все точки расширяются или сжимаются относительно начала координат. Если это преобразование представляет неоднородное масштабирование или более общее преобразование, определитель вряд ли будет представлять значение, полезное для любой цели, помимо определения возможности обратных преобразований.
Математически определитель вычисляется по формуле:
| m00 m01 m02 |
| m10 m11 m12 | = m00 * m11 - m01 * m10
| 0 0 1 |
- Возвращает:
- определитель матрицы, используемой для преобразования координат.
- Since:
- 1.2
- См. также:
-
getType(),createInverse(),inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D),TYPE_UNIFORM_SCALE
getMatrix
public void getMatrix(double[] flatmatrix)
Возвращает 6 значений в матрице аффинного преобразования 3x3 и помещает их в массив значений двойной точности. Значения хранятся в массиве как { m00 m10 m01 m11 m02 m12 }. Массив из 4 двойных значений также может быть указан, в этом случае извлекаются только первые четыре элемента, представляющие нетрансформационные части массива, и значения хранятся в массиве как { m00 m10 m01 m11 }
- Параметры:
-
flatmatrix- массив двойных значений для хранения возвращаемых значений. - Since:
- 1.2
- См. также:
-
getScaleX(),getScaleY(),getShearX(),getShearY(),getTranslateX(),getTranslateY()
getScaleX
public double getScaleX()
Возвращает элемент m00 матрицы аффинного преобразования 3x3. Этот множитель матрицы определяет, как входные координаты X повлияют на выходные координаты X, и является одним элементом масштаба преобразования. Чтобы измерить полное количество, на которое координаты X растягиваются или сжимаются этим преобразованием, используйте следующий код:
Point2D p = new Point2D.Double(1, 0);
p = tx.deltaTransform(p, p);
double scaleX = p.distance(0, 0); - Возвращает:
- двойное значение, которое является
m00элементом матрицы аффинного преобразования 3x3. - С:
- 1.2
- См. также:
getMatrix(double[])
getScaleY
public double getScaleY()
Возвращает элемент m11 матрицы аффинного преобразования 3x3. Этот множитель матрицы определяет, как входные координаты Y повлияют на выходные координаты Y, и является одним элементом масштаба преобразования. Чтобы измерить полное количество, на которое координаты Y растягиваются или сжимаются этим преобразованием, используйте следующий код:
Point2D p = new Point2D.Double(0, 1);
p = tx.deltaTransform(p, p);
double scaleY = p.distance(0, 0); - Возвращает:
- двойное значение, которое является
m11элементом матрицы аффинного преобразования 3x3. - С:
- 1.2
- См. также:
getMatrix(double[])
getShearX
public double getShearX()
Возвращает элемент сдвига по оси X (m01) матрицы аффинного преобразования 3x3.
- Возвращает:
- двойное значение, являющееся координатой X элемента сдвига матрицы аффинного преобразования.
- С:
- 1.2
- См. также:
getMatrix(double[])
getShearY
public double getShearY()
Возвращает элемент сдвига по оси Y (m10) матрицы аффинного преобразования 3x3.
- Возвращает:
- двойное значение, являющееся координатой Y элемента сдвига матрицы аффинного преобразования.
- С:
- 1.2
- См. также:
getMatrix(double[])
getTranslateX
public double getTranslateX()
Возвращает координату X элемента перевода (m02) матрицы аффинного преобразования 3x3.
- Возвращает:
- двойное значение, являющееся координатой X элемента перевода матрицы аффинного преобразования.
- С:
- 1.2
- См. также:
getMatrix(double[])
getTranslateY
public double getTranslateY()
Возвращает координату Y элемента перевода (m12) матрицы аффинного преобразования 3x3.
- Возвращает:
- двойное значение, являющееся координатой Y элемента перевода матрицы аффинного преобразования.
- С:
- 1.2
- См. также:
getMatrix(double[])
translate
public void translate(double tx,
double ty) Объединяет это преобразование с преобразованием перевода. Это эквивалентно вызову concatenate(T), где T — AffineTransform представленное следующей матрицей:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ] - Параметры:
-
tx- расстояние, на которое координаты переводятся по оси X -
ty- расстояние, на которое координаты переводятся по оси Y - С:
- 1.2
rotate
public void rotate(double theta)
Объединяет это преобразование с преобразованием поворота. Это эквивалентно вызову concatenate(R), где R — AffineTransform представленное следующей матрицей:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ] Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше. - Параметры:
-
theta- угол поворота в радианах - С:
- 1.2
rotate
public void rotate(double theta,
double anchorx,
double anchory) Объединяет это преобразование с преобразованием поворота вокруг точки-якоря. Эта операция эквивалентна перемещению координат так, чтобы точка-якорь находилась в начале координат (S1), затем повороту их вокруг нового начала координат (S2) и, наконец, перемещению так, чтобы промежуточное начало координат было возвращено в координаты исходной точки-якоря (S3).
Эта операция эквивалентна следующей последовательности вызовов:
translate(anchorx, anchory); // S3: final translation
rotate(theta); // S2: rotate around anchor
translate(-anchorx, -anchory); // S1: translate anchor to origin Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.- Параметры:
-
theta- угол поворота в радианах -
anchorx- координата X точки-якоря поворота -
anchory- координата Y точки-якоря поворота - С:
- 1.2
rotate
public void rotate(double vecx,
double vecy) Объединяет это преобразование с преобразованием, которое поворачивает координаты в соответствии с вектором поворота. Все координаты поворачиваются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если и vecx и vecy равны 0,0, к этому преобразованию не добавляется дополнительный поворот. Эта операция эквивалентна вызову:
rotate(Math.atan2(vecy, vecx));
- Параметры:
-
vecx- координата X вектора поворота -
vecy- координата Y вектора поворота - С:
- 1.6
rotate
public void rotate(double vecx,
double vecy,
double anchorx,
double anchory) Объединяет это преобразование с преобразованием, которое поворачивает координаты вокруг точки-якоря в соответствии с вектором поворота. Все координаты поворачиваются вокруг указанных координат точки-якоря на одинаковый угол. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если и vecx и vecy равны 0,0, преобразование никак не изменяется. Этот метод эквивалентен вызову:
rotate(Math.atan2(vecy, vecx), anchorx, anchory);
- Параметры:
-
vecx- координата X вектора поворота -
vecy- координата Y вектора поворота -
anchorx- координата X точки-якоря поворота -
anchory- координата Y точки-якоря поворота - С:
- 1.6
quadrantRotate
public void quadrantRotate(int numquadrants)
Объединяет это преобразование с преобразованием, которое поворачивает координаты на заданное количество квадрантов. Это эквивалентно вызову:
rotate(numquadrants * Math.PI / 2.0);Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.
- Параметры:
-
numquadrants- количество 90-градусных дуг для поворота - С:
- 1.6
quadrantRotate
public void quadrantRotate(int numquadrants,
double anchorx,
double anchory) Объединяет это преобразование с преобразованием, которое поворачивает координаты на заданное количество квадрантов вокруг указанной точки-якоря. Этот метод эквивалентен вызову:
rotate(numquadrants * Math.PI / 2.0, anchorx, anchory);Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.
- Параметры:
-
numquadrants- количество 90-градусных дуг для поворота -
anchorx- координата X точки-якоря поворота -
anchory- координата Y точки-якоря поворота - С:
- 1.6
scale
public void scale(double sx,
double sy) Объединяет это преобразование с преобразованием масштабирования. Это эквивалентно вызову concatenate(S), где S — AffineTransform представленное следующей матрицей:
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ] - Параметры:
-
sx- множитель, на который координаты масштабируются по оси X -
sy- множитель, на который координаты масштабируются по оси Y - С:
- 1.2
shear
public void shear(double shx,
double shy) Объединяет это преобразование с преобразованием сдвига. Это эквивалентно вызову concatenate(SH), где SH — AffineTransform представленное следующей матрицей:
[ 1 shx 0 ]
[ shy 1 0 ]
[ 0 0 1 ] - Параметры:
-
shx- множитель, на который координаты смещаются в направлении положительной оси X, как функция их координаты Y -
shy- множитель, на который координаты смещаются в направлении положительной оси Y, как функция их координаты X - С:
- 1.2
setToIdentity
public void setToIdentity()
Сбрасывает это преобразование до тождественного преобразования.
- С:
- 1.2
setToTranslation
public void setToTranslation(double tx,
double ty) Устанавливает это преобразование в преобразование перевода. Матрица, представляющая это преобразование, становится:
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ] - Параметры:
-
tx- расстояние, на которое координаты переводятся по оси X -
ty- расстояние, на которое координаты переводятся по оси Y - С:
- 1.2
setToRotation
public void setToRotation(double theta)
Устанавливает это преобразование в преобразование поворота. Матрица, представляющая это преобразование, становится:
[ cos(theta) -sin(theta) 0 ]
[ sin(theta) cos(theta) 0 ]
[ 0 0 1 ] Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше. - Параметры:
-
theta- угол поворота в радианах - С:
- 1.2
setToRotation
public void setToRotation(double theta,
double anchorx,
double anchory) Устанавливает это преобразование в преобразование переведённого поворота. Эта операция эквивалентна перемещению координат так, чтобы точка-якорь находилась в начале координат (S1), затем повороту их вокруг нового начала координат (S2) и, наконец, перемещению так, чтобы промежуточное начало координат было возвращено в координаты исходной точки-якоря (S3).
Эта операция эквивалентна следующей последовательности вызовов:
setToTranslation(anchorx, anchory); // S3: final translation
rotate(theta); // S2: rotate around anchor
translate(-anchorx, -anchory); // S1: translate anchor to origin Матрица, представляющая это преобразование, становится: [ cos(theta) -sin(theta) x-x*cos+y*sin ]
[ sin(theta) cos(theta) y-x*sin-y*cos ]
[ 0 0 1 ] Поворот на положительный угол θ поворачивает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.- Параметры:
-
theta— угол поворота, измеряемый в радианах -
anchorx— координата X точки якоря поворота -
anchory— координата Y точки якоря поворота - С момента:
- 1.2
setToRotation
public void setToRotation(double vecx,
double vecy) Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты согласно вектору поворота. Все координаты поворачиваются вокруг начала координат на один и тот же угол. Величина поворота такова, что координаты вдоль прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к заданным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:
setToRotation(Math.atan2(vecy, vecx));
- Параметры:
-
vecx— координата X вектора поворота -
vecy— координата Y вектора поворота - С момента:
- 1.6
setToRotation
public void setToRotation(double vecx,
double vecy,
double anchorx,
double anchory) Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты вокруг точки якоря согласно вектору поворота. Все координаты поворачиваются вокруг заданных координат якоря на один и тот же угол. Величина поворота такова, что координаты вдоль прежней положительной оси X впоследствии выровняются с вектором, направленным от начала координат к заданным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:
setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);
- Параметры:
-
vecx— координата X вектора поворота -
vecy— координата Y вектора поворота -
anchorx— координата X точки якоря поворота -
anchory— координата Y точки якоря поворота - С момента:
- 1.6
setToQuadrantRotation
public void setToQuadrantRotation(int numquadrants)
Устанавливает данное преобразование в поворотное преобразование, которое поворачивает координаты на заданное количество квадрантов. Эта операция эквивалентна вызову:
setToRotation(numquadrants * Math.PI / 2.0);Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.
- Параметры:
-
numquadrants— количество дуг по 90 градусов для поворота - С момента:
- 1.6
setToQuadrantRotation
public void setToQuadrantRotation(int numquadrants,
double anchorx,
double anchory) Устанавливает данное преобразование в переведённое поворотное преобразование, которое поворачивает координаты на заданное количество квадрантов вокруг заданной точки якоря. Эта операция эквивалентна вызову:
setToRotation(numquadrants * Math.PI / 2.0, anchorx, anchory);Поворот на положительное количество квадрантов поворачивает точки на положительной оси X к положительной оси Y.
- Параметры:
-
numquadrants— количество дуг по 90 градусов для поворота -
anchorx— координата X точки якоря поворота -
anchory— координата Y точки якоря поворота - С момента:
- 1.6
setToScale
public void setToScale(double sx,
double sy) Устанавливает данное преобразование в масштабирующее преобразование. Матрица, представляющая данное преобразование, становится:
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ] - Параметры:
-
sx— коэффициент масштабирования координат вдоль направления оси X -
sy— коэффициент масштабирования координат вдоль направления оси Y - С момента:
- 1.2
setToShear
public void setToShear(double shx,
double shy) Устанавливает данное преобразование в сдвиговое преобразование. Матрица, представляющая данное преобразование, становится:
[ 1 shx 0 ]
[ shy 1 0 ]
[ 0 0 1 ] - Параметры:
-
shx— множитель, на который координаты смещаются в направлении положительной оси X, как множитель от их координаты Y -
shy— множитель, на который координаты смещаются в направлении положительной оси Y, как множитель от их координаты X - С момента:
- 1.2
setTransform
public void setTransform(AffineTransform Tx)
Устанавливает данное преобразование в копию преобразования в указанном AffineTransform объекте.
- Параметры:
-
Tx—AffineTransformобъект, из которого копируется преобразование - С момента:
- 1.2
setTransform
public void setTransform(double m00,
double m10,
double m01,
double m11,
double m02,
double m12) Устанавливает данное преобразование в матрицу, заданную 6 значениями двойной точности.
- Параметры:
-
m00— элемент масштабирования координаты X 3x3 матрицы -
m10— элемент сдвига координаты Y 3x3 матрицы -
m01— элемент сдвига координаты X 3x3 матрицы -
m11— элемент масштабирования координаты Y 3x3 матрицы -
m02— элемент смещения координаты X 3x3 матрицы -
m12— элемент смещения координаты Y 3x3 матрицы - С момента:
- 1.2
concatenate
public void concatenate(AffineTransform Tx)
Конкатенирует AffineTransform Tx с данным AffineTransform Cx наиболее удобным способом, чтобы предоставить новое пользовательское пространство, которое отображается в прежнем пользовательском пространстве с помощью Tx. Cx обновляется для выполнения объединённого преобразования. Преобразование точки p обновлённым преобразованием Cx' эквивалентно первому преобразованию p преобразованием Tx и затем преобразованию результата исходным преобразованием Cx так: Cx'(p) = Cx(Tx(p)). В матричной записи, если данное преобразование Cx представлено матрицей [this], а Tx представлено матрицей [Tx], то этот метод делает следующее:
[this] = [this] x [Tx]
- Параметры:
-
Tx—AffineTransformобъект, который необходимо конкатенировать с этимAffineTransformобъектом. - С момента:
- 1.2
- См. также:
preConcatenate(java.awt.geom.AffineTransform)
preConcatenate
public void preConcatenate(AffineTransform Tx)
Конкатенирует AffineTransform Tx с этим AffineTransform Cx менее распространённым способом, так что Tx изменяет преобразование координат относительно абсолютного пространства пикселей, а не относительно существующего пользовательского пространства. Cx обновляется для выполнения объединённого преобразования. Преобразование точки p обновлённым преобразованием Cx' эквивалентно первому преобразованию p исходным преобразованием Cx и затем преобразованию результата преобразованием Tx так: Cx'(p) = Tx(Cx(p)). В матричной записи, если данное преобразование Cx представлено матрицей [this], а Tx представлено матрицей [Tx], то этот метод делает следующее:
[this] = [Tx] x [this]
- Параметры:
-
Tx—AffineTransformобъект, который необходимо конкатенировать с этимAffineTransformобъектом. - С момента:
- 1.2
- См. также:
concatenate(java.awt.geom.AffineTransform)
createInverse
public AffineTransform createInverse()
throws NoninvertibleTransformException Возвращает AffineTransform объект, представляющий обратное преобразование. Обратное преобразование Tx' этого преобразования Tx отображает координаты, преобразованные Tx, обратно в их исходные координаты. Другими словами, Tx'(Tx(p)) = p = Tx(Tx'(p)).
Если данное преобразование отображает все координаты на точку или линию, то у него не будет обратного преобразования, так как координаты, которые не лежат на целевой точке или линии, не будут иметь обратного отображения. Метод getDeterminant может использоваться для определения, не имеет ли данное преобразование обратного преобразования, в этом случае исключение будет брошено, если будет вызван метод createInverse.
- Возвращает:
- новый
AffineTransformобъект, представляющий обратное преобразование. - Бросает:
-
NoninvertibleTransformException— если матрицу нельзя инвертировать. - С момента:
- 1.2
- См. также:
getDeterminant()
invert
public void invert()
throws NoninvertibleTransformException Устанавливает данное преобразование в обратное по отношению к себе. Обратное преобразование Tx' этого преобразования Tx отображает координаты, преобразованные Tx, обратно в их исходные координаты. Другими словами, Tx'(Tx(p)) = p = Tx(Tx'(p)).
Если данное преобразование отображает все координаты на точку или линию, то у него не будет обратного преобразования, так как координаты, которые не лежат на целевой точке или линии, не будут иметь обратного отображения. Метод getDeterminant может использоваться для определения, не имеет ли данное преобразование обратного преобразования, в этом случае исключение будет брошено, если будет вызван метод invert.
- Бросает:
-
NoninvertibleTransformException— если матрицу нельзя инвертировать. - С момента:
- 1.6
- См. также:
getDeterminant()
transform
public Point2D transform(Point2D ptSrc,
Point2D ptDst) Преобразует указанную ptSrc и сохраняет результат в ptDst. Если ptDst равно null, выделяется новый объект Point2D, а затем результат преобразования сохраняется в этом объекте. В любом случае, возвращается ptDst, содержащий преобразованную точку, для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой.
- Параметры:
-
ptSrc— указаннаяPoint2Dдля преобразования -
ptDst— указаннаяPoint2Dдля хранения результата преобразованияptSrc - Возвращает:
ptDstпосле преобразованияptSrcи хранения результата вptDst.- С момента:
- 1.2
transform
public void transform(Point2D[] ptSrc,
int srcOff,
Point2D[] ptDst,
int dstOff,
int numPts) Преобразует массив объектов точек с помощью этого преобразования. Если какой-либо элемент массива ptDst является null, новый объект Point2D выделяется и сохраняется в этот элемент перед сохранением результатов преобразования.
Обратите внимание, что этот метод не предпринимает никаких мер предосторожности для предотвращения проблем, вызванных сохранением результатов в объекты Point2D, которые будут использоваться в качестве источника для вычислений в последующих элементах массива. Этот метод гарантирует, что если указанный объект Point2D является одновременно источником и местом назначения для одной и той же операции преобразования точки, то результаты не будут сохранены до завершения вычислений, чтобы избежать перезаписи результатов над операндами. Однако, если объект назначения Point2D для одной операции является тем же объектом, что и исходный объект Point2D для другой операции в дальнейших элементах массива, исходные координаты в этой точке перезаписываются до их преобразования.
- Параметры:
-
ptSrc- массив, содержащий исходные объекты точек -
ptDst- массив, в который возвращаются преобразованные объекты точек -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - С:
- 1.2
transform
public void transform(float[] srcPts,
int srcOff,
float[] dstPts,
int dstOff,
int numPts) Преобразует массив координат с плавающей точкой с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].
- Параметры:
-
srcPts- массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y. -
dstPts- массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y. -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - С:
- 1.2
transform
public void transform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts) Преобразует массив координат двойной точности с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
- Параметры:
-
srcPts- массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y. -
dstPts- массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y. -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - С:
- 1.2
transform
public void transform(float[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts) Преобразует массив координат с плавающей точкой с помощью этого преобразования и сохраняет результаты в массив чисел двойной точности. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].
- Параметры:
-
srcPts- массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y. -
dstPts- массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y. -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - С:
- 1.2
transform
public void transform(double[] srcPts,
int srcOff,
float[] dstPts,
int dstOff,
int numPts) Преобразует массив координат двойной точности с помощью этого преобразования и сохраняет результаты в массив чисел с плавающей точкой. Координаты хранятся в массивах, начиная со смещения, указанного в порядке [x0, y0, x1, y1, ..., xn, yn].
- Параметры:
-
srcPts- массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y. -
dstPts- массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y. -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - С:
- 1.2
inverseTransform
public Point2D inverseTransform(Point2D ptSrc,
Point2D ptDst)
throws NoninvertibleTransformException Обратное преобразование указанной ptSrc и сохранение результата в ptDst. Если ptDst является null, новый объект Point2D выделяется, и результат преобразования сохраняется в этом объекте. В любом случае, ptDst, содержащий преобразованную точку, возвращается для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой.
- Параметры:
-
ptSrc- точка, подлежащая обратному преобразованию -
ptDst- результирующая преобразованная точка - Возвращает:
-
ptDst, содержащий результат обратного преобразования. - Исключения:
-
NoninvertibleTransformException- если матрица не может быть обращена. - С:
- 1.2
inverseTransform
public void inverseTransform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts)
throws NoninvertibleTransformException Обратное преобразование массива координат двойной точности с помощью этого преобразования. Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке [x0, y0, x1, y1, ..., xn, yn].
- Параметры:
-
srcPts- массив, содержащий исходные координаты точек. Каждая точка хранится как пара координат x, y. -
dstPts- массив, в который возвращаются преобразованные координаты точек. Каждая точка хранится как пара координат x, y. -
srcOff- смещение до первой точки, подлежащей преобразованию в исходном массиве -
dstOff- смещение до места первой преобразованной точки, которая сохраняется в целевом массиве -
numPts- количество точек, подлежащих преобразованию - Исключения:
-
NoninvertibleTransformException- если матрица не может быть обращена. - С:
- 1.2
deltaTransform
public Point2D deltaTransform(Point2D ptSrc,
Point2D ptDst) Преобразует вектор относительного смещения, заданный ptSrc, и сохраняет результат в ptDst. Вектор относительного смещения преобразуется без применения компонент переноса матрицы аффинного преобразования, используя следующие уравнения:
[ x' ] [ m00 m01 (m02) ] [ x ] [ m00x + m01y ] [ y' ] = [ m10 m11 (m12) ] [ y ] = [ m10x + m11y ] [ (1) ] [ (0) (0) ( 1 ) ] [ (1) ] [ (1) ]Если
ptDst является null, новый объект Point2D выделяется, и результат преобразования сохраняется в этом объекте. В любом случае, ptDst, содержащий преобразованную точку, возвращается для удобства. Если ptSrc и ptDst являются одним и тем же объектом, входная точка корректно перезаписывается преобразованной точкой. - Параметры:
-
ptSrc- вектор смещения, подлежащий преобразованию -
ptDst- результирующий преобразованный вектор смещения - Возвращает:
-
ptDst, содержащий результат преобразования. - С:
- 1.2
deltaTransform
public void deltaTransform(double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts) Преобразует массив векторов относительного смещения с помощью этого преобразования. Вектор относительного смещения преобразуется без применения компонент переноса матрицы аффинного преобразования, используя следующие уравнения:
[ x' ] [ m00 m01 (m02) ] [ x ] [ m00x + m01y ] [ y' ] = [ m10 m11 (m12) ] [ y ] = [ m10x + m11y ] [ (1) ] [ (0) (0) ( 1 ) ] [ (1) ] [ (1) ]Два массива координат могут быть идентичны или перекрываться без влияния на корректность результатов. Этот метод гарантирует, что никакие исходные координаты не перезаписываются предыдущей операцией до их преобразования. Координаты хранятся в массивах, начиная с указанного смещения в порядке
[x0, y0, x1, y1, ..., xn, yn]. - Параметры:
-
srcPts- массив, содержащий исходные векторы смещения. Каждый вектор хранится как пара относительных координат x, y. -
dstPts- массив, в который возвращаются преобразованные векторы смещения. Каждый вектор хранится как пара относительных координат x, y. -
srcOff- смещение до первого вектора, подлежащего преобразованию в исходном массиве -
dstOff- смещение до места первого преобразованного вектора, который сохраняется в целевом массиве -
numPts- количество пар координат векторов, подлежащих преобразованию - С:
- 1.2
createTransformedShape
public Shape createTransformedShape(Shape pSrc)
Возвращает новый объект Shape, определяемый геометрией указанной Shape после преобразования с помощью этого преобразования.
- Параметры:
-
pSrc- указанныйShapeобъект, который должен быть преобразован этим преобразованием. - Возвращает:
- новый
Shapeобъект, который определяет геометрию преобразованногоShape, или null, еслиpSrcравно null. - С:
- 1.2
toString
public String toString()
Возвращает строку, представляющую значение этого объекта Object.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строку, представляющую значение этого объекта
Object. - С:
- 1.2
isIdentity
public boolean isIdentity()
Возвращает true, если это AffineTransform является преобразованием тождества.
- Возвращает:
-
true, если это
AffineTransformявляется преобразованием тождества; false в противном случае. - С:
- 1.2
clone
public Object clone()
Возвращает копию этого объекта AffineTransform.
- Переопределяет:
-
cloneв классеObject - Возвращает:
- объект
Object, являющийся копией этого объектаAffineTransform. - С:
- 1.2
- См. также:
Cloneable
hashCode
public int hashCode()
Возвращает хэш-код для этого преобразования.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- хэш-код для этого преобразования.
- С:
- 1.2
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
equals
public boolean equals(Object obj)
Возвращает true, если это AffineTransform представляет то же аффинное преобразование координат, что и указанный аргумент.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объектObject, для проверки равенства с этим объектомAffineTransform - Возвращает:
-
true, если
objравен этому объектуAffineTransform; false в противном случае. - С:
- 1.2
- См. также:
-
Object.hashCode(),HashMap
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/AffineTransform.html