Класс 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 Tx) Создаёт новый |
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) Создаёт новый |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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() Возвращает элемент масштабирования координаты 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) Обратное преобразование указанного |
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(AffineTransform Tx) Устанавливает это преобразование в копию преобразования в указанном |
void |
setTransform(double m00,
double m10,
double m01,
double m11,
double m02,
double m12) Устанавливает это преобразование в матрицу, заданную 6 значениями двойной точности. |
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
Этот флаговый бит указывает, что преобразование, определённое этим объектом, выполняет сдвиг (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.