Part 1 变换与齐次坐标
约 1007 字大约 3 分钟
2025-03-11
本篇在二维空间推导大部分结论,三维空间同理。
1 线性变换
线性变换包括缩放、切变和旋转三种基本变换。因其新坐标是原坐标(x,y)的线性组合,都可被写成矩阵乘法的形式。
缩放变换,其中sx和sy为缩放因子:
(x′y′)=(sx00sy)(xy)
切变变换,可以想象成一个矩形框架被拉伸成平行四边形:
(x′y′)=(10a1)(xy)
旋转变换,其中θ为旋转角度(约定为逆时针):
(x′y′)=(cosθsinθ−sinθcosθ)(xy)
2 平移变换
平移变换不是线性变换,因为它不能写成矩阵乘法的形式:
(x′y′)=(xy)+(txty)
3 变换组合与逆变换
3.1 变换组合
若对图形做多个连续线性变换,则应该按照变换的顺序依次左乘原坐标,顺序不能颠倒。因为矩阵乘法不满足交换律。
如,对原坐标进行先切变在旋转和先旋转再切变得到的结果的不同的。
(cosθsinθ−sinθcosθ)(10a1)(xy)=(10a1)(cosθsinθ−sinθcosθ)(xy)
同样,线性变换和平移的组合也有顺序之分。
如,对原坐标进行先旋转再平移和先平移再旋转得到的结果是不同的。
(cosθsinθ−sinθcosθ)(xy)+(txty)=(cosθsinθ−sinθcosθ)((xy)+(txty))
2.2 逆变换
要将一个经过线性变换后的坐标还原,只需要求解其逆矩阵。
(x′y′)=M(xy)
(xy)=M−1(x′y′)
3 齐次坐标与仿射变换
上面提到,平移并非线性变换,因其新坐标不是原坐标的线性组合。这给实际应用带来了不便。
为了把平移变换纳入线性变换中,引入齐次坐标。
令一个二维点(x,y)T的坐标为:
(x,y,1)T
而令一个平面向量(x,y)T的坐标为:
(x,y,0)T
这种形式的坐标称为齐次坐标。注意,齐次坐标(x,y,w)T是表示的是一个平面点或平面向量的坐标,而非三维。
在齐次坐标下,平移变换可以被简单地表达为:
x′y′w′=100010txty1xy1=x+txy+ty1
在齐次坐标下,求由点A=(xa,ya)T指向点B=(xb,yb)T的向量c依然可以被表示为:
c=B−A=xbyb1−xaya1=xb−xayb−ya0
类比可得:
- 两个向量之和为一个向量;
- 一个点和一个向量之和为一个点;
规定:如果一个齐次坐标为(x,y,w)T,其中w=0,则这个坐标与(wx,wy,1)T等价。
因此,两个点之和为这两个点的中点:
xaya1+xbyb1=xa+xbya+yb2=2xa+xb2ya+yb1
引入齐次坐标后,变换
(x′y′)=(acbd)(xy)+(txty)
可以写成:
x′y′1=ac0bd0txty1xy1
称之为仿射变换。