← 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
移动量可以加倍

由于每个引擎和数学库在向量放置在行还是列上方面有所不同,因此必须在文档中检查代码的乘法顺序。 采用什么坐标系以及以什么顺序应用比矩阵本身更重要。