首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java AffineTransform 仿射變換:平移、旋轉、縮放與剪切

     編輯:Java 相關知識

AffineTransform 表示 2D 仿射變換,以 3x3 矩陣存儲,保持直線與平行關係。常用靜態工廠方法創建基礎變換:

  • getTranslateInstance(tx, ty) 平移
  • getRotateInstance(theta) 繞原點旋轉 (弧度)
  • getRotateInstance(theta, x, y) 繞指定點旋轉
  • getScaleInstance(sx, sy) 縮放
  • getShearInstance(shx, shy) 剪切 (傾斜)

變換可鏈式組合:transform.concatenate(another) (先應用 another 再應用 transform)。Graphics2D 通過 setTransform 或 transform 應用於繪圖上下文。

AffineTransform at = new AffineTransform();
at.translate(100, 100); // 先平移
at.rotate(Math.PI / 4); // 再旋轉 45 度
at.scale(2, 2); // 最後縮放
g2d.setTransform(at);
g2d.fillRect(-25, -25, 50, 50); // 繪製中心在原點的正方形

順序影響結果:平移→旋轉 ≠ 旋轉→平移。理解矩陣乘法順序 (右乘) 對正確組合變換至關重要。可用 createInverse() 獲取逆變換實現座標映射 (如屏幕座標轉模型座標)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved