JavaTM 2 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 類別表示 2D 仿射變換,它執行從 2D 坐標到其他 2D 坐標的線性映射,保留了線的“直線性”和“平行性”。可以使用一系列平移 (translation)、縮放 (scale)、翻轉 (flip)、旋轉 (rotation) 和錯切 (shear) 來建構仿射變換。

這樣的坐標變換可以使用一個 3 行乘 3 列的矩陣來表示,最後一行預設為 [ 0 0 1 ]。此矩陣將源坐標 (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 度的倍數。因此,理論上不可以使用 PI 來描述象限旋轉(90、180、270 或 360 度)。雙精度浮點值可以非常接近 PI/2 的非零倍數,但是不夠接近到正弦或餘弦能精確到 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() 方法直接產生用於矩陣修改的值,那麼嚴格來說,得到的變換不能歸類別為象限旋轉(即使對於 rotate(Math.PI/2.0) 這樣的簡單情況也是如此),因為執行正弦和餘弦操作而得到的非 0.0 值將造成矩陣的細微變化。如果這些變換不能歸類別為象限旋轉,那麼試圖根據變換型別優化下一步操作的後續程式碼會被移交到它最通用的實作中。

因為象限旋轉相當常見,所以在對變換應用旋轉和對坐標應用所得變換時,此類別應該快速合理地處理這些情況。為了達到最佳處理,以弧度為單位測量旋轉角度的方法試圖檢測象限旋轉的角度並以這種方式處理它們。因此,如果 Math.sin(theta)Math.cos(theta) 正好返回 1.0 或 -1.0,那麼這些方法會將角度 theta 視為象限旋轉。實際經驗證明,此特性可用於 Math.PI/2.0 的小倍數大約 0.0000000211 弧度(0.00000121 度)的範圍。

從以下版本開始:
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
          此標誌位指示此物件定義的變換除了執行其他標誌位指示的轉換外,還執行平移操作。
static int TYPE_UNIFORM_SCALE
          此標誌位指示此物件定義的變換除了執行其他標誌位指示的轉換外,還執行統一縮放操作。
 
建構子摘要
AffineTransform()
          建構一個表示恆等變換的新 AffineTransform
AffineTransform(AffineTransform Tx)
          建構一個新 AffineTransform,讓它作為指定 AffineTransform 物件的副本。
AffineTransform(double[] flatmatrix)
          根據雙精度值陣列建構一個新 AffineTransform,該陣列要麼表示 3x3 變換矩陣的 4 個非平移條目,要麼表示它的 6 個可指定條目。
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
          根據表示 3x3 變換矩陣 6 個可指定條目的 6 個雙精度值建構一個新 AffineTransform
AffineTransform(float[] flatmatrix)
          根據一個浮點值陣列建構一個新 AffineTransform,該陣列要麼表示 3x3 變換矩陣的 4 個非平移條目,要麼表示 3x3 變換矩陣的 6 個可指定條目。
AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
          根據表示 3x3 變換矩陣 6 個可指定條目的 6 個浮點值建構一個新 AffineTransform
 
方法摘要
 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)
          在 3x3 仿射變換矩陣中檢索 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) 的 X 坐標。
 double getScaleY()
          返回 3x3 仿射變換矩陣縮放元素 (m11) 的 Y 坐標。
static AffineTransform getShearInstance(double shx, double shy)
          返回表示錯切變換的變換。
 double getShearX()
          返回 3x3 仿射變換矩陣錯切元素 (m01) 的 X 坐標。
 double getShearY()
          返回 3x3 仿射變換矩陣錯切元素 (m10) 的 Y 坐標。
static AffineTransform getTranslateInstance(double tx, double ty)
          返回表示平移變換的變換。
 double getTranslateX()
          返回 3x3 仿射變換矩陣平移元素 (m02) 的 X 坐標。
 double getTranslateY()
          返回 3x3 仿射變換矩陣平移元素 (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)
          以不常用的方式將 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 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
此標誌位指示此物件定義的變換除了執行其他標誌位指示的轉換外,還執行平移操作。平移按照常數 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)
根據表示 3x3 變換矩陣 6 個可指定條目的 6 個浮點值建構一個新 AffineTransform

參數:
m00 - 3x3 矩陣縮放元素的 X 坐標
m10 - 3x3 矩陣剪切元素的 Y 坐標
m01 - 3x3 矩陣剪切元素的 X 坐標
m11 - 3x3 矩陣縮放元素的 Y 坐標
m02 - 3x3 矩陣平移元素的 X 坐標
m12 - 3x3 矩陣平移元素的 Y 坐標
從以下版本開始:
1.2

AffineTransform

public AffineTransform(float[] flatmatrix)
根據一個浮點值陣列建構一個新 AffineTransform,該陣列要麼表示 3x3 變換矩陣的 4 個非平移條目,要麼表示 3x3 變換矩陣的 6 個可指定條目。從該陣列中檢索到的值為 { m00 m10 m01 m11 [m02 m12]}。

參數:
flatmatrix - float 陣列,包含要在新 AffineTransform 物件中設置的值。假定陣列的長度至少為 4。如果陣列的長度小於 6,則僅採用前 4 個值。如果陣列的長度大於 6,則採用前 6 個值。
從以下版本開始:
1.2

AffineTransform

public AffineTransform(double m00,
                       double m10,
                       double m01,
                       double m11,
                       double m02,
                       double m12)
根據表示 3x3 變換矩陣 6 個可指定條目的 6 個雙精度值建構一個新 AffineTransform

參數:
m00 - 3x3 矩陣縮放元素的 X 坐標
m10 - 3x3 矩陣剪切元素的 Y 坐標
m01 - 3x3 矩陣剪切元素的 X 坐標
m11 - 3x3 矩陣縮放元素的 Y 坐標
m02 - 3x3 矩陣平移元素的 X 坐標
m12 - 3x3 矩陣平移元素的 Y 坐標
從以下版本開始:
1.2

AffineTransform

public AffineTransform(double[] flatmatrix)
根據雙精度值陣列建構一個新 AffineTransform,該陣列要麼表示 3x3 變換矩陣的 4 個非平移條目,要麼表示它的 6 個可指定條目。從該陣列中檢索到的值為 { m00 m10 m01 m11 [m02 m12]}。

參數:
flatmatrix - double 陣列,包含要在新 AffineTransform 物件中設置的值。假定陣列的長度至少為 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 - 坐標在 X 正半軸方向上進行位移的乘數,與其 Y 坐標的因子一樣
shy - 坐標在 Y 正半軸方向上進行位移的乘數,與其 X 坐標的因子一樣
返回:
按指定乘數錯切坐標的 AffineTransform 物件。
從以下版本開始:
1.2

getType

public int getType()
檢索描述此變換的變換屬性的標誌位。返回值要麼是常數 TYPE_IDENTITY 或 TYPE_GENERAL_TRANSFORM 中的一個,要麼是適當標誌位的組合。標誌位的有效組合是一個異或操作,該操作除了組合 TYPE_UNIFORM_SCALE 或 TYPE_GENERAL_SCALE 標誌位以及 TYPE_QUADRANT_ROTATION 或 TYPE_GENERAL_ROTATION 標誌位之外,還可以組合 TYPE_TRANSLATION 標誌位。

返回:
應用於此變換的所有指示標誌的 OR 組合
從以下版本開始:
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 縮放的單個值。

如果決定因子非零,則此變換是可逆的,依賴於此逆向變換的各種方法均無需拋出 NoninvertibleTransformException。如果決定因子為零,則此變換是不可逆的,因為變換將所有輸入坐標映射到線或點上。如果決定因子非常接近零,則逆向變換操作可能不夠精確,無法產生有意義結果。

如果像 getType 方法指示的那樣,此變換表示統一縮放,則決定因子還表示統一縮放因子的平方。所有點都通過該縮放因子從原點展開或向原點收縮。如果此變換表示非統一縮放或較通用的變換,則決定因子只表示確定逆向變換是否可能,而不表示除此之外任何有用值。

在數學上,使用以下公式計算決定因子:

                |  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)
在 3x3 仿射變換矩陣中檢索 6 個可指定值,並將其置於雙精度值的陣列中。值將以 { m00 m10 m01 m11 m02 m12 } 形式存儲到該陣列中。也可以指定包含 4 個 double 值的陣列,在這種情況下,僅檢索表示陣列中非變換部分的前四個元素,並將值以 { m00 m10 m01 m11 } 的形式存儲到陣列中。

參數:
flatmatrix - 用於存儲返回值的 double 陣列。
從以下版本開始:
1.2
另請參見:
getScaleX(), getScaleY(), getShearX(), getShearY(), getTranslateX(), getTranslateY()

getScaleX

public double getScaleX()
返回 3x3 仿射變換矩陣縮放元素 (m00) 的 X 坐標。

返回:
作為仿射變換矩陣縮放元素的 X 坐標的 double 值。
從以下版本開始:
1.2
另請參見:
getMatrix(double[])

getScaleY

public double getScaleY()
返回 3x3 仿射變換矩陣縮放元素 (m11) 的 Y 坐標。

返回:
作為仿射變換矩陣縮放元素的 Y 坐標的 double 值。
從以下版本開始:
1.2
另請參見:
getMatrix(double[])

getShearX

public double getShearX()
返回 3x3 仿射變換矩陣錯切元素 (m01) 的 X 坐標。

返回:
作為仿射變換矩陣錯切元素的 X 坐標的 double 值。
從以下版本開始:
1.2
另請參見:
getMatrix(double[])

getShearY

public double getShearY()
返回 3x3 仿射變換矩陣錯切元素 (m10) 的 Y 坐標。

返回:
作為仿射變換矩陣錯切元素的 Y 坐標的 double 值。
從以下版本開始:
1.2
另請參見:
getMatrix(double[])

getTranslateX

public double getTranslateX()
返回 3x3 仿射變換矩陣平移元素 (m02) 的 X 坐標。

返回:
作為仿射變換矩陣平移元素的 X 坐標的 double 值。
從以下版本開始:
1.2
另請參見:
getMatrix(double[])

getTranslateY

public double getTranslateY()
返回 3x3 仿射變換矩陣平移元素 (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 - 坐標在正 X 軸方向上進行位移的乘數,與其 Y 坐標的因子一樣
shy - 坐標在正 Y 軸方向上進行位移的乘數,與其 X 坐標的因子一樣
從以下版本開始:
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 - 坐標在正 X 軸方向上進行位移的乘數,與其 Y 坐標的因子一樣
shy - 坐標在正 Y 軸方向上進行位移的乘數,與其 X 坐標的因子一樣
從以下版本開始:
1.2

setTransform

public void setTransform(AffineTransform Tx)
將此變換設置為指定 AffineTransform 物件中變換的副本。

參數:
Tx - 從中複製變換的 AffineTransform 物件
從以下版本開始:
1.2

setTransform

public void setTransform(double m00,
                         double m10,
                         double m01,
                         double m11,
                         double m02,
                         double m12)
將此變換設置為 6 個雙精度值指定的矩陣。

參數:
m00 - 3x3 矩陣縮放元素的 X 坐標
m10 - 3x3 矩陣錯切元素的 Y 坐標
m01 - 3x3 矩陣錯切元素的 X 坐標
m11 - 3x3 矩陣縮放元素的 Y 坐標
m02 - 3x3 矩陣平移元素的 X 坐標
m12 - 3x3 矩陣平移元素的 Y 坐標
從以下版本開始:
1.2

concatenate

public void concatenate(AffineTransform Tx)
以最常用的方式將 AffineTransform Tx 連接到此 AffineTransform Cx,以提供由 Tx 映射到以前使用者空間的新使用者空間。更新 Cx 以執行組合變換。通過更新的變換 Cx' 來對點 p 進行變換等效於首先通過 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)
以不常用的方式將 AffineTransform Tx 連接到此 AffineTransform Cx,從而 Tx 相對於絕對像素空間(而非相對於現有使用者空間)修改坐標變換。更新 Cx 以執行組合變換。通過更新的變換 Cx' 來對點 p 進行變換等效於首先通過初始變換 Cx 變換 p,然後通過 Tx 變換所得結果,如下所示:Cx'(p) = Tx(Cx(p))。在矩陣符號中,如果此變換 Cx 由矩陣 [this] 表示,Tx 由矩陣 [Tx] 表示,則此方法執行以下操作:
                [this] = [Tx] x [this]
 

參數:
Tx - 要與此 AffineTransform 物件連接的 AffineTransform 物件。
從以下版本開始:
1.2
另請參見:
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 物件同時作為同一個單點變換操作的源和目標,則在計算完成之前不存儲結果,從而避免將結果存儲在該操作數上。但是,如果一個操作的目標 Point2D 物件與源陣列背後另一個操作的源 Point2D 物件相同,那麼在轉換該點初始坐標之前,這些坐標都將被改寫。

參數:
ptSrc - 套件含源點物件的陣列
ptDst - 從其中返回變換點物件的陣列
srcOff - 源陣列中要變換的第一個點物件的偏移量
dstOff - 目標陣列中存儲的第一個變換點物件的位置的偏移量
numPts - 要變換的點物件數
從以下版本開始:
1.2

transform

public void transform(float[] srcPts,
                      int srcOff,
                      float[] dstPts,
                      int dstOff,
                      int numPts)
通過此變換來變換浮點坐標陣列。兩個坐標陣列部分可以完全相同,也可以是同一陣列的重疊部分,這對結果的有效性都沒有影響。此方法可確保在變換源坐標之前,它們不會被以前的操作改寫。這些坐標從指定偏移量開始按照 [x0, y0, x1, y1, ..., xn, yn] 的順序存儲在陣列中。

參數:
srcPts - 套件含源點坐標的陣列。每個點都存儲為一對 x, y 坐標。
dstPts - 從其中返回變換點坐標的陣列。每個點都存儲為一對 x, y 坐標。
srcOff - 源陣列中要變換的第一個點的偏移量
dstOff - 目標陣列中存儲的第一個變換點位置的偏移量
numPts - 要變換的點數
從以下版本開始:
1.2

transform

public void transform(double[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
通過此變換來變換雙精度坐標陣列。兩個坐標陣列部分可以完全相同,也可以是同一陣列的重疊部分,這對結果的有效性都沒有影響。此方法可確保在變換源坐標之前,它們不會被以前的操作改寫。這些坐標從指示偏移量開始按照 [x0, y0, x1, y1, ..., xn, yn] 的順序存儲在陣列中。

參數:
srcPts - 套件含源點坐標的陣列。每個點都存儲為一對 x, y 坐標。
dstPts - 從其中返回變換點坐標的陣列。每個點都存儲為一對 x, y 坐標。
srcOff - 源陣列中要變換的第一個點的偏移量
dstOff - 目標陣列中存儲的第一個變換點位置的偏移量
numPts - 要變換的點物件數
從以下版本開始:
1.2

transform

public void transform(float[] srcPts,
                      int srcOff,
                      double[] dstPts,
                      int dstOff,
                      int numPts)
通過此變換來變換浮點坐標陣列,並將結果存儲在 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
通過此變換來逆向變換雙精度坐標陣列。兩個坐標陣列部分可以完全相同,也可以是同一陣列的重疊部分,這對結果的有效性都沒有影響。此方法可確保在變換源坐標之前,它們不會被以前的操作改寫。這些坐標從指定偏移量開始按照 [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 - 要進行 delta 變換的距離向量
ptDst - 得到的變換距離向量
返回:
ptDst,它包含變換的結果。
從以下版本開始:
1.2

deltaTransform

public void deltaTransform(double[] srcPts,
                           int srcOff,
                           double[] dstPts,
                           int dstOff,
                           int numPts)
通過此變換來變換相對距離向量陣列。使用以下方程式變換相對距離向量,不應用仿射變換矩陣的平移元件:
        [  x' ]   [  m00  m01 (m02) ] [  x  ]   [ m00x + m01y ]
        [  y' ] = [  m10  m11 (m12) ] [  y  ] = [ m10x + m11y ]
        [ (1) ]   [  (0)  (0) ( 1 ) ] [ (1) ]   [     (1)     ]
 
兩個坐標陣列部分可以完全相同,也可以是同一陣列的重疊部分,這對結果的有效性都沒有影響。此方法可確保在變換源坐標之前,它們不會被以前的操作改寫。這些坐標從指示偏移量開始按照 [x0, y0, x1, y1, ..., xn, yn] 的順序存儲在陣列中。

參數:
srcPts - 套件含源距離向量的陣列。每個向量都存儲為一對相對 x, y 坐標。
dstPts - 從其中返回變換距離向量的陣列。每個向量都存儲為一對相對 x, y 坐標。
srcOff - 源陣列中要變換的第一個向量的偏移量
dstOff - 目標陣列中存儲的第一個變換向量位置的偏移量
numPts - 要變換的向量坐標對的數量
從以下版本開始:
1.2

createTransformedShape

public Shape createTransformedShape(Shape pSrc)
返回新的 Shape 物件,它在通過此變換之後,由指定 Shape 的幾何形狀定義。

參數:
pSrc - 要被此變換變換的指定 Shape 物件。
返回:
由變換的 Shape 的幾何形狀所定義的新 Shape 物件;如果 pSrc 為 null,則返回 null。
從以下版本開始:
1.2

toString

public String toString()
返回表示此 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only