JavaTM Platform
Standard Ed. 6

java.awt.geom
クラス AffineTransform

java.lang.Object
  上位を拡張 java.awt.geom.AffineTransform
すべての実装されたインタフェース:
Serializable, Cloneable

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         ]
 

90 度回転の処理

 

AffineTransform クラスの rotate メソッドのバリエーションの中には、倍精度値の引数で回転角度 (ラジアン) を指定するものがあります。これらのメソッドには、約 90 度 (および 180 度、270 度、360 度などの倍数) の回転に対して特殊な処理が用意されており、一般的な四分円回転はより効率的に処理されます。この特殊な処理により、90 度の倍数に近似的な角度を正確に 90 度の倍数として扱うことができます。90 度の数倍程度である場合、四分円回転として扱われる角度の範囲は約 0.00000121 度の幅です。このセクションでは、このような特殊な処理が必要になる理由と、その実装方法について説明します。  

90 度はラジアンで PI/2 と表され、かつ PI は超越数 (そのため無理数) であるため、90 度の倍数をラジアンで計測された有限の倍精度値として正確に表すことはできません。そのため、有限の倍数度値を使用して四分円回転 (90、180、270、360 度) を表現することは理論的に不可能です。倍精度浮動小数点値を使用すれば、PI/2 の倍数 (0 以外) に非常に近い値を得ることができますが、正弦 (sin) または余弦 (cos) で正確に 0.0、1.0、または -1.0 を得るには十分に近いとは言えません。そのため、Math.sin() および Math.cos() の実装では、Math.sin(0.0) の場合を除いて 0.0 を返すことはありません。ただし同様の実装であっても、90 度の倍数ごとに一定範囲内の値については、ちょうど 1.0 および -1.0 を返します。これは、正しい応答が 1.0 または -1.0 に非常に近いため、倍精度の有効数字では、0.0 に近い値の場合と同程度の正確さで差異を表すことができないためです。  

これらの問題による最終結果として、Math.sin() メソッドおよび Math.cos() メソッドがこれらのラジアンベースの回転操作中に発生する行列の変更に対して値を直接生成するために使用される場合は、正弦および余弦で取得される 0.0 以外の値が原因で行列がわずかに異なるため、得られる変形は rotate(Math.PI/2.0) のような簡単な場合であっても四分円回転として厳密に分類されません。これらの変形が四分円回転として分類されない場合、変形の種類に基づいて後続の操作を最適化しようとするそれ以降のコードは、もっとも汎用的な実装に委託されます。  

四分円回転は非常によく行われる操作であるため、回転を変形に適用する場合と得られた変形を座標に適用する場合の両方で、このクラスは四分円回転をある程度早く処理できなければなりません。このような最適化処理を実現するために、ラジアンで計測された回転角度を使用するメソッドでは、四分円回転を意図した角度を検出すると、四分円回転として扱います。そのためこれらのメソッドでは、Math.sin(theta)Math.cos(theta) のいずれかが正確に 1.0 または -1.0 を返す場合に、角度 theta を四分円回転として扱います。目安として、Math.PI/2.0 の数倍程度の場合に、このプロパティーは約 0.0000000211 ラジアン (または 0.00000121 度) の範囲で true を保持します。

導入されたバージョン:
1.2
関連項目:
直列化された形式

フィールドの概要
static int TYPE_FLIP
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、ある軸を中心とする鏡像反転を実行することを示します。
static int TYPE_GENERAL_ROTATION
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、任意の角度による回転を実行することを示します。
static int TYPE_GENERAL_SCALE
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、汎用的なスケーリングを実行することを示します。
static int TYPE_GENERAL_TRANSFORM
          この定数は、このオブジェクトによって定義される変換が、入力座標の任意の変換を実行することを示します。
static int TYPE_IDENTITY
          この定数は、このオブジェクトによって定義される変換が恒等変換であることを示します。
static int TYPE_MASK_ROTATION
          この定数は、回転フラグビットのいずれかのビットマスクです。
static int TYPE_MASK_SCALE
          この定数は、スケールフラグビットのいずれかのビットマスクです。
static int TYPE_QUADRANT_ROTATION
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、90 度の倍数で四分円回転を実行することを示します。
static int TYPE_TRANSLATION
          このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、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 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()
          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 に格納します。
 void invert()
          この変換を自身の逆変換に設定します。
 boolean isIdentity()
          この AffineTransform が恒等変換である場合に true を返します。
 void preConcatenate(AffineTransform Tx)
          Tx が既存のユーザー空間ではなく絶対ピクセル空間を基準にして座標変換を変更するなど一般にはあまり使用されない方法で、AffineTransform Tx をこの AffineTransform Cx に連結します。
 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()
          この 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 か、この変換が実行するさまざまな座標変換のための適切なフラグビットの組み合わせのどちらかになります。

導入されたバージョン:
1.2
関連項目:
TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、1 つの移動を実行することを示します。移動では、ベクトルの長さや角度を変えずに座標を x 方向と y 方向に一定量だけ移動します。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、一様なスケーリングを実行することを示します。一律的なスケーリングでは、ベクトル間の角度を変えずにベクトルの長さを x 方向と y 方向のどちらにも一定量だけ乗算します。このフラグビットは、TYPE_GENERAL_SCALE フラグと相互に排他的です。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、汎用的なスケーリングを実行することを示します。汎用的なスケーリングでは、垂直なベクトル間の角度を変えずにベクトルの長さを x 方向と y 方向に別々の量だけ乗算します。このフラグビットは、TYPE_UNIFORM_SCALE フラグと相互に排他的です。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE
この定数は、スケールフラグビットのいずれかのビットマスクです。

導入されたバージョン:
1.2
関連項目:
TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, 定数フィールド値

TYPE_FLIP

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

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、90 度の倍数で四分円回転を実行することを示します。回転では、ベクトルの長さを変えずに、元の方向にかかわりなく同じ量だけベクトルの角度を変更します。このフラグビットは、TYPE_GENERAL_ROTATION フラグと相互に排他的です。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION
このフラグビットは、このオブジェクトによって定義される変換が、ほかのフラグビットによって指定される変換に加えて、任意の角度による回転を実行することを示します。回転では、ベクトルの長さを変えずに、元の方向にかかわりなく同じ量だけベクトルの角度を変更します。このフラグビットは、TYPE_QUADRANT_ROTATION フラグと相互に排他的です。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 定数フィールド値

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION
この定数は、回転フラグビットのいずれかのビットマスクです。

導入されたバージョン:
1.2
関連項目:
TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, 定数フィールド値

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM
この定数は、このオブジェクトによって定義される変換が、入力座標の任意の変換を実行することを示します。この変換を上記の定数のいずれかに分類される場合、型は定数 TYPE_IDENTITY か、この変換が実行するさまざまな座標変換のための適切なフラグビットの組み合わせのどちらかになります。

導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, getType(), 定数フィールド値
コンストラクタの詳細

AffineTransform

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

導入されたバージョン:
1.2

AffineTransform

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

パラメータ:
Tx - コピーする AffineTransform オブジェクト
導入されたバージョン:
1.2

AffineTransform

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

パラメータ:
m00 - 3×3 行列の X 座標スケーリング要素
m10 - 3×3 行列の Y 座標シャーリング要素
m01 - 3×3 行列の X 座標シャーリング要素
m11 - 3×3 行列の Y 座標スケーリング要素
m02 - 3×3 行列の X 座標平行移動要素
m12 - 3×3 行列の Y 座標平行移動要素
導入されたバージョン:
1.2

AffineTransform

public AffineTransform(float[] flatmatrix)
3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する浮動小数点値の配列から、新しい AffineTransform を構築します。各値は、配列から { m00 m10 m01 m11 [m02 m12]} という形式で取り出されます。

パラメータ:
flatmatrix - 新しい AffineTransform オブジェクトに設定される 各値を格納している float 値の配列。配列の長さは 4 以上と見なされる。配列の長さが 6 より小さい場合、最初の 4 つの値のみが取得される。配列の 長さが 6 より大きい場合、最初の 6 つの値が取得される
導入されたバージョン:
1.2

AffineTransform

public AffineTransform(double m00,
                       double m10,
                       double m01,
                       double m11,
                       double m02,
                       double m12)
3×3 変換行列の 6 つの指定可能エントリを表現する 6 つの倍精度値から、新しい AffineTransform を構築します。

パラメータ:
m00 - 3×3 行列の X 座標スケーリング要素
m10 - 3×3 行列の Y 座標シャーリング要素
m01 - 3×3 行列の X 座標シャーリング要素
m11 - 3×3 行列の Y 座標スケーリング要素
m02 - 3×3 行列の X 座標平行移動要素
m12 - 3×3 行列の Y 座標平行移動要素
導入されたバージョン:
1.2

AffineTransform

public AffineTransform(double[] flatmatrix)
3×3 変換行列の 4 つの非平行移動エントリまたは 6 つの指定可能エントリのどちらかを表現する倍精度値の配列から、新しい AffineTransform を構築します。各値は、配列から { m00 m10 m01 m11 [m02 m12]} という形式で取り出されます。

パラメータ:
flatmatrix - 新しい AffineTransform オブジェクトに設定される 各値を格納している double 値の配列。配列の長さは 4 以上と見なされる。配列の長さが 6 より小さい場合、最初の 4 つの値のみが取得される。配列の 長さが 6 より大きい場合、最初の 6 つの値が取得される
導入されたバージョン:
1.2
メソッドの詳細

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   ]
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
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        ]
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
theta - ラジアンで計測した回転角度
anchorx - 回転のアンカーポイントの X 座標
anchory - 回転のアンカーポイントの Y 座標
戻り値:
指定された点を中心として、指定された回転角度で 座標を回転する AffineTransform オブジェクト
導入されたバージョン:
1.2

getRotateInstance

public static AffineTransform getRotateInstance(double vecx,
                                                double vecy)
回転ベクトルに従って座標を回転させる変換を返します。すべての座標は原点を中心に同じ量だけ回転します。この回転量で、元の正の X 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 - Y 座標の係数で座標を正の X 軸の 方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の 方向に移動するために使う乗数
戻り値:
指定された乗数で座標を変形させる 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 フラグビットを結合する排他的論理和の演算です。

戻り値:
この変換に適用される任意の指定フラグによる 論理和の組み合わせ
導入されたバージョン:
1.2
関連項目:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM

getDeterminant

public double getDeterminant()
変換の行列表現の行列式を返します。行列式は、逆変換の存在を判定するためにも、X と Y のスケーリングの組み合わせによる変換を表現する 1 つの値を取得するためにも使用できます。  

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

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

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

                |  m00  m01  m02  |
                |  m10  m11  m12  |  =  m00 * m11 - m01 * m10
                |   0    0    1   |
 

戻り値:
座標を変換するために使用される行列の 行列式
導入されたバージョン:
1.2
関連項目:
getType(), createInverse(), inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D), TYPE_UNIFORM_SCALE

getMatrix

public void getMatrix(double[] flatmatrix)
3×3 アフィン変換行列内の 6 つの指定可能な値を取り出し、倍精度値の配列に配置します。各値は配列に { m00 m10 m01 m11 m02 m12 } という形式で格納されます。4 つの double 値の配列も指定できます。 その場合は、配列の非平行移動部分を表す最初の 4 つの要素だけが取り出され、値は配列に { m00 m10 m01 m11 } という形式で格納されます。

パラメータ:
flatmatrix - 戻り値を格納するために使用する double 値の 配列
導入されたバージョン:
1.2
関連項目:
getScaleX(), getScaleY(), getShearX(), getShearY(), getTranslateX(), getTranslateY()

getScaleX

public double getScaleX()
3×3 アフィン変換行列の X 座標スケーリング要素 (m00) を返します。

戻り値:
アフィン変換行列のスケーリング要素の X 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

getScaleY

public double getScaleY()
3×3 アフィン変換行列の Y 座標スケーリング要素 (m11) を返します。

戻り値:
アフィン変換行列のスケーリング要素の Y 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

getShearX

public double getShearX()
3×3 アフィン変換行列の X 座標シャーリング要素 (m01) を返します。

戻り値:
アフィン変換行列のシャーリング要素の X 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

getShearY

public double getShearY()
3×3 アフィン変換行列の Y 座標シャーリング要素 (m10) を返します。

戻り値:
アフィン変換行列のシャーリング要素の Y 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

getTranslateX

public double getTranslateX()
3×3 アフィン変換行列の平行移動要素 (m02) の X 座標を返します。

戻り値:
アフィン変換行列の平行移動要素の X 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

getTranslateY

public double getTranslateY()
3×3 アフィン変換行列の平行移動要素 (m12) の Y 座標を返します。

戻り値:
アフィン変換行列の平行移動要素の Y 座標を表す double 値
導入されたバージョン:
1.2
関連項目:
getMatrix(double[])

translate

public void translate(double tx,
                      double ty)
この変換を平行移動変換に連結します。これは、concatenate(T) を呼び出すことに相当します。 ただし、T は次の行列で表現される AffineTransform です。
                [   1    0    tx  ]
                [   0    1    ty  ]
                [   0    0    1   ]
 

パラメータ:
tx - 座標が X 軸方向で平行移動される 距離
ty - 座標が Y 軸方向で平行移動される 距離
導入されたバージョン:
1.2

rotate

public void rotate(double theta)
この変換を回転変換に連結します。これは、concatenate(R) を呼び出すことに相当します。ただし、R は次の行列で表現される AffineTransform です。
                [   cos(theta)    -sin(theta)    0   ]
                [   sin(theta)     cos(theta)    0   ]
                [       0              0         1   ]
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
theta - ラジアンで計測した回転角度
導入されたバージョン:
1.2

rotate

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

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

     translate(anchorx, anchory);      // S3:final translation
     rotate(theta);                    // S2:rotate around anchor
     translate(-anchorx, -anchory);    // S1:translate anchor to origin
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
theta - ラジアンで計測した回転角度
anchorx - 回転のアンカーポイントの X 座標
anchory - 回転のアンカーポイントの Y 座標
導入されたバージョン:
1.2

rotate

public void rotate(double vecx,
                   double vecy)
この変換を、回転ベクトルに従って座標を回転させる変換と連結します。すべての座標は原点を中心に同じ量だけ回転します。この回転量で、元の正の X 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 - Y 座標の係数で座標を正の X 軸の 方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の 方向に移動するために使う乗数
導入されたバージョン:
1.2

setToIdentity

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

導入されたバージョン:
1.2

setToTranslation

public void setToTranslation(double tx,
                             double ty)
この変換を平行移動変換に設定します。この変換を表現する行列は次のようになります。
                [   1    0    tx  ]
                [   0    1    ty  ]
                [   0    0    1   ]
 

パラメータ:
tx - 座標が X 軸方向で平行移動される 距離
ty - 座標が Y 軸方向で平行移動される 距離
導入されたバージョン:
1.2

setToRotation

public void setToRotation(double theta)
この変換を回転変換に設定します。この変換を表現する行列は次のようになります。
                [   cos(theta)    -sin(theta)    0   ]
                [   sin(theta)     cos(theta)    0   ]
                [       0              0         1   ]
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
theta - ラジアンで計測した回転角度
導入されたバージョン:
1.2

setToRotation

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

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

     setToTranslation(anchorx, anchory); // S3:final translation
     rotate(theta);                    // S2:rotate around anchor
     translate(-anchorx, -anchory);    // S1:translate anchor to origin
 
この変換を表現する行列は次のようになります。
                [   cos(theta)    -sin(theta)    x-x*cos+y*sin  ]
                [   sin(theta)     cos(theta)    y-x*sin-y*cos  ]
                [       0              0               1        ]
 
正の角度 theta で回転すると、正の X 軸の点が正の Y 軸に向かって回転します。前述の「90 度回転の処理」の説明も参照してください。

パラメータ:
theta - ラジアンで計測した回転角度
anchorx - 回転のアンカーポイントの X 座標
anchory - 回転のアンカーポイントの Y 座標
導入されたバージョン:
1.2

setToRotation

public void setToRotation(double vecx,
                          double vecy)
この変換を、回転ベクトルに従って座標を回転させる回転変換に設定します。すべての座標は原点を中心に同じ量だけ回転します。この回転量で、元の正の X 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 軸に沿った座標は、原点から指定されたベクトル座標を指すベクトルに揃えられます。vecxvecy の両方が 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 - Y 座標の係数で座標を正の X 軸の 方向に移動するために使う乗数
shy - X 座標の係数で座標を正の Y 軸の 方向に移動するために使う乗数
導入されたバージョン:
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 - 3×3 行列の X 座標スケーリング要素
m10 - 3×3 行列の Y 座標シャーリング要素
m01 - 3×3 行列の X 座標シャーリング要素
m11 - 3×3 行列の Y 座標スケーリング要素
m02 - 3×3 行列の X 座標平行移動要素
m12 - 3×3 行列の Y 座標平行移動要素
導入されたバージョン:
1.2

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 オブジェクト
導入されたバージョン:
1.2
関連項目:
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 オブジェクト
導入されたバージョン:
1.2
関連項目:
concatenate(java.awt.geom.AffineTransform)

createInverse

public AffineTransform createInverse()
                              throws NoninvertibleTransformException
逆変換を表現する AffineTransform オブジェクトを返します。この変換 Tx の逆変換 Tx' は、Tx によって変換された座標をその元の座標にマップして戻します。つまり、Tx'(Tx(p)) = p = Tx(Tx'(p)) です。  

この変換がすべての座標を点や線にマップする場合、変換は逆写像を持ちません。 これは、転送先の点や線にない座標が逆写像を持たないためです。getDeterminant メソッドを使うと、この変換が逆写像を持つかどうかを判定できます。 この変換が逆写像を持たない場合、createInverse メソッドが呼び出されると、例外がスローされます。

戻り値:
逆変換を表現する新しい AffineTransform オブジェクト
例外:
NoninvertibleTransformException - 行列を反転できない場合
導入されたバージョン:
1.2
関連項目:
getDeterminant()

invert

public void invert()
            throws NoninvertibleTransformException
この変換を自身の逆変換に設定します。この変換 Tx の逆変換 Tx' は、Tx によって変換された座標をその元の座標にマップして戻します。つまり、Tx'(Tx(p)) = p = Tx(Tx'(p)) です。  

この変換がすべての座標を点や線にマップする場合、変換は逆写像を持ちません。 これは、転送先の点や線にない座標が逆写像を持たないためです。getDeterminant メソッドを使うと、この変換が逆写像を持つかどうかを判定できます。この変換が逆写像を持たない場合、invert メソッドが呼び出されると、例外がスローされます。

例外:
NoninvertibleTransformException - 行列を反転できない場合
導入されたバージョン:
1.6
関連項目:
getDeterminant()

transform

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

パラメータ:
ptSrc - 変換対象の指定された Point2D
ptDst - ptSrc の変換結果を格納している 指定された Point2D
戻り値:
ptSrc を変換し、結果を ptDst に格納したあとの ptDst
導入されたバージョン:
1.2

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 - 変換されるポイントオブジェクトの数
導入されたバージョン:
1.2

transform

public void transform(float[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)
この変換によって、浮動小数点の座標の配列を変換します。2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定されたオフセットから始まる配列に [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)
この変換によって、倍精度の座標の配列を変換します。2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定されたオフセットから始まる配列に [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)
この変換によって浮動小数点の座標の配列を変換し、結果を double 値の配列に格納します。座標は、指定されたオフセットから始まる配列に [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)
この変換によって倍精度の座標の配列を変換し、結果を float 値の配列に格納します。座標は、指定されたオフセットから始まる配列に [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 に格納します。ptDstnull の場合、新しい Point2D オブジェクトが割り当てられてから、変換の結果がこのオブジェクトに格納されます。どちらの場合も、便宜上、変換後の点を格納している ptDst が返されます。ptSrcptDst が同じオブジェクトの場合、入力点は変換後の点で適切に上書きされます。

パラメータ:
ptSrc - 逆変換される点
ptDst - 結果として生成される変換後の点
戻り値:
逆変換の結果を格納している ptDst
例外:
NoninvertibleTransformException - 行列を反転できない 場合
導入されたバージョン:
1.2

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 - 行列を反転できない 場合
導入されたバージョン:
1.2

deltaTransform

public Point2D deltaTransform(Point2D ptSrc,
                              Point2D ptDst)
ptSrc によって指定される相対的な距離ベクトルを変換し、その結果を ptDst に格納します。相対的距離ベクトルは、アフィン変換行列の平行移動コンポーネントを適用することなく、次の式を使って変換されます。
        [  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
        [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
        [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
 
ptDstnull の場合、新しい Point2D オブジェクトが割り当てられてから、変換の結果がこのオブジェクトに格納されます。どちらの場合も、便宜上、変換後の点を格納している ptDst が返されます。ptSrcptDst が同じオブジェクトの場合、入力点は変換後の点で適切に上書きされます。

パラメータ:
ptSrc - デルタ変換される距離ベクトル
ptDst - 結果として変換された距離ベクトル
戻り値:
変換の結果を格納している ptDst
導入されたバージョン:
1.2

deltaTransform

public void deltaTransform(double[] srcPts,
                           int srcOff,
                           double[] dstPts,
                           int dstOff,
                           int numPts)
この変換によって相対的な距離ベクトルの配列を変換します。相対的距離ベクトルは、アフィン変換行列の平行移動コンポーネントを適用することなく、次の式を使って変換されます。
        [  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
        [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
        [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
 
2 つの座標配列セクションは完全に同じか、結果の有効性に影響を与えずに同じ配列のセクションをオーバーラップしたものです。このメソッドは、転送元の座標が変換可能になる前に、それまでのオペレーションによって上書きされないことを保証します。座標は、指定されたオフセットから始まる配列に [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 の幾何学的図形によって定義される新しい Shape オブジェクトを返します。

パラメータ:
pSrc - この変換で変換される指定された Shape オブジェクト
戻り値:
変換された Shape の幾何学的図形を定義する 新しい Shape オブジェクト、pSrc が null の場合は null
導入されたバージョン:
1.2

toString

public String toString()
この Object の値を表す String を返します。

オーバーライド:
クラス Object 内の toString
戻り値:
この Object の値を表す String
導入されたバージョン:
1.2

isIdentity

public boolean isIdentity()
この AffineTransform が恒等変換である場合に true を返します。

戻り値:
この AffineTransform が恒等変換である場合は true、 そうでない場合は false
導入されたバージョン:
1.2

clone

public Object clone()
この AffineTransform オブジェクトのコピーを返します。

オーバーライド:
クラス Object 内の clone
戻り値:
この AffineTransform オブジェクトのコピーである Object
導入されたバージョン:
1.2
関連項目:
Cloneable

hashCode

public int hashCode()
この変換のハッシュコードを返します。

オーバーライド:
クラス Object 内の hashCode
戻り値:
この変換のハッシュコード
導入されたバージョン:
1.2
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
この AffineTransform が、指定された引数と同じアフィン座標変換を表現する場合に true を返します。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - この AffineTransform と同じかどうかが比較される Object
戻り値:
obj がこの AffineTransform オブジェクトと等しい場合は true、そうでない場合は false
導入されたバージョン:
1.2
関連項目:
Object.hashCode(), Hashtable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。