二维变换
旋转
在二维 XY 坐标系中,向量(x, y)基于原点逆时针旋转 θ 角度至向量(x', y'),其变换矩阵为
[x′y′]=[xy][cosθ−sinθsinθcosθ]
推导如下:
x2+y2=x′2+y′2
sinα=x2+y2ycosα=x2+y2x
sin(α+θ)=sinαcosθ+cosαsinθ=cosθx2+y2y+sinαx2+y2x=x′2+y′2y′
⇒y′=xsinθ+ycosθ⇒x′=xcosθ−ysinθ⇒[x′y′]=[xy][cosθ−sinθsinθcosθ]
缩放
在二维 XY 坐标系中,向量(x, y)进行缩放n倍得到向量(nx, ny),其变换矩阵为
[nxny]=[xy][n00n]
平移
在二维坐标系中,向量(x, y)进行平移得到(x+m, y+n),需要引入齐次坐标得到变换矩阵,其变换矩阵为
[x+my+n1]=[xy1]10m01n001
线性变换
在二维 XY 坐标系中,向量的变换都可由旋转、缩放和平移进行线性组合变换,通过逆矩阵可以进行还原变换
TS=SM1M2...Mn=TMn−1Mn−1−1...M1−1
单位矩阵的逆矩阵为其转置矩阵
三维变换
将三维变换转换为二维变换
旋转
分别围绕 x/y/z 轴 旋转
[xyz1]=[x′y′z′1]cosθ−sinθ00sinθcosθ0000100001
[xyz1]=[x′y′z′1]10000cosθ−sinθ00sinθcosθ00001
[xyz1]=[x′y′z′1]−sinθ0cosθ00100cosθ0sinθ00001
- 绕经过原点的直线旋转角度θ,如图,旋转轴可通过单位向量获取相关值
1.将旋转轴 OA 旋转至 YOZ 平面内,即 OA 绕 y 轴 旋转角度 α ,变换矩阵如下
Ry(α)=−sinα0cosα00100cosα0sinα00001
2.将旋转轴 OA 旋转至 Z 轴上,即 OA 绕 x 轴 旋转角度 β ,变换矩阵如下
Rx(β)=cosβ−sinβ00sinβcosβ0000100001
3.物体绕 z 轴 旋转角度 θ ,变换矩阵如下
Rz(θ)=cosθ−sinθ00sinθcosθ0000100001
4.物体还原步骤 2 和步骤 1 的变换,即进行逆矩阵变换,所以最终变换矩阵如下
R(θ)=Ry(α)Rx(β)Rz(θ)Rx(−β)Ry(−α)=Ry(α)Rx(β)Rz(θ)Rx−1(β)Ry−1(α)=Ry(α)Rx(β)Rz(θ)RxT(β)RyT(α)
缩放
缩放变换矩阵如下
Z(n)=n0000n0000n00001
平移
平移变换矩阵如下
T(a,b,c)=100a010b001c0001
在三维坐标系中,任何变换都可通过上述三种变换进行组合