affinetransform java_AffineTransform

本文详细介绍Java中的AffineTransform类,涵盖了平移、旋转、缩放、剪切等变换操作的方法,以及如何创建、组合和逆变换Affine Tranform。理解这些方法有助于开发者在图形处理、游戏开发等场景中高效地进行坐标变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法详细信息

getTranslateInstance public static AffineTransform getTranslateInstance​(double tx,

double ty)

返回表示转换转换的转换。

表示返回变换的矩阵是:

[ 1 0 tx ]

[ 0 1 ty ]

[ 0 0 1 ]

参数

tx - 坐标沿X轴方向平移的距离

ty - 坐标在Y轴方向上平移的距离

结果

一个

AffineTransform对象,表示使用指定向量创建的转换转换。

从以下版本开始:

1.2

getRotateInstance public static AffineTransform getRotateInstance​(double theta)

返回表示旋转变换的变换。

表示返回变换的矩阵是:

[ cos(theta) -sin(theta) 0 ]

[ sin(theta) cos(theta) 0 ]

[ 0 0 1 ]

通过正角度θ旋转使正X轴上的点朝向正Y轴旋转。

参数

theta - 以弧度为单位测量的旋转角度

结果

一个

AffineTransform对象,它是一个旋转变换,使用指定的旋转角度创建。

从以下版本开始:

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轴旋转。

参数

theta - 以弧度为单位测量的旋转角度

anchorx - 旋转锚点的X坐标

anchory - 旋转锚点的Y坐标

结果

一个

AffineTransform对象,它按指定的旋转角度旋转指定点周围的坐标。

从以下版本开始:

1.2

getRotateInstance public static AffineTransform getRotateInstance​(double vecx,

double vecy)

返回根据旋转矢量旋转坐标的变换。

所有坐标围绕原点旋转相同的量。

旋转量使得沿着前正X轴的坐标随后将与从原点指向指定矢量坐标的矢量对齐。

如果vecx和vecy均为0.0,则返回标识转换。

此操作相当于调用:

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

参数

vecx - 旋转矢量的X坐标

vecy - 旋转矢量的Y坐标

结果

一个

AffineTransform对象,它根据指定的旋转向量旋转坐标。

从以下版本开始:

1.6

getRotateInstance public static AffineTransform getRotateInstance​(double vecx,

double vecy,

double anchorx,

double anchory)

返回根据旋转矢量旋转锚点周围坐标的变换。

所有坐标围绕指定的锚点坐标旋转相同的量。

旋转量使得沿着前正X轴的坐标随后将与从原点指向指定矢量坐标的矢量对齐。

如果vecx和vecy均为0.0,则返回标识转换。

此操作相当于调用:

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

anchorx, anchory);

参数

vecx - 旋转矢量的X坐标

vecy - 旋转矢量的Y坐标

anchorx - 旋转锚点的X坐标

anchory - 旋转锚点的Y坐标

结果

一个

AffineTransform对象,它根据指定的旋转向量旋转指定点周围的坐标。

从以下版本开始:

1.6

getQuadrantRotateInstance public static AffineTransform getQuadrantRotateInstance​(int numquadrants)

返回按指定象限数旋转坐标的变换。

此操作相当于调用:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);

通过正数量的象限旋转使正X轴上的点朝向正Y轴旋转。

参数

numquadrants - 要旋转的90度弧的数量

结果

一个

AffineTransform对象,它按指定的象限数旋转坐标。

从以下版本开始:

1.6

getQuadrantRotateInstance public static AffineTransform getQuadrantRotateInstance​(int numquadrants,

double anchorx,

double anchory)

返回一个变换,该变换按指定锚点周围的指定象限数旋转坐标。

此操作相当于调用:

AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0,

anchorx, anchory);

通过正数量的象限旋转使正X轴上的点朝向正Y轴旋转。

参数

numquadrants - 要旋转的90度弧的数量

anchorx - 旋转锚点的X坐标

anchory - 旋转锚点的Y坐标

结果

一个

AffineTransform对象,它按指定锚点周围指定数量的象限旋转坐标。

从以下版本开始:

1.6

getScaleInstance public static AffineTransform getScaleInstance​(double sx,

double sy)

返回表示缩放变换的变换。

表示返回变换的矩阵是:

[ sx 0 0 ]

[ 0 sy 0 ]

[ 0 0 1 ]

参数

sx - 坐标沿X轴方向缩放的因子

sy - 坐标沿Y轴方向缩放的因子

结果

一个

AffineTransform对象,按指定因子缩放坐标。

从以下版本开始:

1.2

getShearInstance public static AffineTransform getShearInstance​(double shx,

double shy)

返回表示剪切变换的变换。

表示返回变换的矩阵是:

[ 1 shx 0 ]

[ shy 1 0 ]

[ 0 0 1 ]

参数

shx - 坐标在正X轴方向上移动的乘数,作为其Y坐标的因子

shy - 坐标在正Y轴方向上移动的乘数,作为其X坐标的因子

结果

一个

AffineTransform对象,用指定的乘数剪切坐标。

从以下版本开始:

1.2

getType public int getType()

检索描述此转换的转换属性的标志位。

返回值是常量TYPE_IDENTITY或TYPE_GENERAL_TRANSFORM之一,或者是适当标志位的组合。

标志位的有效组合是异或运算,除了TYPE_UNIFORM_SCALE或TYPE_GENERAL_SCALE标志位以及TYPE_QUADRANT_ROTATION或TYPE_GENERAL_ROTATION标志位之外,还可以组合TYPE_TRANSLATION标志位。

getDeterminant public double getDeterminant()

返回变换的矩阵表示的行列式。

行列式对于确定是否可以反转变换以及获得表示变换的组合X和Y缩放的单个值都是有用的。

如果行列式不为零,则该变换是可逆的,并且依赖于逆变换的各种方法不需要抛出NoninvertibleTransformException 。 如果行列式为零,则该变换不能被反转,因为变换将所有输入坐标映射到线或点上。 如果行列式接近于零,则逆变换操作可能不具有足够的精度来产生有意义的结果。

如果该变换表示均匀比例,如getType方法所示,那么行列式也表示均匀比例因子的平方,通过该均方比例因子所有点从原点扩展或收缩。 如果该变换表示非均匀缩放或更一般的变换,则行列式不可能表示对于除了确定逆变换是否可能之外的任何目的有用的值。

在数学上,行列式使用以下公式计算:

| m00 m01 m02 |

| m10 m11 m12 | = m00 * m11 - m01 * m10

| 0 0 1 |

getMatrix public void getMatrix​(double[] flatmatrix)

检索3x3仿射变换矩阵中的6个可指定值,并将它们放入双精度值数组中。

这些值存储在数组中{m00 m10 m01 m11 m02 m12}。

也可以指定4个双精度数组,在这种情况下,只检索表示数组非变换部分的前四个元素,并将值存储到数组中{m00 m10 m01 m11}

getScaleX public double getScaleX()

返回3x3仿射变换矩阵的m00元素。

此矩阵因子确定输入X坐标将如何影响输出X坐标,并且是变换比例的一个元素。

要测量此变换拉伸或收缩X坐标的全部量,请使用以下代码:

Point2D p = new Point2D.Double(1, 0);

p = tx.deltaTransform(p, p);

double scaleX = p.distance(0, 0);

结果

m00值是3x3仿射变换矩阵的

m00元素。

从以下版本开始:

1.2

另请参见:

getScaleY public double getScaleY()

返回3x3仿射变换矩阵的m11元素。

此矩阵因子确定输入Y坐标将如何影响输出Y坐标,并且是变换比例的一个元素。

要测量此变换拉伸或收缩Y坐标的全部量,请使用以下代码:

Point2D p = new Point2D.Double(0, 1);

p = tx.deltaTransform(p, p);

double scaleY = p.distance(0, 0);

结果

m11值是3x3仿射变换矩阵的

m11元素。

从以下版本开始:

1.2

另请参见:

getShearX public double getShearX()

返回3x3仿射变换矩阵的X坐标剪切元素(m01)。

结果

一个double值,它是仿射变换矩阵的剪切元素的X坐标。

从以下版本开始:

1.2

另请参见:

getShearY public double getShearY()

返回3x3仿射变换矩阵的Y坐标剪切元素(m10)。

结果

一个double值,它是仿射变换矩阵的剪切元素的Y坐标。

从以下版本开始:

1.2

另请参见:

getTranslateX public double getTranslateX()

返回3x3仿射变换矩阵的平移元素(m02)的X坐标。

结果

double值,它是仿射变换矩阵的平移元素的X坐标。

从以下版本开始:

1.2

另请参见:

getTranslateY public double getTranslateY()

返回3x3仿射变换矩阵的平移元素(m12)的Y坐标。

结果

double值,它是仿射变换矩阵的平移元素的Y坐标。

从以下版本开始:

1.2

另请参见:

translate public void translate​(double tx,

double ty)

将此转换与转换转换连接在一起。

这相当于调用concatenate(T),其中T是由以下矩阵表示的AffineTransform :

[ 1 0 tx ]

[ 0 1 ty ]

[ 0 0 1 ]

参数

tx - 坐标沿X轴方向平移的距离

ty - 坐标在Y轴方向上平移的距离

从以下版本开始:

1.2

rotate public void rotate​(double theta)

将此变换与旋转变换连接在一起。

这相当于调用concatenate(R),其中R是由以下矩阵表示的AffineTransform :

[ cos(theta) -sin(theta) 0 ]

[ sin(theta) cos(theta) 0 ]

[ 0 0 1 ]

通过正角度θ旋转使正X轴上的点朝向正Y轴旋转。

参数

theta - 以弧度为单位测量的旋转角度

从以下版本开始:

1.2

rotate public void rotate​(double theta,

double anchorx,

double anchory)

将此变换与围绕锚点旋转坐标的变换连接。

此操作等效于平移坐标以使锚点位于原点(S1),然后围绕新原点旋转它们(S2),最后进行平移以使中间原点恢复到原始锚点的坐标(S3)。

此操作等效于以下调用序列:

translate(anchorx, anchory); // S3: final translation

rotate(theta); // S2: rotate around anchor

translate(-anchorx, -anchory); // S1: translate anchor to origin

通过正角度θ旋转使正X轴上的点朝向正Y轴旋转。

参数

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()

将此变换重置为Identity变换。

从以下版本开始:

1.2

setToTranslation public void setToTranslation​(double tx,

double ty)

将此变换设置为平移变换。

表示此变换的矩阵变为:

[ 1 0 tx ]

[ 0 1 ty ]

[ 0 0 1 ]

参数

tx - 坐标在X轴方向上平移的距离

ty - 坐标在Y轴方向上平移的距离

从以下版本开始:

1.2

setToRotation public void setToRotation​(double theta)

将此变换设置为旋转变换。

表示此变换的矩阵变为:

[ cos(theta) -sin(theta) 0 ]

[ sin(theta) cos(theta) 0 ]

[ 0 0 1 ]

通过正角度θ旋转使正X轴上的点朝向正Y轴旋转。

参数

theta - 以弧度为单位测量的旋转角度

从以下版本开始:

1.2

setToRotation public void setToRotation​(double theta,

double anchorx,

double anchory)

将此变换设置为已转换的旋转变换。

此操作等效于平移坐标以使锚点位于原点(S1),然后围绕新原点旋转它们(S2),最后进行平移以使中间原点恢复到原始锚点的坐标(S3)。

此操作等效于以下调用序列:

setToTranslation(anchorx, anchory); // S3: final translation

rotate(theta); // S2: rotate around anchor

translate(-anchorx, -anchory); // S1: translate anchor to origin

表示此变换的矩阵变为:

[ cos(theta) -sin(theta) x-x*cos+y*sin ]

[ sin(theta) cos(theta) y-x*sin-y*cos ]

[ 0 0 1 ]

通过正角度θ旋转使正X轴上的点朝向正Y轴旋转。

参数

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 - 3x3矩阵的X坐标缩放元素

m10 - 3x3矩阵的Y坐标剪切元素

m01 - 3x3矩阵的X坐标剪切元素

m11 - 3x3矩阵的Y坐标缩放元素

m02 - 3x3矩阵的X坐标平移元素

m12 - 3x3矩阵的Y坐标平移元素

从以下版本开始:

1.2

concatenate public void concatenate​(AffineTransform Tx)

以最常用的方式将AffineTransform Tx连接到此AffineTransform Cx,以提供由Tx映射到以前用户空间的新用户空间。

更新Cx以执行组合转换。

通过更新的变换Cx'变换点p相当于首先将p变换Tx ,然后将结果变换为原始变换Cx,如下所示:Cx'(p)= Cx(Tx(p))在矩阵表示法中,如果这样变换Cx由矩阵[this]表示, Tx由矩阵[Tx]表示,然后此方法执行以下操作:

[this] = [this] x [Tx]

参数

Tx -将

AffineTransform对象与此串接

AffineTransform对象。

从以下版本开始:

1.2

另请参见:

preConcatenate public void preConcatenate​(AffineTransform Tx)

串接的AffineTransform Tx本AffineTransform CX在一个不常用的方式,使得Tx坐标变换相对于绝对像素空间而不是相对于现有的用户空间修改。

更新Cx以执行组合转换。

通过更新的变换Cx'变换点p相当于首先用原始变换Cx变换p,然后将结果变换为Tx如下所示:Cx'(p)= Tx(Cx(p))在矩阵表示法中,如果这样变换Cx由矩阵[this]表示, Tx由矩阵[Tx]表示,然后此方法执行以下操作:

[this] = [Tx] x [this]

参数

Tx -将

AffineTransform对象与此串接

AffineTransform对象。

从以下版本开始:

1.2

另请参见:

createInverse public AffineTransform createInverse()

throws NoninvertibleTransformException

返回表示逆变换的AffineTransform对象。

该变换Tx的逆变换Tx'将由Tx变换的坐标映射回其原始坐标。

换句话说,Tx'(Tx(p))= p = Tx(Tx'(p))。

如果此变换将所有坐标映射到点或线上,则它将不具有逆,因为不在目标点或线上的坐标将不具有逆映射。 getDeterminant方法可用于确定此转换是否没有反转,在这种情况下,如果调用createInverse方法,则会引发异常。

结果

表示逆变换的新

AffineTransform对象。

异常

从以下版本开始:

1.2

另请参见:

invert public void invert()

throws NoninvertibleTransformException

将此变换设置为自身的反转。

该变换Tx的逆变换Tx'将由Tx变换的坐标映射回其原始坐标。

换句话说,Tx'(Tx(p))= p = Tx(Tx'(p))。

如果此变换将所有坐标映射到点或线上,则它将不具有逆,因为不在目标点或线上的坐标将不具有逆映射。 getDeterminant方法可用于确定此转换是否没有反转,在这种情况下,如果调用invert方法,则会引发异常。

transform public Point2D transform​(Point2D ptSrc,

Point2D ptDst)

转换指定的ptSrc并将结果存储在ptDst 。

如果ptDst是null ,则分配新的Point2D对象,然后将转换的结果存储在此对象中。

在任何一种情况下,为方便起见,返回包含转换点的ptDst 。

如果ptSrc和ptDst是同一个对象,则使用转换后的点正确覆盖输入点。

参数

ptSrc - 要转换的指定

Point2D

ptDst - 存储转换结果的指定

Point2D

ptSrc

结果

转换

ptSrc并将结果存储在

ptDst之后的

ptDst 。

从以下版本开始:

1.2

transform public void transform​(Point2D[] ptSrc,

int srcOff,

Point2D[] ptDst,

int dstOff,

int numPts)

通过此变换转换点对象数组。

如果ptDst数组的任何元素为null , Point2D在存储转换结果之前分配新的Point2D对象并将其存储到该元素中。

请注意,此方法不会采取任何预防措施来避免将结果存储到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 ,其中包含逆变换的结果。

异常

从以下版本开始:

1.2

inverseTransform public void inverseTransform​(double[] srcPts,

int srcOff,

double[] dstPts,

int dstOff,

int numPts)

throws NoninvertibleTransformException

Inverse通过此变换转换双精度坐标数组。

两个坐标数组部分可以完全相同,也可以是相同数组的重叠部分,而不会影响结果的有效性。

此方法可确保在转换之前,之前的操作不会覆盖任何源坐标。

坐标存储在数组中,从指定的偏移量开始,顺序为[x0, y0, x1, y1, ..., xn, yn] 。

参数

srcPts - 包含源点坐标的数组。

每个点都存储为一对x,y坐标。

dstPts - 返回变换点坐标的数组。

每个点都存储为一对x,y坐标。

srcOff - 要在源数组中转换的第一个点的偏移量

dstOff - 存储在目标数组中的第一个转换点的位置的偏移量

numPts - 要转换的点对象的数量

异常

从以下版本开始:

1.2

deltaTransform public Point2D deltaTransform​(Point2D ptSrc,

Point2D ptDst)

变换由ptSrc指定的相对距离向量, 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 - 要进行delta变换的距离矢量

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的几何,如果

pSrc为null,则为null。

从以下版本开始:

1.2

toString public String toString()

返回String ,表示此Object的值。

重写:

结果

a

String表示这个

Object的值。

从以下版本开始:

1.2

isIdentity public boolean isIdentity()

如果此

AffineTransform是标识转换,则返回

true 。

结果

true AffineTransform是身份转换;

否则为false 。

从以下版本开始:

1.2

clone public Object clone()

返回此

AffineTransform对象的副本。

重写:

结果

Object是此

AffineTransform对象的副本。

从以下版本开始:

1.2

另请参见:

equals public boolean equals​(Object obj)

如果此

AffineTransform表示与指定参数相同的仿射坐标变换,则返回

true 。

重写:

参数

obj -将

Object要测试其相等与此

AffineTransform

结果

true如果obj于此AffineTransform对象;

否则为false 。

从以下版本开始:

1.2

另请参见:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值