モジュール java.desktop
パッケージ 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 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​(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 Tx)
      指定されたAffineTransformオブジェクトのコピーである、新しいAffineTransformを構築します。
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      Object clone​()
      このAffineTransformオブジェクトのコピーを返します。
      void concatenate​(AffineTransform Tx)
      AffineTransform TxをこのAffineTransform Cxに連結し、Txによって元のユーザー空間にマッピングされた新しいユーザー空間を提供する最も一般的な方法で使用します。
      AffineTransform createInverse​()
      逆変換を表現するAffineTransformオブジェクトを返します。
      Shape createTransformedShape​(Shape pSrc)
      指定されたShapeがこの変換によって変換されたあと、その幾何学的図形で定義された新しいShapeオブジェクトを返します。
      void deltaTransform​(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
      この変換によって相対的な距離ベクトルの配列を変換します。
      Point2D deltaTransform​(Point2D ptSrc, Point2D ptDst)
      ptSrcによって指定される相対的な距離ベクトルを変換し、その結果をptDstに格納します。
      boolean equals​(Object obj)
      この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​()
      3x3アフィン変換行列のm00要素を返します。
      double getScaleY​()
      3x3アフィン変換行列の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 CxにAffineTransform Txを連結します。
      void quadrantRotate​(int numquadrants)
      この変換を、指定された数の四分円だけ座標を回転させる変換と連結します。
      void quadrantRotate​(int numquadrants, double anchorx, double anchory)
      この変換を、指定されたアンカー・ポイントを中心にして、指定された数の四分円だけ座標を回転させる変換と連結します。
      void rotate​(double theta)
      この変換を回転変換に連結します。
      void rotate​(double vecx, double vecy)
      この変換を、回転ベクトルに従って座標を回転させる変換と連結します。
      void rotate​(double theta, double anchorx, double anchory)
      この変換を、アンカー・ポイントを中心にして座標を回転する変換と連結します。
      void rotate​(double vecx, double vecy, double anchorx, double anchory)
      この変換を、回転ベクトルに従って、アンカー・ポイントを中心にして座標を回転させる変換と連結します。
      void scale​(double sx, double sy)
      この変換をスケーリング変換に連結します。
      void setToIdentity​()
      この変換を恒等変換に設定し直します。
      void setToQuadrantRotation​(int numquadrants)
      この変換を、指定された数の四分円だけ座標を回転させる回転変換に設定します。
      void setToQuadrantRotation​(int numquadrants, double anchorx, double anchory)
      この変換を、指定されたアンカー・ポイントを中心にして、指定された数の四分円だけ座標を回転させる、平行移動後の回転変換に設定します。
      void setToRotation​(double theta)
      この変換を回転変換に設定します。
      void setToRotation​(double vecx, double vecy)
      この変換を、回転ベクトルに従って座標を回転させる回転変換に設定します。
      void setToRotation​(double theta, double anchorx, double anchory)
      この変換を平行移動後の回転変換に設定します。
      void setToRotation​(double vecx, double vecy, double anchorx, double anchory)
      この変換を、回転ベクトルに従って、アンカー・ポイントを中心にして座標を回転させる回転変換に設定します。
      void setToScale​(double sx, double sy)
      この変換をスケーリング変換に設定します。
      void setToShear​(double shx, double shy)
      この変換をシャーリング変換に設定します。
      void setToTranslation​(double tx, double ty)
      この変換を平行移動変換に設定します。
      void setTransform​(double m00, double m10, double m01, double m11, double m02, double m12)
      この変換を6つの倍精度値によって指定されている行列に設定します。
      void setTransform​(AffineTransform Tx)
      この変換を、指定されたAffineTransformオブジェクト内の変換のコピーに設定します。
      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)
      この変換を平行移動変換に連結します。
    • フィールドの詳細

      • TYPE_UNIFORM_SCALE

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

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

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

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

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

      • 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
        関連項目:
        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​()
        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
        関連項目:
        getMatrix(double[])
      • 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
        関連項目:
        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)
        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(java.awt.geom.AffineTransform)
      • preConcatenate

        public void preConcatenate​(AffineTransform Tx)
        Txが既存のユーザー空間に対してではなく絶対ピクセル空間に対して座標変換を変更するような、あまり一般的でない方法でこのAffineTransform CxにAffineTransform 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
        関連項目:
        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オブジェクトを返します。
        パラメータ:
        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
        関連項目:
        Cloneable
      • equals

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