← SEARCHABLE ARCHIVE
Mathematics · 2026-07-06

使用矩陣轉換位置、旋轉和縮放

將遊戲物件的變換表示為矩陣

INTERACTIVE READING MODE →

該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。

遊戲物件的位置、旋轉和大小可以用矩陣表示。 我們先檢查一下基於二維原點的變換。

尺寸換算

[ sx  0 ] [ x ] = [ sx * x ]
[ 0  sy ] [ y ]   [ sy * y ]

X 軸是sx,Y軸為sy增加多達 如果兩者之一為負,則基於該軸翻轉。

旋轉變換

[ cosθ  -sinθ ] [ x ]
[ sinθ   cosθ ] [ y ]

此矩陣將向量繞原點旋轉 θ。 請注意不要將接收 Degree 的函數與接收 Radian 的函數混合在一起。

為什麼運動是3×3?

僅使用 2×2 矩陣無法將原點移到另一個位置。 所以在二維座標中w = 1使用齊次座標並新增 。

[ 1 0 tx ] [ x ]   [ x + tx ]
[ 0 1 ty ] [ y ] = [ y + ty ]
[ 0 0  1 ] [ 1 ]   [   1    ]

在3D中,同樣的原因使用4×4矩陣。

訂單變更結果

將物件的大小加倍然後向右移動 10 度與先移動物件然後將整個座標加倍所得到的結果不同。

Scale → Translate
位置移動 10

Translate → Scale
移動量可以加倍

由於每個引擎和數學庫在向量放置在行還是列上方面有所不同,因此必須在文件中檢查程式碼的乘法順序。 採用什麼座標係以及以什麼順序應用比矩陣本身更重要。