2D 变换
线性变换
比例变换

x′=sxy′=sy
比例矩阵

x′y′=s00sxy
比例矩阵(非均匀)

x′y′=sx00syxy
反射矩阵

水平反射
x′=−xy′=y
x′y′=−1001xy
剪切矩阵

在 y=0 时水平移位为 0
在 y=1 时水平移位为 a
垂直移位始终为 0
x′y′=10a1xy
旋转矩阵


Rθ=cosθsinθ−sinθcosθ
相同维度线性变化
x′=ax+byy′=cx+dyx′y′=acbdxyx′=Mx
齐次坐标
添加第三个坐标,有点 (x,y,1)T ,向量 (x,y,0)T ,则有:
- 点-点=向量
- 向量 向量=向量
- 点+向量=点
- 点+点=两点的中点
在齐次坐标中,xyw 都视作x/wy/w1,其中 w=0
仿射变换
仿射变化=线性变换+平移
x′y′=acbd⋅xy+txty
使用齐次坐标
x′y′1=ac0bd0txty1⋅xy1
平移
S(sx,sy)=sx000sy0001
旋转
R(α)=cosαsinα0−sinαcosα0001
变换
R(α)=100010txty1
逆变换
M−1 是矩阵 M 在几何意义上的变换的逆
变换合成
矩阵相乘不满足结合律,例如,先旋转再平移和先平移再旋转所得结果不一样
仿射变换序列A1,A2,A3……
- 通过矩阵乘法组成
- 对性能非常重要
- 预乘 n 个矩阵以获得表示组合变换的单个矩阵
An(...A2(A1(x)))=An...A2A1⋅xy1
分解复杂的变换
如何围绕给定点 c 旋转?
- 将中心平移到原点
- 旋转
- 向后平移

T(c)⋅R(α)⋅T(−c)
3D变换
3D也使用齐次坐标:
- 3D 的点:(x,y,z,1)T
- 3D 的向量:(x,y,z,0)T
通常,(x,y,z,w) 是一个 3D 点 (x/w,y/w,z/w)
3D变换通常使用 4×4 矩阵进行仿射变换
