Spec-Zone .ru
спецификации, руководства, описания, API
|
public class AffineTransform extends Object implements Cloneable, Serializable
AffineTransform
class представляет 2-D аффинное преобразование, которое выполняет линейное отображение от 2-D координат до других 2-D координат, которое сохраняет "честность" и "бывший параллельный" из строк. Аффинные преобразования могут быть созданы, используя последовательности преобразований, масштабов, зеркальных отражений, вращений, и ножниц. Такое координатное преобразование может быть представлено 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
class, параметр двойной точности определяет угол вращения в радианах. У этих методов есть специальная обработка для вращений приблизительно 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)
, из-за незначительных изменений в матрице, вызванной не0.0 значениями, полученными для синуса и косинуса. Если эти преобразования не будут классифицированы как квадрантные вращения тогда последующий код, который пытается оптимизировать дальнейшие операции, основанные на типе преобразования, то будет понижен к его самой общей реализации.
Поскольку квадрантные вращения довольно распространены, этот class должен обработать эти случаи разумно быстро, и в применении вращений к преобразованию и в применении получающегося преобразования к координатам. Чтобы облегчить эту оптимальную обработку, методы, которые берут угол вращения, измеренного в радианах, пытаются обнаружить углы, которые предназначаются, чтобы быть квадрантными вращениями и обработать их как таковой. Эти методы поэтому обрабатывают угловую тету как квадрантное вращение если также Math.sin(theta)
или Math.cos(theta)
возвраты точно 1.0 или-1.0. Как показывает опыт, это свойство сохраняется для диапазона приблизительно 0.0000000211 радианов (или 0.00000121 градуса) вокруг маленькой сети магазинов Math.PI/2.0
.
Модификатор и Тип | Поле и Описание |
---|---|
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 specifiable записей 3x3 матрица преобразования. |
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
Создает новое
AffineTransform от 6 значений двойной точности, представляющих 6 specifiable записей 3x3 матрица преобразования. |
AffineTransform(float[] flatmatrix)
Создает новое
AffineTransform от массива значений с плавающей точкой, представляющих или 4 непреобразования enries или 6 specifiable записей 3x3 матрица преобразования. |
AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
Создает новое
AffineTransform от 6 значений с плавающей точкой, представляющих 6 specifiable записей 3x3 матрица преобразования. |
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
clone()
Возвращает копию этого
AffineTransform объект. |
void |
concatenate(AffineTransform Tx)
Конкатенирует
AffineTransform Tx к этому AffineTransform Cx обычно полезным способом обеспечить новое пространство пользователя, которое отображается на прежнее пространство пользователя Tx . |
AffineTransform |
createInverse()
Возвраты
AffineTransform объект, представляющий обратное преобразование. |
Форма |
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 значений specifiable в 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)
Возвращает преобразование, которое поворачивает координаты вокруг точки привязки accordinate к вектору вращения.
|
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)
Связывает это преобразование с преобразованием сдвига.
|
Строка |
toString()
Возвраты a
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)
Связывает это преобразование с преобразованием преобразования.
|
public static final int TYPE_IDENTITY
TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_TRANSLATION
TYPE_IDENTITY
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_UNIFORM_SCALE
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_GENERAL_SCALE
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_MASK_SCALE
TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, Постоянные Значения полейpublic static final int TYPE_FLIP
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_QUADRANT_ROTATION
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_GENERAL_ROTATION
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_TRANSFORM
, getType()
, Постоянные Значения полейpublic static final int TYPE_MASK_ROTATION
TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, Постоянные Значения полейpublic static final int TYPE_GENERAL_TRANSFORM
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_FLIP
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, getType()
, Постоянные Значения полейpublic AffineTransform()
AffineTransform
представление преобразования Идентификационных данных.public AffineTransform(AffineTransform Tx)
AffineTransform
это - копия указанного AffineTransform
объект.Tx
- 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 specifiable записей 3x3 матрица преобразования.m00
- X элементов масштабирования координаты 3x3 матрицаm10
- координата Y сдвиг элемента 3x3 матрицаm01
- X элементов сдвига координаты 3x3 матрицаm11
- координата Y масштабирующийся элемент 3x3 матрицаm02
- X координатных элементов преобразования 3x3 матрицаm12
- Y координируют элемент преобразования 3x3 матрицаpublic AffineTransform(float[] flatmatrix)
AffineTransform
от массива значений с плавающей точкой, представляющих или 4 непреобразования enries или 6 specifiable записей 3x3 матрица преобразования. Значения получаются от массива как { m00 m10 m01 m11 [m02 m12]}.flatmatrix
- массив плавающий, содержащий значения, которые будут установлены в новом AffineTransform
объект. Длина массива, как предполагается, является по крайней мере 4. Если длина массива - меньше чем 6, только первые 4 значения принимаются. Если длина массива больше чем 6, первые 6 значений принимаются.public AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
AffineTransform
от 6 значений двойной точности, представляющих 6 specifiable записей 3x3 матрица преобразования.m00
- X элементов масштабирования координаты 3x3 матрицаm10
- координата Y сдвиг элемента 3x3 матрицаm01
- X элементов сдвига координаты 3x3 матрицаm11
- координата Y масштабирующийся элемент 3x3 матрицаm02
- X координатных элементов преобразования 3x3 матрицаm12
- Y координируют элемент преобразования 3x3 матрицаpublic AffineTransform(double[] flatmatrix)
AffineTransform
от массива значений двойной точности, представляющих или 4 записи непреобразования или 6 specifiable записей 3x3 матрица преобразования. Значения получаются от массива как { m00 m10 m01 m11 [m02 m12]}.flatmatrix
- двойной массив, содержащий значения, которые будут установлены в новом AffineTransform
объект. Длина массива, как предполагается, является по крайней мере 4. Если длина массива - меньше чем 6, только первые 4 значения принимаются. Если длина массива больше чем 6, первые 6 значений принимаются.public static AffineTransform getTranslateInstance(double tx, double ty)
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- расстояние, которым координаты преобразовываются в X направлениях осиty
- расстояние, которым координаты преобразовываются в направлении Оси YAffineTransform
объект, который представляет преобразование преобразования, создаваемое с указанным вектором.public static AffineTransform getRotateInstance(double theta)
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]Вращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахAffineTransform
объект, который является преобразованием вращения, создаваемым с указанным углом вращения.public static AffineTransform getRotateInstance(double theta, double anchorx, double anchory)
Эта работа эквивалентна следующей последовательности вызовов:
AffineTransform Tx = new AffineTransform(); Tx.translate(anchorx, anchory); // S3: final translation Tx.rotate(theta); // S2: rotate around anchor Tx.translate(-anchorx, -anchory); // S1: translate anchor to originМатрица, представляющая возвращенное преобразование:
[ cos(theta) -sin(theta) x-x*cos+y*sin ] [ sin(theta) cos(theta) y-x*sin-y*cos ] [ 0 0 1 ]Вращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияAffineTransform
объект, который поворачивает координаты вокруг указанной точки указанным углом вращения.public static AffineTransform getRotateInstance(double vecx, double vecy)
vecx
и vecy
0.0, преобразование идентификационных данных возвращается. Эта работа эквивалентна вызову: AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияAffineTransform
объект, который поворачивает координаты согласно указанному вектору вращения.public static AffineTransform getRotateInstance(double vecx, double vecy, double anchorx, double anchory)
vecx
и vecy
0.0, преобразование идентификационных данных возвращается. Эта работа эквивалентна вызову: AffineTransform.getRotateInstance(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияAffineTransform
объект, который поворачивает координаты вокруг указанной точки согласно указанному вектору вращения.public static AffineTransform getQuadrantRotateInstance(int numquadrants)
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);Вращение на положительное число квадрантов поворачивает точки на положительном X осей к положительной Оси Y.
numquadrants
- число дуг на 90 градусов, чтобы вращатьсяAffineTransform
объект, который поворачивает координаты на конкретное количество квадрантов.public static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0, anchorx, anchory);Вращение на положительное число квадрантов поворачивает точки на положительном X осей к положительной Оси Y.
numquadrants
- число дуг на 90 градусов, чтобы вращатьсяanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияAffineTransform
объект, который поворачивает координаты на конкретное количество квадрантов вокруг указанной точки привязки.public static AffineTransform getScaleInstance(double sx, double sy)
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- фактор, которым координаты масштабируются вдоль X направлений осиsy
- фактор, которым координаты масштабируются вдоль направления Оси YAffineTransform
возразите, что масштабы координируют указанными факторами.public static AffineTransform getShearInstance(double shx, double shy)
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- множитель, на который координаты смещаются в направлении положительного X осей как фактор их координаты Yshy
- множитель, на который координаты смещаются в направлении положительной Оси Y как фактор их X координатAffineTransform
возразите, что ножницы координируют указанными множителями.public int getType()
TYPE_IDENTITY
, TYPE_TRANSLATION
, TYPE_UNIFORM_SCALE
, TYPE_GENERAL_SCALE
, TYPE_QUADRANT_ROTATION
, TYPE_GENERAL_ROTATION
, TYPE_GENERAL_TRANSFORM
public double getDeterminant()
Если детерминант является ненулевым, то это преобразование является обратимым и различные методы, которые зависят от обратного преобразования, не должны бросить a NoninvertibleTransformException
. Если детерминант является нулем тогда, это преобразование не может быть инвертировано, так как преобразование отображает все входные координаты на строку или точку. Если детерминант около достаточно, чтобы обнулить тогда обратные операции преобразования, не мог бы перенести достаточную точность, чтобы привести к значимым результатам.
Если это преобразование представляет универсальный масштаб, как обозначено getType
метод тогда детерминант также представляет квадрат универсального масштабного коэффициента, которым все точки расширяются от или законтрактуются к источнику. Если это преобразование представит неоднородный масштаб или более общее преобразование тогда, то детерминант вряд ли представит значение, полезное в любой цели кроме определения, если инверсия преобразует, возможны.
Математически, детерминант вычисляется, используя формулу:
| m00 m01 m02 | | m10 m11 m12 | = m00 * m11 - m01 * m10 | 0 0 1 |
getType()
, createInverse()
, inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D)
, TYPE_UNIFORM_SCALE
public void getMatrix(double[] flatmatrix)
flatmatrix
- двойной массив имел обыкновение хранить возвращенные значения.getScaleX()
, getScaleY()
, getShearX()
, getShearY()
, getTranslateX()
, getTranslateY()
public double getScaleX()
getMatrix(double[])
public double getScaleY()
getMatrix(double[])
public double getShearX()
getMatrix(double[])
public double getShearY()
getMatrix(double[])
public double getTranslateX()
getMatrix(double[])
public double getTranslateY()
getMatrix(double[])
public void translate(double tx, double ty)
AffineTransform
представленный следующей матрицей: [ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- расстояние, которым координаты преобразовываются в X направлениях осиty
- расстояние, которым координаты преобразовываются в направлении Оси Ypublic void rotate(double theta)
AffineTransform
представленный следующей матрицей: [ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]Вращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахpublic void rotate(double theta, double anchorx, double anchory)
Эта работа эквивалентна следующей последовательности вызовов:
translate(anchorx, anchory); // S3: final translation rotate(theta); // S2: rotate around anchor translate(-anchorx, -anchory); // S1: translate anchor to originВращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияpublic void rotate(double vecx, double vecy)
vecx
и vecy
0.0, никакое дополнительное вращение не добавляется к этому преобразованию. Эта работа эквивалентна вызову: rotate(Math.atan2(vecy, vecx));
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияpublic void rotate(double vecx, double vecy, double anchorx, double anchory)
vecx
и vecy
0.0, преобразование не изменяется всегда. Этот метод эквивалентен вызову: rotate(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияpublic void quadrantRotate(int numquadrants)
rotate(numquadrants * Math.PI / 2.0);Вращение на положительное число квадрантов поворачивает точки на положительном X осей к положительной Оси Y.
numquadrants
- число дуг на 90 градусов, чтобы вращаться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 точки привязки вращенияpublic void scale(double sx, double sy)
AffineTransform
представленный следующей матрицей: [ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- фактор, которым координаты масштабируются вдоль X направлений осиsy
- фактор, которым координаты масштабируются вдоль направления Оси Ypublic void shear(double shx, double shy)
AffineTransform
представленный следующей матрицей: [ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- множитель, на который координаты смещаются в направлении положительного X осей как фактор их координаты Yshy
- множитель, на который координаты смещаются в направлении положительной Оси Y как фактор их X координатpublic void setToIdentity()
public void setToTranslation(double tx, double ty)
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- расстояние, которым координаты преобразовываются в X направлениях осиty
- расстояние, которым координаты преобразовываются в направлении Оси Ypublic void setToRotation(double theta)
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]Вращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахpublic void setToRotation(double theta, double anchorx, double anchory)
Эта работа эквивалентна следующей последовательности вызовов:
setToTranslation(anchorx, anchory); // S3: final translation rotate(theta); // S2: rotate around anchor translate(-anchorx, -anchory); // S1: translate anchor to originМатрица, представляющая это преобразование, становится:
[ cos(theta) -sin(theta) x-x*cos+y*sin ] [ sin(theta) cos(theta) y-x*sin-y*cos ] [ 0 0 1 ]Вращение на положительную угловую тету поворачивает точки на положительном X осей к положительной Оси Y. Отметьте также обсуждение Обработки Вращений на 90 градусов выше.
theta
- угол вращения измерялся в радианахanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияpublic void setToRotation(double vecx, double vecy)
vecx
и vecy
0.0, преобразование устанавливается в идентификационные данные, преобразовывают. Эта работа эквивалентна вызову: setToRotation(Math.atan2(vecy, vecx));
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияpublic void setToRotation(double vecx, double vecy, double anchorx, double anchory)
vecx
и vecy
0.0, преобразование устанавливается в идентификационные данные, преобразовывают. Эта работа эквивалентна вызову: setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- X координат вектора вращенияvecy
- координата Y вектора вращенияanchorx
- X координат точки привязки вращенияanchory
- координата Y точки привязки вращенияpublic void setToQuadrantRotation(int numquadrants)
setToRotation(numquadrants * Math.PI / 2.0);Вращение на положительное число квадрантов поворачивает точки на положительном X осей к положительной Оси Y.
numquadrants
- число дуг на 90 градусов, чтобы вращаться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 точки привязки вращенияpublic void setToScale(double sx, double sy)
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- фактор, которым координаты масштабируются вдоль X направлений осиsy
- фактор, которым координаты масштабируются вдоль направления Оси Ypublic void setToShear(double shx, double shy)
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- множитель, на который координаты смещаются в направлении положительного X осей как фактор их координаты Yshy
- множитель, на который координаты смещаются в направлении положительной Оси Y как фактор их X координатpublic void setTransform(AffineTransform Tx)
AffineTransform
объект.Tx
- AffineTransform
объект, с которого можно скопировать преобразованиеpublic void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
m00
- X элементов масштабирования координаты 3x3 матрицаm10
- координата Y сдвиг элемента 3x3 матрицаm01
- X элементов сдвига координаты 3x3 матрицаm11
- координата Y масштабирующийся элемент 3x3 матрицаm02
- X координатных элементов преобразования 3x3 матрицаm12
- Y координируют элемент преобразования 3x3 матрицаpublic void concatenate(AffineTransform Tx)
AffineTransform
Tx
к этому AffineTransform
Cx обычно полезным способом обеспечить новое пространство пользователя, которое отображается на прежнее пространство пользователя Tx
. Cx обновляется, чтобы выполнить объединенное преобразование. Преобразовывая точку p обновленным преобразованием Cx' эквивалентен первому преобразованию p Tx
и затем преобразовывая результат исходным преобразованием Cx как это: Cx' (p) = Cx (Tx (p)) В матричной нотации, если это преобразование Cx представляется матрицей [это] и Tx
представляется матрицей [Tx] тогда, этот метод делает следующее: [this] = [this] x [Tx]
Tx
- AffineTransform
объект, который будет связан с этим AffineTransform
объект.preConcatenate(java.awt.geom.AffineTransform)
public void preConcatenate(AffineTransform Tx)
AffineTransform
Tx
к этому AffineTransform
Cx реже используемым способом так, что Tx
изменяет координатное преобразование относительно абсолютного пиксельного пространства, а не относительно существующего пространства пользователя. Cx обновляется, чтобы выполнить объединенное преобразование. Преобразовывая точку p обновленным преобразованием Cx' эквивалентен первому преобразованию p исходным преобразованием Cx и затем преобразование результата Tx
как это: Cx' (p) = Tx (Cx (p)) В матричной нотации, если это преобразование Cx представляется матрицей [это] и Tx
представляется матрицей [Tx] тогда, этот метод делает следующее: [this] = [Tx] x [this]
Tx
- AffineTransform
объект, который будет связан с этим AffineTransform
объект.concatenate(java.awt.geom.AffineTransform)
public AffineTransform createInverse() throws NoninvertibleTransformException
AffineTransform
объект, представляющий обратное преобразование. Обратное преобразование Tx' этого преобразования Tx отображает координаты, преобразованные Tx назад к их исходным координатам. Другими словами, Техас' (Tx (p)) = p = Tx (Tx' (p)). Если это преобразование отобразит все координаты на точку или строку тогда, то у него не будет инверсии, начиная с координат, которые не лежат на пункте назначения, или у строки не будет обратного отображения. getDeterminant
метод может использоваться, чтобы определить, нет ли у этого преобразования никакой инверсии, когда исключение будет выдано если createInverse
метод вызывают.
AffineTransform
объект, представляющий обратное преобразование.NoninvertibleTransformException
- если матрица не может быть инвертирована.getDeterminant()
public void invert() throws NoninvertibleTransformException
Если это преобразование отобразит все координаты на точку или строку тогда, то у него не будет инверсии, начиная с координат, которые не лежат на пункте назначения, или у строки не будет обратного отображения. getDeterminant
метод может использоваться, чтобы определить, нет ли у этого преобразования никакой инверсии, когда исключение будет выдано если invert
метод вызывают.
NoninvertibleTransformException
- если матрица не может быть инвертирована.getDeterminant()
public Point2D transform(Point2D ptSrc, Point2D ptDst)
ptSrc
и хранит результат в ptDst
. Если ptDst
null
, новое Point2D
объект выделяется, и затем результат преобразования сохранен в этом объекте. В любом случае, ptDst
, то, который содержит преобразованную точку, возвращается для удобства. Если ptSrc
и ptDst
тот же самый объект, точка ввода правильно перезаписывается с преобразованной точкой.ptSrc
- указанное Point2D
быть преобразованнымptDst
- указанное Point2D
это хранит результат преобразования ptSrc
ptDst
после преобразования ptSrc
и stroring результат в ptDst
.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
- число точечных объектов, которые будут преобразованы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
- число очков, которое будет преобразовано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
- число точечных объектов, которые будут преобразованы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
- число очков, которое будет преобразовано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
- число точечных объектов, которые будут преобразованыpublic Point2D inverseTransform(Point2D ptSrc, Point2D ptDst) throws NoninvertibleTransformException
ptSrc
и хранит результат в ptDst
. Если ptDst
null
, новое Point2D
объект выделяется, и затем результат преобразования сохранен в этом объекте. В любом случае, ptDst
, то, который содержит преобразованную точку, возвращается для удобства. Если ptSrc
и ptDst
тот же самый объект, точка ввода правильно перезаписывается с преобразованной точкой.ptSrc
- точка, чтобы быть обратный преобразованныйptDst
- получающаяся преобразованная точкаptDst
, который содержит результат обратного преобразования.NoninvertibleTransformException
- если матрица не может быть инвертирована.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
- если матрица не может быть инвертирована.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
, который содержит результат преобразования.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
- число векторных координатных пар, которые будут преобразованыpublic Shape createTransformedShape(Shape pSrc)
Shape
объект определяется геометрией указанного Shape
после того, как это было преобразовано этим преобразованием.pSrc
- указанное Shape
объект, который будет преобразован этим преобразованием.Shape
объект, который определяет геометрию преобразованного Shape
, или нуль, если pSrc
нуль.public boolean isIdentity()
true
если это AffineTransform
идентификационные данные, преобразовывают.true
если это AffineTransform
идентификационные данные, преобразовывают; false
иначе.public Object clone()
AffineTransform
объект.public int hashCode()
hashCode
в class Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
true
если это AffineTransform
представляет то же самое аффинное координатное преобразование как указанный параметр.equals
в class Object
obj
- Object
протестировать на равенство с этим AffineTransform
true
если obj
равняется этому AffineTransform
объект; false
иначе.Object.hashCode()
, HashMap
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92