モジュール java.desktop
パッケージ 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(0.0)以外のすべての場合について、Math.sin()およびMath.cos()の実装が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 final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、ある軸を中心とする鏡像反転を実行することを示します。鏡像反転により、通常は右手の座標系が左手の座標系に変更されます。
    static final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、任意の角度による回転を実行することを示します。
    static final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、汎用的なスケーリングを実行することを示します。
    static final int
    この定数は、このオブジェクトによって定義される変換が、入力座標の任意の変換を実行することを示します。
    static final int
    この定数は、このオブジェクトによって定義される変換が恒等変換であることを示します。
    static final int
    この定数は、回転フラグ・ビットのいずれかのビット・マスクです。
    static final int
    この定数は、スケールフ・ラグ・ビットのいずれかのビット・マスクです。
    static final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、90度の倍数で四分円回転を実行することを示します。
    static final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、1つの移動を実行することを示します。
    static final int
    このフラグ・ビットは、このオブジェクトによって定義される変換が、ほかのフラグ・ビットによって指定される変換に加えて、一様なスケーリングを実行することを示します。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    恒等変換を表現する新しい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を構築します。
    指定されたAffineTransformオブジェクトのコピーである、新しいAffineTransformを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このAffineTransformオブジェクトのコピーを返します。
    void
    AffineTransform TxをこのAffineTransform Cxに連結し、Txによって元のユーザー空間にマッピングされた新しいユーザー空間を提供する最も一般的な方法で使用します。
    逆変換を表現するAffineTransformオブジェクトを返します。
    指定されたShapeがこの変換によって変換されたあと、その幾何学的図形で定義された新しいShapeオブジェクトを返します。
    void
    deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
    この変換によって相対的な距離ベクトルの配列を変換します。
    ptSrcによって指定される相対的な距離ベクトルを変換し、その結果をptDstに格納します。
    boolean
    このAffineTransformが、指定された引数と同じアフィン座標変換を表現する場合にtrueを返します。
    double
    変換の行列表現の行列式を返します。
    void
    getMatrix(double[] flatmatrix)
    3×3アフィン変換行列内の6つの指定可能な値を取出し、倍精度値の配列に配置します。
    getQuadrantRotateInstance(int numquadrants)
    指定された数の四分円だけ座標を回転させる変換を返します。
    getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
    指定されたアンカー・ポイントを中心にして、指定された数の四分円だけ座標を回転させる変換を返します。
    getRotateInstance(double theta)
    回転変換を表現する変換を返します。
    getRotateInstance(double vecx, double vecy)
    回転ベクトルに従って座標を回転させる変換を返します。
    getRotateInstance(double theta, double anchorx, double anchory)
    アンカー・ポイントを中心にして座標を回転させる変換を返します。
    getRotateInstance(double vecx, double vecy, double anchorx, double anchory)
    回転ベクトルに従って、アンカー・ポイントを中心にして座標を回転させる変換を返します。
    getScaleInstance(double sx, double sy)
    スケーリング変換を表現する変換を返します。
    double
    3x3アフィン変換マトリックスのm00要素を返します。
    double
    3x3アフィン変換マトリックスのm11要素を返します。
    getShearInstance(double shx, double shy)
    シャーリング変換を表現する変換を返します。
    double
    3×3アフィン変換行列のX座標シャーリング要素(m01)を返します。
    double
    3×3アフィン変換行列のY座標シャーリング要素(m10)を返します。
    getTranslateInstance(double tx, double ty)
    平行移動変換を表現する変換を返します。
    double
    3×3アフィン変換行列の平行移動要素(m02)のX座標を返します。
    double
    3×3アフィン変換行列の平行移動要素(m12)のY座標を返します。
    int
    この変換の変換プロパティを記述するフラグ・ビットを返します。
    int
    この変換のハッシュ・コードを返します。
    void
    inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
    この変換によって倍精度の座標の配列を逆変換します。
    指定されたptSrcを逆変換して、その結果をptDstに格納します。
    void
    この変換を自身の逆変換に設定します。
    boolean
    このAffineTransformが恒等変換である場合にtrueを返します。
    void
    AffineTransform TxをこのAffineTransform Cxに連結し、Txによって、既存のユーザー空間に対する相対的ではなく、絶対ピクセル空間に対する相対的な座標変換が変更されるようにします。
    void
    quadrantRotate(int numquadrants)
    この変換を、指定された数の四分円だけ座標を回転させる変換と連結します。
    void
    quadrantRotate(int numquadrants, double anchorx, double anchory)
    この変換を、指定されたアンカー・ポイントを中心にして、指定された数の四分円だけ座標を回転させる変換と連結します。
    void
    rotate(double theta)
    この変換を回転変換に連結します。
    void
    rotate(double vecx, double vecy)
    この変換を、回転ベクトルに従って座標を回転させる変換と連結します。
    void
    rotate(double theta, double anchorx, double anchory)
    この変換を、アンカー・ポイントを中心にして座標を回転する変換と連結します。
    void
    rotate(double vecx, double vecy, double anchorx, double anchory)
    この変換を、回転ベクトルに従って、アンカー・ポイントを中心にして座標を回転させる変換と連結します。
    void
    scale(double sx, double sy)
    この変換をスケーリング変換に連結します。
    void
    この変換を恒等変換に設定し直します。
    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(double m00, double m10, double m01, double m11, double m02, double m12)
    この変換を6つの倍精度値によって指定されている行列に設定します。
    void
    この変換を、指定されたAffineTransformオブジェクト内の変換のコピーに設定します。
    void
    shear(double shx, double shy)
    この変換をシャーリング変換に連結します。
    この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)
    この変換によってポイント・オブジェクトの配列を変換します。
    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

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

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

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

      public static final int TYPE_MASK_SCALE
      この定数は、スケールフ・ラグ・ビットのいずれかのビット・マスクです。
      導入されたバージョン:
      1.2
      関連項目:
    • TYPE_FLIP

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

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

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

      public static final int TYPE_MASK_ROTATION
      この定数は、回転フラグ・ビットのいずれかのビット・マスクです。
      導入されたバージョン:
      1.2
      関連項目:
    • TYPE_GENERAL_TRANSFORM

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

    • AffineTransform

      public AffineTransform()
      恒等変換を表現する新しいAffineTransformを構築します。
      導入されたバージョン:
      1.2
    • AffineTransform

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

      @ConstructorProperties({"scaleX","shearY","shearX","scaleY","translateX","translateY"}) 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
      関連項目:
    • 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
      関連項目:
    • 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

      public double getScaleX()
      3x3アフィン変換マトリックスのm00要素を返します。 この行列係数は、入力X座標が出力X座標にどのように影響するかを決定し、変換のスケールの1つのファクタです。 この変換によってX座標が拡大または縮小される全量を測定するには、次のコードを使用します:
           Point2D p = new Point2D.Double(1, 0);
           p = tx.deltaTransform(p, p);
           double scaleX = p.distance(0, 0);
       
      戻り値:
      3x3アフィン変換マトリックスのm00要素であるdouble値。
      導入されたバージョン:
      1.2
      関連項目:
    • getScaleY

      public double getScaleY()
      3x3アフィン変換マトリックスのm11要素を返します。 このマトリックス係数は、入力Y座標が出力Y座標にどのように影響するかを決定し、変換のスケールの1つのファクタです。 この変換によってY座標が拡大または縮小される全量を測定するには、次のコードを使用します:
           Point2D p = new Point2D.Double(0, 1);
           p = tx.deltaTransform(p, p);
           double scaleY = p.distance(0, 0);
       
      戻り値:
      3x3アフィン変換マトリックスのm11要素であるdouble値。
      導入されたバージョン:
      1.2
      関連項目:
    • getShearX

      public double getShearX()
      3×3アフィン変換行列のX座標シャーリング要素(m01)を返します。
      戻り値:
      アフィン変換行列のシャーリング要素のX座標を表すdouble値。
      導入されたバージョン:
      1.2
      関連項目:
    • getShearY

      public double getShearY()
      3×3アフィン変換行列のY座標シャーリング要素(m10)を返します。
      戻り値:
      アフィン変換行列のシャーリング要素のY座標を表すdouble値。
      導入されたバージョン:
      1.2
      関連項目:
    • getTranslateX

      public double getTranslateX()
      3×3アフィン変換行列の平行移動要素(m02)のX座標を返します。
      戻り値:
      アフィン変換行列の平行移動要素のX座標を表すdouble値。
      導入されたバージョン:
      1.2
      関連項目:
    • getTranslateY

      public double getTranslateY()
      3×3アフィン変換行列の平行移動要素(m12)のY座標を返します。
      戻り値:
      アフィン変換行列の平行移動要素のY座標を表すdouble値。
      導入されたバージョン:
      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   ]
       
      正の角度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)
      AffineTransform TxをこのAffineTransform Cxに連結し、Txによって元のユーザー空間にマッピングされた新しいユーザー空間を提供する最も一般的な方法で使用します。 Cxを更新すると、結合された変換を実行できます。 更新された変換Cx'で点pを変換することは、Cx'(p) = Cx(Tx(p))のように、最初にTxでpを変換してから、その結果を元の変換Cxで変換することに相当します。行列表記では、この変換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))のように、最初に元の変換Cxでpを変換してから、その結果をTxで変換することに相当します。行列表記では、この変換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オブジェクト。
      例外:
      NoninvertibleTransformException - 行列を反転できない場合。
      導入されたバージョン:
      1.2
      関連項目:
    • invert

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

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

      例外:
      NoninvertibleTransformException - 行列を反転できない場合。
      導入されたバージョン:
      1.6
      関連項目:
    • 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 - 転送元のポイント・オブジェクトを含む配列
      srcOff - 転送元配列内の変換される最初のポイント・オブジェクトへのオフセット
      ptDst - 変換ポイント・オブジェクトが返される配列
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初の点へのオフセット
      dstPts - 変換された点座標が返される配列。 各点はx, y座標のペアとして格納されます。
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初の点へのオフセット
      dstPts - 変換された点座標が返される配列。 各点はx, y座標のペアとして格納されます。
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初の点へのオフセット
      dstPts - 変換された点座標が返される配列。 各点はx, y座標のペアとして格納されます。
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初の点へのオフセット
      dstPts - 変換された点座標が返される配列。 各点はx, y座標のペアとして格納されます。
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初の点へのオフセット
      dstPts - 変換された点座標が返される配列。 各点はx, y座標のペアとして格納されます。
      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座標のペアとして格納されます。
      srcOff - 転送元配列内の変換される最初のベクトルへのオフセット
      dstPts - 変換された距離ベクトルが返される配列。 各ベクトルは相対x, y座標のペアとして格納されます。
      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()
      このObjectの値を表すStringを返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このObjectの値を表すString
      導入されたバージョン:
      1.2
    • isIdentity

      public boolean isIdentity()
      このAffineTransformが恒等変換である場合にtrueを返します。
      戻り値:
      このAffineTransformが恒等変換である場合はtrue。それ以外の場合はfalse
      導入されたバージョン:
      1.2
    • clone

      public Object clone()
      このAffineTransformオブジェクトのコピーを返します。
      オーバーライド:
      clone、クラスObject
      戻り値:
      このAffineTransformオブジェクトのコピーであるObject
      導入されたバージョン:
      1.2
      関連項目:
    • hashCode

      public int hashCode()
      この変換のハッシュ・コードを返します。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      この変換のハッシュ・コード。
      導入されたバージョン:
      1.2
      関連項目:
    • equals

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