JavaTM 2 Platform
Std. Ed. v1.3

java.awt.geom
クラス AffineTransform

java.lang.Object
  |
  +--java.awt.geom.AffineTransform
すべての実装インタフェース:
Cloneable, Serializable

public class AffineTransform
extends Object
implements Cloneable, Serializable

AffineTransform クラスは、線の直線性と平行性を保ったままで 2 次元座標間の線形マッピングを実行する 2 次元アフィン変換を表現します。アフィン変換は、一連の平行移動、スケーリング、反転、回転、変形により構成されます。

このような座標変換は、暗黙に指定された [ 0 0 1 ] という最終行を持つ 3 行× 3 列の行列によって表現できます。この行列は、次の処理に従って、座標を列ベクトルと見なし、座標ベクトルを行列で乗算することによって、転送元座標 (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         ]

関連項目:
直列化された形式

フィールドの概要
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
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、1 つの移動を実行することを示します。
static int TYPE_UNIFORM_SCALE
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、一様なスケーリングを実行することを示します。
 
コンストラクタの概要
AffineTransform()
          恒等変換を表現する新しい AffineTransform を構築します。
AffineTransform(AffineTransform Tx)
          指定された AffineTransform オブジェクトのコピーである、新しい AffineTransform を構築します。
AffineTransform(double[] flatmatrix)
          3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する倍精度値の配列から、新しい AffineTransform を構築します。
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
          3×3 変換行列の 6 つの指定可能エントリを表現する 6 つの倍精度値から、新しい AffineTransform を構築します。
AffineTransform(float[] flatmatrix)
          3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する浮動小数点値の配列から、新しい AffineTransform を構築します。
AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
          3×3 変換行列の 6 つの指定可能エントリを表現する 6 つの浮動小数点値から、新しい AffineTransform を構築します。
 
メソッドの概要
 Object clone()
          この AffineTransform オブジェクトのコピーを返します。
 void concatenate(AffineTransform Tx)
          Tx によって元のユーザ空間にマップされた新しいユーザ空間を提供するためにもっとも一般的に使用される方法で、AffineTransform Tx をこの AffineTransform Cx に連結します。
 AffineTransform createInverse()
          逆変換を表現する AffineTransform オブジェクトを返します。
 Shape createTransformedShape(Shape pSrc)
          指定された Shape をこの変換によって変換し、その 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)
          この AffineTransform が、指定された引数と同じアフィン座標変換を表現する場合に true を返します。
 double getDeterminant()
          変換の行列表現の行列式を返します。
 void getMatrix(double[] flatmatrix)
          3×3 アフィン変換行列内の 6 つの指定可能な値を取り出し、倍精度値の配列に配置します。
static AffineTransform getRotateInstance(double theta)
          回転変換を表現する変換を返します。
static AffineTransform getRotateInstance(double theta, double x, double y)
          アンカーポイントを中心にして座標を回転させる変換を返します。
static AffineTransform getScaleInstance(double sx, double sy)
          スケーリング変換を表現する変換を返します。
 double getScaleX()
          3×3 アフィン変換行列の X 座標スケーリング要素 (m00) を返します。
 double getScaleY()
          3×3 アフィン変換行列の Y 座標スケーリング要素 (m11) を返します。
static AffineTransform getShearInstance(double shx, double shy)
          シャーリング変換を表現する変換を返します。
 double getShearX()
          3×3 アフィン変換行列の X 座標シャーリング要素 (m01) を返します。
 double getShearY()
          3×3 アフィン変換行列の Y 座標シャーリング要素 (m10) を返します。
static AffineTransform getTranslateInstance(double tx, double ty)
          平行移動変換を表現する変換を返します。
 double getTranslateX()
          3×3 アフィン変換行列の平行移動要素 (m02) の X 座標を返します。
 double getTranslateY()
          3×3 アフィン変換行列の平行移動要素 (m12) の Y 座標を返します。
 int getType()
          この変換の変換プロパティを記述するフラグビットを返します。
 int hashCode()
          この変換のハッシュコードを返します。
 void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          この変換によって倍精度の座標の配列を逆変換します。
 Point2D inverseTransform(Point2D ptSrc, Point2D ptDst)
          指定された ptSrc を逆変換して、その結果を ptDst に格納します。
 boolean isIdentity()
          この AffineTransform が恒等変換である場合に true を返します。
 void preConcatenate(AffineTransform Tx)
          Tx が既存のユーザ空間ではなく絶対ピクセル空間を基準にして座標変換を変更するなど一般にはあまり使用されない方法で、AffineTransform Tx をこの AffineTransform Cx に連結します。
 void rotate(double theta)
          この変換を回転変換に連結します。
 void rotate(double theta, double x, double y)
          この変換を、アンカーポイントを中心にして座標を回転する変換と連結します。
 void scale(double sx, double sy)
          この変換をスケーリング変換に連結します。
 void setToIdentity()
          この変換を恒等変換に設定し直します。
 void setToRotation(double theta)
          この変換を回転変換に設定します。
 void setToRotation(double theta, double x, double y)
          この変換を平行移動後の回転変換に設定します。
 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()
          この Object の値を表現する String を返します。
 void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          この変換によって、倍精度の座標の配列を変換します。
 void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
          この変換によって倍精度の座標の配列を変換し、結果を float 値の配列に格納します。
 void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          この変換によって浮動小数点の座標の配列を変換し、結果を double 値の配列に格納します。
 void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
          この変換によって、浮動小数点の座標の配列を変換します。
 void transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)
          この変換によってポイントオブジェクトの配列を変換します。
 Point2D transform(Point2D ptSrc, Point2D ptDst)
          指定された ptSrc を変換して、その結果を ptDst に格納します。
 void translate(double tx, double ty)
          この変換を平行移動変換に連結します。
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

TYPE_IDENTITY

public static final int TYPE_IDENTITY
この定数は、このオブジェクトによって定義される変換が恒等変換であることを示します。恒等変換では、出力座標が常に入力座標と同じになります。この変換が恒等変換ではない場合、タイプは定数 GENERAL_TRANSFORM か、この変換が実行するさまざまな座標変換のための適切なフラグビットの組み合わせのどちらかになります。
関連項目:
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
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、1 つの移動を実行することを示します。移動では、ベクトルの長さや角度を変えずに座標を x 方向と y 方向に一定量だけ移動します。
関連項目:
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
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、一様なスケーリングを実行することを示します。一律的なスケーリングでは、ベクトル間の角度を変えずにベクトルの長さを x 方向と y 方向のどちらにも一定量だけ乗算します。このフラグビットは、TYPE_GENERAL_SCALE フラグと相互に排他的です。
関連項目:
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
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、汎用的なスケーリングを実行することを示します。汎用的なスケーリングでは、垂直なベクトル間の角度を変えずにベクトルの長さを x 方向と y 方向に別々の量だけ乗算します。このフラグビットは、TYPE_UNIFORM_SCALE フラグと相互に排他的です。
関連項目:
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
この定数は、スケールフラグビットのどれかのビットマスクです。
関連項目:
TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE

TYPE_FLIP

public static final int TYPE_FLIP
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、ある軸を中心とする鏡像反転を実行することを示します。鏡像反転により、通常は右手の座標系が左手の座標系に変更されます。右手の座標系は、右手の親指の先端を見つめている状態で親指以外の指を曲げるのと同じ方向に、正の X 軸が反時計方向に回転して正の Y 軸に重なるものです。左手の座標系は、左手の親指以外を曲げるのと同じ方向に、正の X 軸が時計方向に回転して正の Y 軸に重なるものです。適切な調整回転を指定すると回転の角度はすべて同じになるので、元の反転またはミラー変換の角度を判定する算術的方法はありません。
関連項目:
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 フラグと相互に排他的です。
関連項目:
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 フラグと相互に排他的です。
関連項目:
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
この定数は、回転フラグビットのどれかのビットマスクです。
関連項目:
TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM
この定数は、このオブジェクトによって定義される変換が、入力座標の任意の変換を実行することを示します。この変換を上記の定数のどれかに分類される場合、タイプは定数 TYPE_IDENTITY か、この変換が実行するさまざまな座標変換のための適切なフラグビットの組み合わせのどちらかになります。
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, getType()
コンストラクタの詳細

AffineTransform

public AffineTransform()
恒等変換を表現する新しい AffineTransform を構築します。

AffineTransform

public AffineTransform(AffineTransform Tx)
指定された AffineTransform オブジェクトのコピーである、新しい AffineTransform を構築します。
パラメータ:
Tx - コピーする AffineTransform オブジェクト

AffineTransform

public AffineTransform(float m00,
                       float m10,
                       float m01,
                       float m11,
                       float m02,
                       float m12)
3×3 変換行列の 6 つの指定可能エントリを表現する 6 つの浮動小数点値から、新しい AffineTransform を構築します。
パラメータ:
m00, m01, m02, m10, m11, m12 - 3x3 変換行列を構成する 6 つの浮動小数点値

AffineTransform

public AffineTransform(float[] flatmatrix)
3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する浮動小数点値の配列から、新しい AffineTransform を構築します。各値は、配列から { m00 m10 m01 m11 [m02 m12]} という形式で取り出されます。
パラメータ:
flatmatrix - 新しい AffineTransform オブジェクトに設定される各値を格納している float 値の配列。配列の長さは、4 以上であることが前提。配列の長さが 6 より小さい場合、最初の 4 つの値だけが取得される。配列の長さが 6 より大きい場合、最初の 6 つの値が取得される

AffineTransform

public AffineTransform(double m00,
                       double m10,
                       double m01,
                       double m11,
                       double m02,
                       double m12)
3×3 変換行列の 6 つの指定可能エントリを表現する 6 つの倍精度値から、新しい AffineTransform を構築します。
パラメータ:
m00, m01, m02, m10, m11, m12 - 3x3 変換行列を構成する 6 つの浮動小数点値

AffineTransform

public AffineTransform(double[] flatmatrix)
3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する倍精度値の配列から、新しい AffineTransform を構築します。各値は、配列から { m00 m10 m01 m11 [m02 m12]} という形式で取り出されます。
パラメータ:
flatmatrix - 新しい AffineTransform オブジェクトに設定される各値を格納している double 値の配列。配列の長さは、4 以上であることが前提。配列の長さが 6 より小さい場合、最初の 4 つの値だけが取得される。配列の長さが 6 より大きい場合、最初の 6 つの値が取得される
メソッドの詳細

getTranslateInstance

public static AffineTransform getTranslateInstance(double tx,
                                                   double ty)
平行移動変換を表現する変換を返します。返される変換の行列表現は、次のようになります。
		[   1    0    tx  ]
		[   0    1    ty  ]
		[   0    0    1   ]
パラメータ:
tx - 座標が X 軸方向で平行移動される距離
ty - 座標が Y 軸方向で平行移動される距離
戻り値:
指定されたベクトルで作成された、平行移動変換を表す AffineTransform オブジェクト

getRotateInstance

public static AffineTransform getRotateInstance(double theta)
回転変換を表現する変換を返します。返される変換の行列表現は、次のようになります。
		[   cos(theta)    -sin(theta)    0   ]
		[   sin(theta)     cos(theta)    0   ]
		[       0              0         1   ]
正の角度 theta で回転すると、正の x 軸の点が正の y 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度
戻り値:
指定された回転角度で作成された、回転変換を表す AffineTransform オブジェクト

getRotateInstance

public static AffineTransform getRotateInstance(double theta,
                                                double x,
                                                double y)
アンカーポイントを中心にして座標を回転させる変換を返します。このオペレーションは、座標をアンカーポイントが原点 (S1) になるように移動し、これらの座標を新しい原点 (S2) を中心に回転してから、最後にその仲介的な原点を元のアンカーポイント (S3) の座標に戻すために移動することに相当します。

この操作は、次の一連の呼び出しに相当します。

	    AffineTransform Tx = new AffineTransform();
	    Tx.setToTranslation(x, y);	// S3: final translation
	    Tx.rotate(theta);		// S2: rotate around anchor
	    Tx.translate(-x, -y);	// 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 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度
x, y - 回転のアンカーポイントの座標
戻り値:
指定された点を中心として、指定された回転角度で座標を回転する AffineTransform オブジェクト

getScaleInstance

public static AffineTransform getScaleInstance(double sx,
                                               double sy)
スケーリング変換を表現する変換を返します。返される変換の行列表現は、次のようになります。
		[   sx   0    0   ]
		[   0    sy   0   ]
		[   0    0    1   ]
パラメータ:
sx - 座標を X 軸方向にスケーリングするために使う係数
sy - 座標を Y 軸方向にスケーリングするために使う係数
戻り値:
指定された係数で座標をスケーリングする AffineTransform オブジェクト

getShearInstance

public static AffineTransform getShearInstance(double shx,
                                               double shy)
シャーリング変換を表現する変換を返します。返される変換の行列表現は、次のようになります。
		[   1   shx   0   ]
		[  shy   1    0   ]
		[   0    0    1   ]
パラメータ:
shx - Y 座標の係数で座標を正の X 軸の方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の方向に移動するために使う乗数
戻り値:
指定された乗数で座標を変形させる AffineTransform オブジェクト

getType

public int getType()
この変換の変換プロパティを記述するフラグビットを返します。返される値は、定数 TYPE_IDENTITY または TYPE_GENERAL_TRANSFORM のどちらか、あるいは適切なフラグビットの組み合わせになります。フラグビットの有効な組み合わせは、TYPE_UNIFORM_SCALE フラグビットまたは TYPE_GENERAL_SCALE フラグビットのどちらかと、TYPE_QUADRANT_ROTATION フラグビットまたは TYPE_GENERAL_ROTATION フラグビットのどちらかに加えて、TYPE_TRANSLATION フラグビットを結合する排他的論理和の演算です。
戻り値:
この変換に適用される任意の指定フラグによる論理和の組み合わせ
関連項目:
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 のスケーリングの組み合わせによる変換を表現する 1 つの値を取得するためにも使用できます。

行列式がゼロでない場合、この変換には逆変換が存在し、逆変換に依存するさまざまなメソッドは NoninvertibleTransformException をスローする必要がありません。行列式がゼロの場合、この変換はすべての入力座標を線または点にマップするので逆変換できません。行列式が十分にゼロに近い場合、逆変換オペレーションは意味のある結果を出せるだけの精度を確保できない場合があります。

getType メソッドで示されるように、この変換が一様なスケーリングを表現する場合、行列式はすべての点が原点を基準に拡張または縮小される一様なスケーリング係数の 2 乗を表します。この変換が一様でないスケーリングまたはより汎用的な変換を表現する場合、行列式が表す値は、逆変換が可能かどうかを判定するためだけに使用できます。

算術的に、行列式は次の公式で計算されます。

		|  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

getMatrix

public void getMatrix(double[] flatmatrix)
3×3 アフィン変換行列内の 6 つの指定可能な値を取り出し、倍精度値の配列に配置します。各値は配列に { m00 m10 m01 m11 m02 m12 } という形式で格納されます。4 つの double 値の配列も指定できます。その場合は、配列の非平行移動部分を表す最初の 4 つの要素だけが取り出され、値は配列に { m00 m10 m01 m11 } という形式で格納されます。
パラメータ:
flatmatrix - 戻り値を格納するために使用する double 値の配列
関連項目:
getScaleX(), getScaleY(), getShearX(), getShearY(), getTranslateX(), getTranslateY()

getScaleX

public double getScaleX()
3×3 アフィン変換行列の X 座標スケーリング要素 (m00) を返します。
戻り値:
アフィン変換行列のスケーリング要素の X 座標を表す double 値
関連項目:
getMatrix(double[])

getScaleY

public double getScaleY()
3×3 アフィン変換行列の Y 座標スケーリング要素 (m11) を返します。
戻り値:
アフィン変換行列のスケーリング要素の Y 座標を表す double 値
関連項目:
getMatrix(double[])

getShearX

public double getShearX()
3×3 アフィン変換行列の X 座標シャーリング要素 (m01) を返します。
戻り値:
アフィン変換行列のシャーリング要素の X 座標を表す double 値
関連項目:
getMatrix(double[])

getShearY

public double getShearY()
3×3 アフィン変換行列の Y 座標シャーリング要素 (m10) を返します。
戻り値:
アフィン変換行列のシャーリング要素の Y 座標を表す double 値
関連項目:
getMatrix(double[])

getTranslateX

public double getTranslateX()
3×3 アフィン変換行列の平行移動要素 (m02) の X 座標を返します。
戻り値:
アフィン変換行列の平行移動要素の X 座標を表す double 値
関連項目:
getMatrix(double[])

getTranslateY

public double getTranslateY()
3×3 アフィン変換行列の平行移動要素 (m12) の Y 座標を返します。
戻り値:
アフィン変換行列の平行移動要素の Y 座標を表す double 値
関連項目:
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 軸方向で平行移動される距離

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 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度

rotate

public void rotate(double theta,
                   double x,
                   double y)
この変換を、アンカーポイントを中心にして座標を回転する変換と連結します。このオペレーションは、座標をアンカーポイントが原点 (S1) になるように平行移動し、これらの座標を新しい原点 (S2) を中心に回転してから、最後にその仲介的な原点を元のアンカーポイント (S3) の座標に戻すために平行移動することに相当します。

この操作は、次の一連の呼び出しに相当します。

		translate(x, y);	// S3: final translation
		rotate(theta);		// S2: rotate around anchor
		translate(-x, -y);	// S1: translate anchor to origin
正の角度 theta で回転すると、正の x 軸の点が正の y 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度
x, y - 回転のアンカーポイントの座標

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 軸方向にスケーリングするために使う係数

shear

public void shear(double shx,
                  double shy)
この変換をシャーリング変換に連結します。これは、concatenate(SH) を呼び出すことに相当します。ただし、SH は次の行列で表現される AffineTransform です。
		[   1   shx   0   ]
		[  shy   1    0   ]
		[   0    0    1   ]
パラメータ:
shx - Y 座標の係数で座標を正の X 軸の方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の方向に移動するために使う乗数

setToIdentity

public void setToIdentity()
この変換を恒等変換に設定し直します。

setToTranslation

public void setToTranslation(double tx,
                             double ty)
この変換を平行移動変換に設定します。この変換を表現する行列は次のようになります。
		[   1    0    tx  ]
		[   0    1    ty  ]
		[   0    0    1   ]
パラメータ:
tx - 座標が X 軸方向で平行移動される距離
ty - 座標が Y 軸方向で平行移動される距離

setToRotation

public void setToRotation(double theta)
この変換を回転変換に設定します。この変換を表現する行列は次のようになります。
		[   cos(theta)    -sin(theta)    0   ]
		[   sin(theta)     cos(theta)    0   ]
		[       0              0         1   ]
正の角度 theta で回転すると、正の x 軸の点が正の y 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度

setToRotation

public void setToRotation(double theta,
                          double x,
                          double y)
この変換を平行移動後の回転変換に設定します。このオペレーションは、座標をアンカーポイントが原点 (S1) になるように移動し、これらの座標を新しい原点 (S2) を中心に回転してから、最後にその仲介的な原点を元のアンカーポイント (S3) の座標に戻すために移動することに相当します。

この操作は、次の一連の呼び出しに相当します。

	    setToTranslation(x, y);	// S3: final translation
	    rotate(theta);		// S2: rotate around anchor
	    translate(-x, -y);		// 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 軸に向かって回転されます。
パラメータ:
theta - ラジアンで表した回転角度
x, y - 回転のアンカーポイントの座標

setToScale

public void setToScale(double sx,
                       double sy)
この変換をスケーリング変換に設定します。この変換を表現する行列は次のようになります。
		[   sx   0    0   ]
		[   0    sy   0   ]
		[   0    0    1   ]
パラメータ:
sx - 座標を X 軸方向にスケーリングするために使う係数
sy - 座標を Y 軸方向にスケーリングするために使う係数

setToShear

public void setToShear(double shx,
                       double shy)
この変換をシャーリング変換に設定します。この変換を表現する行列は次のようになります。
		[   1   shx   0   ]
		[  shy   1    0   ]
		[   0    0    1   ]
パラメータ:
shx - Y 座標の係数で座標を正の X 軸の方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の方向に移動するために使う乗数

setTransform

public void setTransform(AffineTransform Tx)
この変換を、指定された AffineTransform オブジェクト内の変換のコピーに設定します。
パラメータ:
Tx - 変換のコピー元の AffineTransform オブジェクト

setTransform

public void setTransform(double m00,
                         double m10,
                         double m01,
                         double m11,
                         double m02,
                         double m12)
この変換を 6 つの倍精度値によって指定されている行列に設定します。
パラメータ:
m00, m01, m02, m10, m11, m12 - 3x3 変換行列を構成する 6 つの浮動小数点値

concatenate

public void concatenate(AffineTransform Tx)
Tx によって元のユーザ空間にマップされた新しいユーザ空間を提供するためにもっとも一般的に使用される方法で、AffineTransform Tx をこの AffineTransform Cx に連結します。Cx を更新すると、結合された変換を実行できます。更新された変換 Cx' で点 p を変換することは、最初に Tx で p を変換してから、その結果を元の変換 Cx で変換することに相当します。つまり、Cx'(p) = Cx(Tx(p)) です。行列表記では、この変換 Cx が行列 [this] で表現され、Tx が行列 [Tx] で表現される場合、このメソッドは次の処理を行います。
		[this] = [this] x [Tx]
パラメータ:
Tx - この AffineTransform オブジェクトに連結される AffineTransform オブジェクト
関連項目:
preConcatenate(java.awt.geom.AffineTransform)

preConcatenate

public void preConcatenate(AffineTransform Tx)
Tx が既存のユーザ空間ではなく絶対ピクセル空間を基準にして座標変換を変更するなど一般にはあまり使用されない方法で、AffineTransform Tx をこの AffineTransform Cx に連結します。Cx を更新すると、結合された変換を実行できます。更新された変換 Cx' で点 p を変換することは、最初に元の変換 Cx で p を変換してから、その結果を Tx で変換することに相当します。つまり、Cx'(p) = Tx(Cx(p)) です。行列表記では、この変換 Cx が行列 [this] で表現され、Tx が行列 [Tx] で表現される場合、このメソッドは次の処理を行います。
		[this] = [Tx] x [this]
パラメータ:
Tx - この AffineTransform オブジェクトに連結される AffineTransform オブジェクト
関連項目:
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 - 行列を反転できない場合
関連項目:
getDeterminant()

transform

public Point2D transform(Point2D ptSrc,
                         Point2D ptDst)
指定された ptSrc を変換して、その結果を ptDst に格納します。ptDstnull の場合、新しい Point2D オブジェクトが割り当てられてから、変換の結果がこのオブジェクトに格納されます。どちらの場合も、便宜上、変換後の点を格納している ptDst が返されます。ptSrcptDst が同じオブジェクトの場合、入力点は変換後の点で適切に上書きされます。
パラメータ:
ptSrc - 変換対象の指定された Point2D
ptDst - ptSrc の変換結果を格納している指定された Point2D
戻り値:
ptSrc を変換し、結果を ptDst に格納したあとの ptDst

transform

public void transform(Point2D[] ptSrc,
                      int srcOff,
                      Point2D[] ptDst,
                      int dstOff,
                      int numPts)
この変換によってポイントオブジェクトの配列を変換します。ptDst 配列の要素のどれかが null であれば、新しい Point2D オブジェクトが割り当てられ、変換の結果が格納される前にその要素に格納されます。

ただし、このメソッドは、転送元配列に置かれて計算の転送元として使用される Point2D オブジェクトに結果を格納することによって引き起こされる問題を避けるための予防措置をとっていません。このメソッドは、指定された Point2D オブジェクトが同じ 1 つの点の変換オペレーションの転送元と転送先の両方である場合、オペランドの上に結果が格納されないように、結果を計算の終了後まで格納しないことを保証します。しかし、転送先 Point2D オブジェクトがほかのオペレーションの転送元配列に置かれて転送元 Point2D オブジェクトとなる場合、その点の元の座標は変換可能になる前に上書きされます。

パラメータ:
ptSrc - 転送元のポイントオブジェクトが格納されている配列
ptDst - 変換されたポイントオブジェクトが格納される配列
srcOff - 転送元配列での変換される最初のポイントオブジェクトへのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換されるポイントオブジェクトの数

transform

public void transform(float[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)
この変換によって、浮動小数点の座標の配列を変換します。2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定されたオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
ptSrc - 転送元の点座標が返されている配列。各点は x, y 座標のペアとして格納される
ptDst - 変換された点座標が返される配列。各点は x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初の点へのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換される点の数

transform

public void transform(double[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
この変換によって、倍精度の座標の配列を変換します。2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定されたオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
srcPts - 転送元の点座標が返されている配列。各点は x, y 座標のペアとして格納される
dstPts - 変換された点座標が返される配列。各点は x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初の点へのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換されるポイントオブジェクトの数

transform

public void transform(float[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
この変換によって浮動小数点の座標の配列を変換し、結果を double 値の配列に格納します。座標は、指定されたオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
ptSrc - 転送元の点座標が返されている配列。各点は x, y 座標のペアとして格納される
ptDst - 変換された点座標が返される配列。各点は x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初の点へのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換される点の数

transform

public void transform(double[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)
この変換によって倍精度の座標の配列を変換し、結果を float 値の配列に格納します。座標は、指定されたオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
srcPts - 転送元の点座標が返されている配列。各点は x, y 座標のペアとして格納される
dstPts - 変換された点座標が返される配列。各点は x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初の点へのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換されるポイントオブジェクトの数

inverseTransform

public Point2D inverseTransform(Point2D ptSrc,
                                Point2D ptDst)
                         throws NoninvertibleTransformException
指定された ptSrc を逆変換して、その結果を ptDst に格納します。ptDstnull の場合、新しい Point2D オブジェクトが割り当てられてから、変換の結果がこのオブジェクトに格納されます。どちらの場合も、便宜上、変換後の点を格納している ptDst が返されます。ptSrcptDst が同じオブジェクトの場合、入力点は変換後の点で適切に上書きされます。
パラメータ:
ptSrc - 逆変換される点
ptDst - 結果として生成される変換後の点
戻り値:
逆変換の結果を格納している ptDst
例外:
NoninvertibleTransformException - 行列を反転できない場合

inverseTransform

public void inverseTransform(double[] srcPts,
                             int srcOff,
                             double[] dstPts,
                             int dstOff,
                             int numPts)
                      throws NoninvertibleTransformException
この変換によって倍精度の座標の配列を逆変換します。2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定のオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
srcPts - 転送元の点座標が返されている配列。各点は x, y 座標のペアとして格納される
dstPts - 変換された点座標が返される配列。各点は x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初の点へのオフセット
dstOff - 最初のポイントオブジェクトが格納される転送先配列内の位置へのオフセット
numPts - 変換されるポイントオブジェクトの数
例外:
NoninvertibleTransformException - 行列を反転できない場合

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)     ]
ptDstnull の場合、新しい Point2D オブジェクトが割り当てられてから、変換の結果がこのオブジェクトに格納されます。どちらの場合も、便宜上、変換後の点を格納している ptDst が返されます。ptSrcptDst が同じオブジェクトの場合、入力点は変換後の点で適切に上書きされます。
パラメータ:
ptSrc - デルタ変換される距離ベクトル
ptDst - 結果として変換された距離ベクトル
戻り値:
変換の結果を格納している ptDst

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)     ]
2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定のオフセットから始まる配列に [x0, y0, x1, y1, ..., xn, yn] という順序で格納されます。
パラメータ:
srcPts - 転送元の距離ベクトルが格納されている配列。各ベクトルは、相対 x, y 座標のペアとして格納される
dstPts - 変換済みの距離ベクトルが返される配列。各ベクトルは相対 x, y 座標のペアとして格納される
srcOff - 転送元配列での変換される最初のベクトルへのオフセット
dstOff - 最初の変換ベクトルが格納される転送先配列内の位置へのオフセット
numPts - 変換されるベクトル座標ペアの数

createTransformedShape

public Shape createTransformedShape(Shape pSrc)
指定された Shape をこの変換によって変換し、その Shape のジオメトリによって定義される新しい Shape オブジェクトを返します。
パラメータ:
pSrc - この変換で変換される指定された Shape オブジェクト
戻り値:
変換された Shape のジオメトリを定義する新しい Shape オブジェクト

toString

public String toString()
この Object の値を表現する String を返します。
オーバーライド:
クラス Object 内の toString
戻り値:
この Object の値を表す String

isIdentity

public boolean isIdentity()
この AffineTransform が恒等変換である場合に true を返します。
戻り値:
この AffineTransform が恒等変換である場合は true、そうでない場合は false

clone

public Object clone()
この AffineTransform オブジェクトのコピーを返します。
オーバーライド:
クラス Object 内の clone
戻り値:
この AffineTransform オブジェクトのコピーである Object

hashCode

public int hashCode()
この変換のハッシュコードを返します。
オーバーライド:
クラス Object 内の hashCode
戻り値:
この変換のハッシュコード

equals

public boolean equals(Object obj)
この AffineTransform が、指定された引数と同じアフィン座標変換を表現する場合に true を返します。
オーバーライド:
クラス Object 内の equals
パラメータ:
obj - この AffineTransform と同じかどうかが比較される Object
戻り値:
obj がこの AffineTransform オブジェクトと同じ場合は true、そうでない場合は false

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.