1. 二维线性变换
对向量 [xy] 进行线性变换
[a11a21a12a22][xy]=[a11x+a12ya21x+a22y]=[x′y′]
1.1 缩放(Scaling)
缩放变换是一种沿着 坐标轴作用 的变换
scale(sx,sy)=[sx00sy]
除了 [00] 保持不变,其他所有点变为 [sxxsyy]
第一种情况:x 方向和 y 方向均缩小0.5倍

[x′y′]=[0.5000.5][xy]
第二种情况:x 方向缩小 0.5 倍, y 方向不变

[x′y′]=[0.5001][xy]
1.2 反射(Reflection)
进行一个镜像的变换
x′=−xy′=y
沿着 y 轴进行翻转操作

[x′y′]=[−1001][xy]
1.3 切变(Shearing)
把物体的其中一边固定,然后拉动对应的另外一边
shear−x(s)=[10s1]shear−y(s)=[1s01]
沿着 x 轴方向拉动 a 距离

[x′y′]=[10a1][xy]
NOTE :
- 水平方向:x′=x+ay
- y = 0 的部分不变化
- y = 1 的部分右移 a 距离
- 竖直方向:y′=y
1.4 旋转
默认规定:
- 绕原点 (0,0) 进行旋转;
- 旋转方向为逆时针。

记为;
rotate(ϕ)=[cosϕsinϕ−sinϕcosϕ]
可知:
⎩⎨⎧x′=xcosϕ−ysinϕy′=ycosϕ+xsinϕ
即:
[x′y′]=[cosϕsinϕ−sinϕcosϕ][xy]
绕原点逆时针旋转 45°

⎣⎢⎢⎢⎡2222−2222⎦⎥⎥⎥⎤
1.5 位移

{x′=x+txy′=y+ty
但是当存在位移变换时,便无法仅靠一个二维矩阵的变换来进行表示:
[x′y′]=[acbd][xy]+[txty]
1.5.1 齐次坐标
增加一个维度,提供更多的信息,将二维向量区分为“点”和“位移向量”:
- 2D−point=(x,y,1)T
- 2D−vector=(x,y,0)T
使用的 1 和 0 是有实际意义的:
- vector + vector = vector(三角形法则:向量的叠加)
- point - point = vector(生成从第二个点指向第一个点的向量)
- point + vector = point(点进行位移)
- point + point = 这2个点的中点
可以通过三维空间中的一个点集去表示二维空间中的一个点
- 这个点集即是“视点”出发,穿过二维空间中“可视平面”上的该点的射线
- 射线点集 ⎣⎡xyw⎦⎤ 表示“可视平面”上的点 ⎣⎡x/wy/w1⎦⎤ ,w=0
此时可以使用矩阵变换去表示一个位移变换
⎣⎡x′y′w′⎦⎤=⎣⎡100010txty1⎦⎤⋅⎣⎡xy1⎦⎤=⎣⎡x+txy+ty1⎦⎤
⎣⎡x′y′w′⎦⎤=⎣⎡100010txty1⎦⎤⋅⎣⎡xy0⎦⎤=⎣⎡xy0⎦⎤
1.5.2 仿射变换
“线性变换” + “位移变换”
[x′y′]=[acbd]⋅[xy]+[txty]
使用齐次坐标表示仿射变换:
⎣⎡x′y′1⎦⎤=⎣⎡ac0bd0txty1⎦⎤⋅⎣⎡xy1⎦⎤
NOTE:
- 仅在仿射变换下最后一排是 (0,0,1)
1.6 变换的组合
- 一个复杂变换可以拆分成若干个基础变换
- 变换顺序需要注意 —— 矩阵的乘法不满足交换律
R45⋅T(1,0)=T(1,0)⋅R45

⎣⎡x′y′1⎦⎤=R45⋅T(1,0)⋅⎣⎡xy1⎦⎤

⎣⎡x′y′1⎦⎤=T(1,0)⋅R45⋅⎣⎡xy1⎦⎤
组合应用若干变换 A1,A2,A3,…
An(…A2(A1(x)))=An…A2⋅A1⋅⎣⎡xy1⎦⎤
NOTE :
矩阵有结合律,可以用一个矩阵表示这一系列的复合变换
2. 三维线性变换
2.1 仿射变换
-
3D−point=(x,y,z,1)T
-
3D−vector=(x,y,z,0)T
-
射线点集 ⎣⎢⎢⎡xyzw⎦⎥⎥⎤ 表示“可视三维平面”上的点 ⎣⎢⎢⎡x/wy/wz/w1⎦⎥⎥⎤ ,w=0
使用四维矩阵表示三维空间中的仿射变换
⎣⎢⎢⎡x′y′z′1⎦⎥⎥⎤=⎣⎢⎢⎡adg0beh0cfi0txtytz1⎦⎥⎥⎤⋅⎣⎢⎢⎡xyz1⎦⎥⎥⎤
2.2 缩放变换
Scale(sx,sy,sz)=⎣⎢⎢⎡sx0000sy0000sz00001⎦⎥⎥⎤
2.3 位移变换
T(tx,ty,tz)=⎣⎢⎢⎡100001000010txtytz1⎦⎥⎥⎤
2.4 旋转变换

Rx(α)=⎣⎢⎢⎡10000cosαsinα00−sinαcosα00001⎦⎥⎥⎤
Ry(α)=⎣⎢⎢⎡cosα0−sinα00100sinα0cosα00001⎦⎥⎥⎤
Rz(α)=⎣⎢⎢⎡cosαsinα00−sinαcosα0000100001⎦⎥⎥⎤
2.4.1 欧拉角
Rxyz(α,β,γ)=Rx(α)Ry(β)Rz(γ)
- 使用三个角:roll , pitch , yaw

2.4.2 罗德里格斯(Rodrigues)旋转方程
绕着某个过原点的轴 n 旋转 α 角度 :
R(n,α)=cos(α)I+(1−cos(α))nnT+sin(α)⎝⎛0nz−ny−nz0nxny−nx0⎠⎞
式中的矩阵形式类似叉乘矩阵