public class AffineTransform extends Object implements Cloneable, Serializable
AffineTransform
类代表一个二维仿射变换进行二维线性映射坐标到二维坐标,其他保持“直线”和“平行线”。仿射变换可以用序列的翻译,构造尺度,翻转,旋转,和剪刀。
这样的坐标变换可以表示为一个3行的3列矩阵与一个隐含的最后一行的[ 0 1 0 ]。这个矩阵变换成目标坐标(x',y')
源坐标(x,y)
考虑他们是一个列向量乘以坐标向量的矩阵按照以下过程:
【x】【M00 M01 M02 ] [×] [ m00x + m01y + M02 ][你] = [ M10 M11 M12 ] [年] = [ m10x + m11y + M12 ][ 0 [ 0 [ 1 ] [ 1 ] [ 1 ] [ 1 ]
在AffineTransform
班rotate
方法的一些变化,双精度参数指定旋转弧度的角。这些方法有特殊处理的旋转约90度(包括倍数,如180,270,和360度),使常见的情况下,象限旋转更有效地处理。这种特殊的处理可以使角度非常接近90度的倍数,被视为如果他们是90度的精确倍数。对于90度的小倍数的角度视为一个象限旋转的范围是约0.00000121度宽。本节解释了为什么需要这样的特殊护理,以及它是如何实施的。
自从90度表示为PI/2
弧度,因为π是超越数(因此不合理的),它是不可能精确地表示一个多90度作为一个确切的双精度值测量弧度。因此,它是在理论上是不可能的描述象限旋转(90,180,270或360度),使用这些值。双精度浮点值很接近PI/2
零倍数但从来没有足够接近正弦或余弦正是0、1或1。实施Math.sin()
和Math.cos()
相应不返回0以外的任何情况下Math.sin(0.0)
。这些相同的实现,然而,准确返回1和1部分左右各90度的范围,因为多数正确答案是如此接近1或1,双精度的有效不能代表差异尽可以为数近0。
这些问题最终的结果是,如果Math.sin()
和Math.cos()
方法用于直接生成值矩阵的修改在这些弧度的旋转操作产生的变换是不严格分类为即便是像rotate(Math.PI/2.0)
简单象限旋转,由于得到的正弦和余弦的non-0.0值引起的在矩阵的微小变化。如果这些变换不被归类为象限旋转,然后随后的代码,试图优化进一步的操作的基础上的类型的变换将被降级到其最一般的实现。
由于象限旋转是相当普遍的,这个类应该迅速处理这些情况下,无论是在应用旋转的变换和应用所产生的变换的坐标。为了促进这一最优处理,以测量弧度旋转角度的方法试图检测角度打算象限轮换,这样对待他们。这些方法治疗角θ为象限旋转如果Math.sin(theta)
或Math.cos(theta)
恰好返回1或1。作为一个经验法则,这个属性适用范围大约为0.0000000211弧度(0.00000121度)在Math.PI/2.0
小倍数。
Modifier and Type | Field and Description |
---|---|
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
该标志位表示此对象所定义的变换,除了表示由其他标志位所表示的转换之外,还可以执行一个统一的规模。
|
Constructor and Description |
---|
AffineTransform()
构建代表身份转型的一个新的
AffineTransform 。
|
AffineTransform(AffineTransform Tx)
构建了一种新的
AffineTransform 是一份指定的
AffineTransform 对象。
|
AffineTransform(double[] flatmatrix)
构建了从双精度值代表4非翻译作品或3x3变换矩阵的6项新
AffineTransform 指定数组。
|
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
6双精度值代表的3x3变换矩阵可以构造一个新的
AffineTransform 条目6。
|
AffineTransform(float[] flatmatrix)
构建了一种新的
AffineTransform 从浮点值数组表示的4非翻译作品或3x3变换矩阵的具体条目6。
|
AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
从6个浮点值表示的3x3变换矩阵可以构造一个新的
AffineTransform 条目6。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
返回一份本
AffineTransform 对象。
|
void |
concatenate(AffineTransform Tx)
将一个
AffineTransform
Tx 这
AffineTransform CX在最常用的方式为用户提供新的空间,是由
Tx 映射到用户空间的前。
|
AffineTransform |
createInverse()
返回一个
AffineTransform 表示反变换。
|
Shape |
createTransformedShape(Shape pSrc)
返回由指定的
Shape 几何后已由该变换新的
Shape 对象。
|
void |
deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
通过这种变换变换一个相对距离向量的数组。
|
Point2D |
deltaTransform(Point2D ptSrc, Point2D ptDst)
将相对距离向量指定的
ptSrc 和商店在
ptDst 结果。
|
boolean |
equals(Object obj)
返回
true 如果这
AffineTransform 代表相同的仿射坐标变换为指定参数。
|
double |
getDeterminant()
返回变换的矩阵表示的行列式。
|
void |
getMatrix(double[] flatmatrix)
在3x3仿射变换矩阵并将其检索指定值为6的双精度值的数组。
|
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()
返回此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 CX一个
AffineTransform
Tx 在一个不太常用的方式,
Tx 修改坐标变换相对于绝对像素空间而不是相对于现有的用户空间。
|
void |
quadrantRotate(int numquadrants)
将此变换与旋转坐标变换的指定数目的象限。
|
void |
quadrantRotate(int numquadrants, double anchorx, double anchory)
将此变换与变换旋转坐标指定数在指定点的象限。
|
void |
rotate(double theta)
将此变换和旋转变换。
|
void |
rotate(double vecx, double vecy)
将此变换与坐标变换,旋转,根据旋转矢量。
|
void |
rotate(double theta, double anchorx, double anchory)
将此变换与坐标变换,旋转围绕一个锚点。
|
void |
rotate(double vecx, double vecy, double anchorx, double anchory)
将此变换与坐标变换,旋转围绕一个锚点根据旋转矢量。
|
void |
scale(double sx, double sy)
将此变换和比例变换。
|
void |
setToIdentity()
重置该变换身份变换。
|
void |
setToQuadrantRotation(int numquadrants)
设置这个变换一个旋转坐标指定数个象限旋转变换。
|
void |
setToQuadrantRotation(int numquadrants, double anchorx, double anchory)
设置这个变换翻译旋转变换的旋转坐标系上的指定数在指定点的象限。
|
void |
setToRotation(double theta)
将此变换设置为旋转变换。
|
void |
setToRotation(double vecx, double vecy)
将此变换设置为根据旋转矢量旋转坐标的旋转变换。
|
void |
setToRotation(double theta, double anchorx, double anchory)
将此转换设置为一个翻译的旋转变换。
|
void |
setToRotation(double vecx, double vecy, double anchorx, double anchory)
将此变换设置为根据旋转矢量围绕一个固定点旋转的旋转变换。
|
void |
setToScale(double sx, double sy)
将此转换设置为缩放转换。
|
void |
setToShear(double shx, double shy)
将此转换设置为剪切转换。
|
void |
setToTranslation(double tx, double ty)
将此转换设置为转换转换。
|
void |
setTransform(AffineTransform Tx)
设置这个变换复制在指定
AffineTransform 对象的变换。
|
void |
setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
将此转换设置为由6个双精度值指定的矩阵。
|
void |
shear(double shx, double shy)
将此变换与剪切变换。
|
String |
toString()
返回一个
String 表示此
Object 价值。
|
void |
transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
用这个变换变换一个双精度坐标的数组。
|
void |
transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
通过这种变换变换一个双精度坐标的数组,并将结果存储到一个浮动的数组中。
|
void |
transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
通过将一个浮点坐标数组转换成一个数组,并将结果存储到一个数组中的一个数组中。
|
void |
transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
用这个变换变换一个浮点坐标的数组。
|
void |
transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)
用这个变换变换一个点对象的数组。
|
Point2D |
transform(Point2D ptSrc, Point2D ptDst)
将指定的
ptSrc 和商店在
ptDst 结果。
|
void |
translate(double tx, double ty)
将此变换与平移变换。
|
public static final int TYPE_IDENTITY
public static final int TYPE_TRANSLATION
public static final int TYPE_UNIFORM_SCALE
public static final int TYPE_GENERAL_SCALE
public static final int TYPE_MASK_SCALE
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
Constant Field Values
public static final int TYPE_FLIP
public static final int TYPE_QUADRANT_ROTATION
public static final int TYPE_GENERAL_ROTATION
public static final int TYPE_MASK_ROTATION
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
Constant Field Values
public static final int TYPE_GENERAL_TRANSFORM
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。
m00
- X坐标缩放的3x3的矩阵元
m10
- Y坐标剪切的3x3的矩阵元
m01
- x坐标剪切的3x3的矩阵元
m11
- Y坐标缩放的3x3的矩阵元
m02
- X坐标转换元件的3x3矩阵
m12
- Y坐标转换元件的3x3矩阵
public AffineTransform(float[] flatmatrix)
AffineTransform
指定。该值从数组{ 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。
m00
- X坐标缩放的3x3的矩阵元
m10
- Y坐标剪切的3x3的矩阵元
m01
- x坐标剪切的3x3的矩阵元
m11
- Y坐标缩放的3x3的矩阵元
m02
- X坐标转换元件的3x3矩阵
m12
- Y坐标转换元件的3x3矩阵
public AffineTransform(double[] flatmatrix)
AffineTransform
指定数组。该值从数组{ 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度["0 1 0"]
tx
-距离坐标转换在X轴方向
ty
-距离坐标转化在Y轴方向
AffineTransform
表示平移变换,用指定的向量生成。
public static AffineTransform getRotateInstance(double theta)
【cos(θ)罪(θ)0 ]【sin(θ)cos(θ)0 ]["0 1 0"]旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
AffineTransform
对象与指定旋转角度创建。
public static AffineTransform getRotateInstance(double theta, double anchorx, double anchory)
此操作相当于下面的调用序列:
Tx =新affinetransform()点;Tx.translate(anchorx,anchory);// S3:最后的翻译tx.rotate(θ);// S2:绕锚Tx.translate(- anchorx,- anchory);// S1:把锚的起源矩阵表示返回的变换:
【cos(θ)罪(θ)X-X×COS + Y *罪]【sin(θ)cos(θ)* *因为] sin-y Y-X["0 1 0"]旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
AffineTransform
对象旋转坐标在指定点指定旋转角度。
public static AffineTransform getRotateInstance(double vecx, double vecy)
vecx
和
vecy
0,身份转换返回。这个操作是相当于调用:
点。getrotateinstance(数学。但(极其,vecx));
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
AffineTransform
对象旋转坐标根据指定的旋转矢量。
public static AffineTransform getRotateInstance(double vecx, double vecy, double anchorx, double anchory)
vecx
和
vecy
0,身份转换返回。这个操作是相当于调用:
点。getrotateinstance(数学。但(极其,vecx),anchorx,anchory);
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
AffineTransform
对象旋转坐标在指定点按指定的旋转矢量。
public static AffineTransform getQuadrantRotateInstance(int numquadrants)
点。getrotateinstance(numquadrants * math.pi / 2);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
AffineTransform
对象旋转坐标指定数目的象限。
public static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
点。getrotateinstance(numquadrants * math.pi / 2,anchorx,anchory);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
AffineTransform
对象旋转坐标指定数在指定点的象限。
public static AffineTransform getScaleInstance(double sx, double sy)
[ 0 ] SX 0[ 0,0 ]系统["0 1 0"]
sx
-因子的坐标缩放沿X轴方向
sy
-因子的坐标缩放沿Y轴方向
AffineTransform
对象尺度坐标指定的因素。
public static AffineTransform getShearInstance(double shx, double shy)
[ 1,0 ] SHX[害羞0 1 ]["0 1 0"]
shx
-乘数的坐标在X轴的正方向移动的Y因子协调
shy
-乘数的坐标移在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()
如果行列式非零,那么这种变换是可逆的,各种各样的方法,依靠反变换不需要把NoninvertibleTransformException
。如果行列式为零则该变换不可倒置自变换Map输入坐标系上的线或点。如果行列式是接近足够的零,然后逆变换操作可能无法进行足够的精度,以产生有意义的结果。
如果这是一个统一的尺度变换,那时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)
[ 1 ] 0 TX[ 0 ] 1度["0 1 0"]
AffineTransform
tx
-距离坐标转换在X轴方向
ty
-距离坐标转化在Y轴方向
public void rotate(double theta)
AffineTransform
用下面的矩阵表示:
【cos(θ)罪(θ)0 ]【sin(θ)cos(θ)0 ]["0 1 0"]旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
public void rotate(double theta, double anchorx, double anchory)
此操作相当于下面的调用序列:
翻译(anchorx,anchory);// S3:最后的翻译旋转(θ);// S2:绕锚翻译(- anchorx,- anchory);// S1:把锚的起源旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void rotate(double vecx, double vecy)
vecx
和
vecy
是0,没有额外的旋转被添加到这个变换。这个操作是相当于调用:
旋转(数学。但(极其,vecx));
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
public void rotate(double vecx, double vecy, double anchorx, double anchory)
vecx
和
vecy
0,变换是不以任何方式修改。这种方法相当于调用:
旋转(数学。但(极其,vecx),anchorx,anchory);
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void quadrantRotate(int numquadrants)
旋转(numquadrants * math.pi / 2);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
public void quadrantRotate(int numquadrants, double anchorx, double anchory)
旋转(numquadrants * math.pi / 2,anchorx,anchory);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void scale(double sx, double sy)
[ 0 ] SX 0[ 0,0 ]系统["0 1 0"]
AffineTransform
sx
-因子的坐标缩放沿X轴方向
sy
-因子的坐标缩放沿Y轴方向
public void shear(double shx, double shy)
AffineTransform
:
[ 1,0 ] SHX[害羞0 1 ]["0 1 0"]
shx
-乘数的坐标在X轴的正方向移动的Y因子协调
shy
-乘数的坐标移在Y轴方向为X坐标的一个因素
public void setToIdentity()
public void setToTranslation(double tx, double ty)
[ 1 ] 0 TX[ 0 ] 1度["0 1 0"]
tx
-距离坐标转换在X轴方向
ty
-距离坐标转化在Y轴方向
public void setToRotation(double theta)
【cos(θ)罪(θ)0 ]【sin(θ)cos(θ)0 ]["0 1 0"]旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
public void setToRotation(double theta, double anchorx, double anchory)
此操作相当于下面的调用序列:
settotranslation(anchorx,anchory);// S3:最后的翻译旋转(θ);// S2:绕锚翻译(- anchorx,- anchory);// S1:把锚的起源矩阵表示此变换成为:
【cos(θ)罪(θ)X-X×COS + Y *罪]【sin(θ)cos(θ)* *因为] sin-y Y-X["0 1 0"]旋转的正角度θ的X轴Y轴旋转朝着积极点。注意上面的讨论 Handling 90-Degree Rotations。
theta
-弧度的旋转角度的测量
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void setToRotation(double vecx, double vecy)
vecx
和
vecy
0,变换将一个身份变换。这个操作是相当于调用:
settorotation(数学。但(极其,vecx));
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
public void setToRotation(double vecx, double vecy, double anchorx, double anchory)
vecx
和
vecy
0,变换将一个身份变换。这个操作是相当于调用:
settotranslation(数学。但(极其,vecx),anchorx,anchory);
vecx
-旋转矢量的x坐标
vecy
-旋转矢量坐标
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void setToQuadrantRotation(int numquadrants)
settorotation(numquadrants * math.pi / 2);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
public void setToQuadrantRotation(int numquadrants, double anchorx, double anchory)
settorotation(numquadrants * math.pi / 2,anchorx,anchory);旋转的正数的象限的X轴Y轴旋转朝着积极点。
numquadrants
- 90度弧数转动
anchorx
-旋转点的X坐标
anchory
-旋转点的Y坐标
public void setToScale(double sx, double sy)
[ 0 ] SX 0[ 0,0 ]系统["0 1 0"]
sx
-因子的坐标缩放沿X轴方向
sy
-因子的坐标缩放沿Y轴方向
public void setToShear(double shx, double shy)
[ 1,0 ] SHX[害羞0 1 ]["0 1 0"]
shx
-乘数的坐标在X轴的正方向移动的Y因子协调
shy
-乘数的坐标移在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 ]那么这方法如下:
[这] = [这]×[发送]
Tx
-要与此
AffineTransform
对象级联的
AffineTransform
对象。
preConcatenate(java.awt.geom.AffineTransform)
public void preConcatenate(AffineTransform Tx)
AffineTransform
CX一个
AffineTransform
Tx
在一个不太常用的方式,
Tx
修改坐标变换相对于绝对像素空间而不是相对于现有的用户空间。CX更新进行组合变换。将点P的更新变换CX”相当于第一转换P变换CX和转化的结果
Tx
这样原文:CX”(P)= TX(CX(P))在矩阵表示,如果这个变换CX由矩阵[这]和
Tx
由矩阵[ TX ]那么这方法如下:
[这] = [发送]×[这]
Tx
-要与此
AffineTransform
对象级联的
AffineTransform
对象。
concatenate(java.awt.geom.AffineTransform)
public AffineTransform createInverse() throws NoninvertibleTransformException
AffineTransform
表示反变换。反变换TX的这个变换TXMap坐标转换由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
转化的结果
ptSrc
和
ptDst
存储结果的
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)] [×] [ m00x + m01y ][你] = [ M10 M11(M12)] [ ] = [ 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)] [×] [ m00x + m01y ][你] = [ M10 M11(M12)] [ ] = [ 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
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
true
如果这
AffineTransform
代表相同的仿射坐标变换为指定参数。
equals
方法重写,继承类
Object
obj
-
Object
为这
AffineTransform
相等测试
true
如果
obj
等于这
AffineTransform
对象;
false
否则。
Object.hashCode()
,
HashMap
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.