Spec-Zone.ru › OpenJDK 8

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

C момента:
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, представляющий тождественное преобразование.

AffineTransform(AffineTransform Tx)

Создаёт новый 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.

Методы

Модификатор и тип Метод и описание
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()

Возвращает элемент масштабирования координаты X (m00) матрицы аффинного преобразования 3x3.

double getScaleY()

Возвращает элемент масштабирования координаты Y (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(AffineTransform Tx)

Устанавливает это преобразование в копию преобразования в указанном AffineTransform объекте.

void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)

Устанавливает это преобразование в матрицу, заданную 6 значениями двойной точности.

void shear(double shx, double shy)

Конкатенирует это преобразование со сдвиговым преобразованием.

String toString()

Возвращает String , который представляет значение этого Object.

void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

Преобразует массив координат двойной точности с помощью этого преобразования.

void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)

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

void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)

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

void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)

Преобразует массив координат с плавающей точкой с помощью этого преобразования.

void transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)

Преобразует массив объектов точек с помощью этого преобразования.

Point2D transform(Point2D ptSrc, Point2D ptDst)

Преобразует указанный ptSrc и сохраняет результат в ptDst.

void translate(double tx, double ty)

Конкатенирует это преобразование с трансляционным преобразованием.

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

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

Поля

TYPE_IDENTITY

public static final int TYPE_IDENTITY

Эта константа указывает, что преобразование, определённое этим объектом, является тождественным преобразованием. Тождественное преобразование — это такое преобразование, в котором выходные координаты всегда совпадают с входными координатами. Если это преобразование отличается от тождественного преобразования, то тип будет либо константой GENERAL_TRANSFORM, либо комбинацией соответствующих флаговых битов для различных преобразований координат, выполняемых этим преобразованием.

С момента:
1.2
См. также:
TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения константных полей

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет сдвиг (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

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет равномерное масштабирование (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

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет общее масштабирование (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

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет зеркальное отражение (flip) относительно некоторой оси, что изменяет правую систему координат на левую помимо преобразований, указанных другими флаговыми битами. Правая система координат — это такая система, в которой положительная ось X вращается против часовой стрелки, чтобы наложиться на положительную ось Y, подобно тому, как закручиваются пальцы правой руки, когда вы смотрите на свой большой палец. Левая система координат — это такая система, в которой положительная ось X вращается по часовой стрелке, чтобы наложиться на положительную ось Y, подобно тому, как закручиваются пальцы левой руки. Нет математического способа определить угол исходного преобразования отражения, так как все углы отражения идентичны при соответствующем вращении.

С момента:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения константных полей

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет поворот на 90 градусов в одном из квадрантов, помимо преобразований, указанных другими флаговыми битами. Поворот изменяет углы векторов на одно и то же значение независимо от исходного направления вектора и не изменяет длину вектора. Этот флаговый бит несовместим с флаговым битом TYPE_GENERAL_ROTATION.

С момента:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения константных полей

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION

Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет поворот на произвольный угол, помимо преобразований, указанных другими флаговыми битами. Поворот изменяет углы векторов на одно и то же значение независимо от исходного направления вектора и не изменяет длину вектора. Этот флаговый бит несовместим с флаговым битом TYPE_QUADRANT_ROTATION.

С момента:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), Значения константных полей

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION

Эта константа является битовой маской для любого из флаговых битов поворота.

С момента:
1.2
См. также:
TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, Значения константных полей

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM

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

С момента:
1.2
См. также:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, getType(), Значения константных полей

Конструкторы

AffineTransform

public AffineTransform()

Создаёт новый AffineTransform , представляющий тождественное преобразование.

Since:
1.2

AffineTransform

public AffineTransform(AffineTransform Tx)

Создаёт новый объект AffineTransform, являющийся копией указанного объекта AffineTransform.

Parameters:
Tx - объект AffineTransform для копирования
Since:
1.2

AffineTransform

@ConstructorProperties(value={"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

Methods

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   ]
Поворот на положительный угол θ вращает точки на положительной оси 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        ]
Поворот на положительный угол θ вращает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Parameters:
theta - угол поворота, измеряемый в радианах
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
Returns:
объект AffineTransform, который вращает координаты вокруг указанной точки на указанный угол поворота.
Since:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double vecx,
                                                double vecy)

Возвращает преобразование, которое вращает координаты по вектору поворота. Все координаты поворачиваются на одинаковый угол вокруг начала координат. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если обе vecx и vecy равны 0,0, возвращается преобразование тождества. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));

Parameters:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
Returns:
объект AffineTransform, который вращает координаты по заданному вектору поворота.
Since:
1.6

getRotateInstance

public static AffineTransform getRotateInstance(double vecx,
                                                double vecy,
                                                double anchorx,
                                                double anchory)

Возвращает преобразование, которое вращает координаты вокруг точки-якоря по вектору поворота. Все координаты поворачиваются на одинаковый угол вокруг указанных координат точки-якоря. Величина поворота такова, что координаты вдоль бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к указанным координатам вектора. Если обе vecx и vecy равны 0,0, возвращается преобразование тождества. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(Math.atan2(vecy, vecx),
                                       anchorx, anchory);

Parameters:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
Returns:
объект AffineTransform, который вращает координаты вокруг указанной точки по заданному вектору поворота.
Since:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants)

Возвращает преобразование, которое вращает координаты на указанное количество квадрантов. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);
Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.

Parameters:
numquadrants - количество 90-градусных дуг поворота
Returns:
объект AffineTransform, который вращает координаты на указанное количество квадрантов.
Since:
1.6

getQuadrantRotateInstance

public static AffineTransform getQuadrantRotateInstance(int numquadrants,
                                                        double anchorx,
                                                        double anchory)

Возвращает преобразование, которое вращает координаты на указанное количество квадрантов вокруг указанной точки-якоря. Эта операция эквивалентна вызову:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0,
                                       anchorx, anchory);
Поворот на положительное число квадрантов вращает точки на положительной оси X к положительной оси Y.

Parameters:
numquadrants - количество 90-градусных дуг поворота
anchorx - координата X точки-якоря поворота
anchory - координата Y точки-якоря поворота
Returns:
объект AffineTransform, который вращает координаты на указанное количество квадрантов вокруг указанной точки-якоря.
Since:
1.6

getScaleInstance

public static AffineTransform getScaleInstance(double sx,
                                               double sy)

Возвращает преобразование, представляющее масштабирование. Матрица, представляющая возвращаемое преобразование:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Parameters:
sx - множитель масштабирования по оси X
sy - множитель масштабирования по оси Y
Returns:
объект AffineTransform, который масштабирует координаты на указанные множители.
Since:
1.2

getShearInstance

public static AffineTransform getShearInstance(double shx,
                                               double shy)

Возвращает преобразование, представляющее сдвиг. Матрица, представляющая возвращаемое преобразование:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Parameters:
shx - множитель сдвига по оси X как функция от координаты Y
shy - множитель сдвига по оси Y как функция от координаты X
Returns:
объект AffineTransform, который сдвигает координаты на указанные множители.
Since:
1.2

getType

public int getType()

Возвращает флаги, описывающие свойства преобразования этого преобразователя. Возвращаемое значение — это либо одна из констант TYPE_IDENTITY или TYPE_GENERAL_TRANSFORM, либо комбинация соответствующих флагов. Допустимая комбинация флагов — это операция XOR, которая может комбинировать флаг 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()

Возвращает элемент масштабирования по оси X (m00) матрицы аффинного преобразования 3x3.

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

getScaleY

public double getScaleY()

Возвращает элемент масштабирования по оси Y (m11) матрицы аффинного преобразования 3x3.

Возвращает:
значение double, являющееся координатой Y элемента масштабирования матрицы аффинного преобразования.
С:
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

rotate

public void rotate(double theta)

Конкатенирует это преобразование с преобразованием поворота. Это эквивалентно вызову concatenate(R), где R — AffineTransform, представленное следующей матрицей:

[   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
Поворот на положительный угол theta поворачивает точки по положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.

Параметры:
theta - угол поворота в радианах
С:
1.2

rotate

public void rotate(double theta,
                   double anchorx,
                   double anchory)

Конкатенирует это преобразование с преобразованием, которое вращает координаты вокруг точки привязки. Эта операция эквивалентна перемещению координат таким образом, чтобы точка привязки находилась в начале координат (S1), затем вращению их вокруг нового начала координат (S2) и, наконец, перемещению таким образом, чтобы начальная точка была восстановлена в координатах исходной точки привязки (S3).

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

translate(anchorx, anchory);      // S3: final translation
     rotate(theta);                    // S2: rotate around anchor
     translate(-anchorx, -anchory);    // S1: translate anchor to origin
Поворот на положительный угол theta поворачивает точки по положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.
Параметры:
theta - угол поворота в радианах
anchorx - координата X точки привязки поворота
anchory - координата Y точки привязки поворота
С:
1.2

rotate

public void rotate(double vecx,
                   double vecy)

Конкатенирует это преобразование с преобразованием, которое вращает координаты в соответствии с вектором поворота. Все координаты поворачиваются вокруг начала координат на одинаковый угол. Величина поворота такова, что координаты по бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к координатам заданного вектора. Если оба vecx и vecy равны 0.0, к этому преобразованию не добавляется дополнительный поворот. Эта операция эквивалентна вызову:

rotate(Math.atan2(vecy, vecx));

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
С:
1.6

rotate

public void rotate(double vecx,
                   double vecy,
                   double anchorx,
                   double anchory)

Конкатенирует это преобразование с преобразованием, которое вращает координаты вокруг точки привязки в соответствии с вектором поворота. Все координаты поворачиваются вокруг указанных координат привязки на один и тот же угол. Величина поворота такова, что координаты по бывшей положительной оси X будут впоследствии выровнены с вектором, направленным от начала координат к координатам заданного вектора. Если оба vecx и vecy равны 0.0, преобразование не изменяется никоим образом. Этот метод эквивалентен вызову:

rotate(Math.atan2(vecy, vecx), anchorx, anchory);

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки привязки поворота
anchory - координата Y точки привязки поворота
С:
1.6

quadrantRotate

public void quadrantRotate(int numquadrants)

Конкатенирует это преобразование с преобразованием, которое вращает координаты на заданное число квадрантов. Это эквивалентно вызову:

rotate(numquadrants * Math.PI / 2.0);
Поворот на положительное число квадрантов поворачивает точки по положительной оси X к положительной оси Y.

Параметры:
numquadrants - число дуг по 90 градусов для поворота
С:
1.6

quadrantRotate

public void quadrantRotate(int numquadrants,
                           double anchorx,
                           double anchory)

Конкатенирует это преобразование с преобразованием, которое вращает координаты на заданное число квадрантов вокруг заданной точки привязки. Этот метод эквивалентен вызову:

rotate(numquadrants * Math.PI / 2.0, anchorx, anchory);
Поворот на положительное число квадрантов поворачивает точки по положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество поворотов на 90 градусов
anchorx - координата X точки отсчёта поворота
anchory - координата Y точки отсчёта поворота
С:
1.6

scale

public void scale(double sx,
                  double sy)

Присоединяет к этому преобразованию масштабирование. Это эквивалентно вызову concatenate(S), где S — AffineTransform представленное следующей матрицей:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Параметры:
sx - коэффициент масштабирования по оси X
sy - коэффициент масштабирования по оси Y
С:
1.2

shear

public void shear(double shx,
                  double shy)

Присоединяет к этому преобразованию сдвиг. Это эквивалентно вызову concatenate(SH), где SH — AffineTransform представленное следующей матрицей:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Параметры:
shx - множитель сдвига по оси X, зависящий от координаты Y
shy - множитель сдвига по оси Y, зависящий от координаты X
С:
1.2

setToIdentity

public void setToIdentity()

Сбрасывает это преобразование до тождественного преобразования.

С:
1.2

setToTranslation

public void setToTranslation(double tx,
                             double ty)

Устанавливает это преобразование как сдвиг. Матрица, представляющая это преобразование, становится:

[   1    0    tx  ]
          [   0    1    ty  ]
          [   0    0    1   ]

Параметры:
tx - расстояние сдвига по оси X
ty - расстояние сдвига по оси Y
С:
1.2

setToRotation

public void setToRotation(double theta)

Устанавливает это преобразование как поворот. Матрица, представляющая это преобразование, становится:

[   cos(theta)    -sin(theta)    0   ]
          [   sin(theta)     cos(theta)    0   ]
          [       0              0         1   ]
Поворот на положительный угол theta вращает точки на положительной оси X к положительной оси Y. Обратите также внимание на обсуждение Обработки поворотов на 90 градусов выше.

Параметры:
theta - угол поворота в радианах
С:
1.2

setToRotation

public void setToRotation(double theta,
                          double anchorx,
                          double anchory)

Устанавливает это преобразование как поворот со сдвигом. Эта операция эквивалентна сдвигу координат так, что точка отсчёта находится в начале координат (S1), затем повороту вокруг нового начала координат (S2) и, наконец, сдвигу, чтобы возвратить исходное начало координат в координаты исходной точки отсчёта (S3).

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

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

setToRotation

public void setToRotation(double vecx,
                          double vecy)

Устанавливает это преобразование как поворот, вращающий координаты относительно вектора поворота. Все координаты поворачиваются на одинаковый угол вокруг начала координат. Величина поворота такова, что координаты вдоль бывшей положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:

setToRotation(Math.atan2(vecy, vecx));

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
С:
1.6

setToRotation

public void setToRotation(double vecx,
                          double vecy,
                          double anchorx,
                          double anchory)

Устанавливает это преобразование как поворот, вращающий координаты вокруг точки отсчёта относительно вектора поворота. Все координаты поворачиваются на одинаковый угол вокруг указанных координат точки отсчёта. Величина поворота такова, что координаты вдоль бывшей положительной оси X впоследствии выровняются с вектором, направленным от начала координат к указанным координатам вектора. Если оба vecx и vecy равны 0,0, преобразование устанавливается в тождественное преобразование. Эта операция эквивалентна вызову:

setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);

Параметры:
vecx - координата X вектора поворота
vecy - координата Y вектора поворота
anchorx - координата X точки отсчёта поворота
anchory - координата Y точки отсчёта поворота
С:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants)

Устанавливает это преобразование как поворот на указанное количество квадрантов. Эта операция эквивалентна вызову:

setToRotation(numquadrants * Math.PI / 2.0);
Поворот на положительное количество квадрантов вращает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество поворотов на 90 градусов
С:
1.6

setToQuadrantRotation

public void setToQuadrantRotation(int numquadrants,
                                  double anchorx,
                                  double anchory)

Устанавливает это преобразование как поворот со сдвигом на указанное количество квадрантов вокруг указанной точки отсчёта. Эта операция эквивалентна вызову:

setToRotation(numquadrants * Math.PI / 2.0, anchorx, anchory);
Поворот на положительное количество квадрантов вращает точки на положительной оси X к положительной оси Y.

Параметры:
numquadrants - количество поворотов на 90 градусов
anchorx - координата X точки отсчёта поворота
anchory - координата Y точки отсчёта поворота
С:
1.6

setToScale

public void setToScale(double sx,
                       double sy)

Устанавливает это преобразование как масштабирование. Матрица, представляющая это преобразование, становится:

[   sx   0    0   ]
          [   0    sy   0   ]
          [   0    0    1   ]

Параметры:
sx - коэффициент масштабирования по оси X
sy - коэффициент масштабирования по оси Y
С:
1.2

setToShear

public void setToShear(double shx,
                       double shy)

Устанавливает это преобразование как сдвиг. Матрица, представляющая это преобразование, становится:

[   1   shx   0   ]
          [  shy   1    0   ]
          [   0    0    1   ]

Параметры:
shx - множитель сдвига по оси X, зависящий от координаты Y
shy - множитель сдвига по оси Y, зависящий от координаты X
С:
1.2

setTransform

public void setTransform(AffineTransform Tx)

Устанавливает это преобразование как копию преобразования в указанном AffineTransform объекте.

Параметры:
Tx - AffineTransform объект, из которого копируется преобразование
С:
1.2

setTransform

public void setTransform(double m00,
                         double m10,
                         double m01,
                         double m11,
                         double m02,
                         double m12)

Устанавливает это преобразование как матрицу, заданную 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, если это преобразование является тождественным.

Возвращает:
true если это преобразование тождественное; 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, если это преобразование представляет то же аффинное преобразование координат, что и указанный аргумент.

Переопределяет:
equals в классе Object
Параметры:
obj - преобразование для проверки равенства с этим объектом
Возвращает:
true если obj равно этому объекту; 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.

Spec-Zone.ru

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