参考资料:

 

1 线性变换

在二维平面中,图形变换后坐标满足以下关系:

x=ax+byy=cx+dy

同时,该关系可以表示为矩阵形式:

(xy)=(abcd)(xy)

那么,我们称这种变化为线性变换

 

线性变换包括缩放、反射、切变、旋转。

 

1.1 缩放

 

上图表示将左侧图形沿着x和y方向缩放相同的0.5倍(称之为均匀缩放),那么缩放后的坐标与原坐标关系为:

x=0.5xy=0.5y

我们可以用矩阵来表示这个关系:

(xy)=(0.5000.5)(xy)

上图表示将左侧图形沿着x和y方向分别缩放0.5倍和1被(称之为非均匀缩放),那么缩放后的坐标与原坐标关系为:

x=0.5xy=y     

我们可以用矩阵来表示这个关系:

(xy)=(0.5001)(xy)

综上两个示例,可以得到在二维平面中,如果沿着x和y方向分别缩放SxSy倍,那么缩放后的坐标与原坐标关系为:

x=sxxy=syy

用矩阵表示为:

(xy)=(sx00sy)(xy)

1.2 反射(对称)

上图表示将左侧图形以y方向做对称操作,那么对称后的坐标与原坐标关系为:

x=xy=y   

可以用矩阵来表示为:

(xy)=(1001)(xy)

1.3 切变

上图表示将左侧图形底部固定,沿着x方向拉伸右上角的点,使其移动a个单位(称之为切变),那么切变后的坐标与原坐标关系为:

x=x+ayy=y         

可以用矩阵来表示为:

(xy)=(1a01)(xy)

1.4 旋转

上图表示将左侧以原点为中心,逆时针旋转 θ 度,欲求旋转后坐标和原坐标的关系,我们可以选取旋转后的图形中的2个特殊点a个b来进行推导,根据线性变换的矩阵形式

(xy)=(abcd)(xy)

我们将 aa 坐标带入到上面的矩阵中,得到

(cosθsinθ)=(abcd)(10)

根据矩阵乘法,得到

cosθ=1a+0bsinθ=1c+0d

a=cosθc=sinθ

同理,将 bb 坐标带入到矩阵中可求得

b=sinθd=cosθ

从而得到旋转变换的矩阵表示为:

(xy)=(cosθsinθsinθcosθ)(xy)

 

2 平移变换

上图表示将左侧图形沿 xy 方向分别移动 txty 的距离,变换后坐标关系为:

x=x+txy=y+ty

而通过了解《齐次坐标》,我们知道可以用如下矩阵形式表示:

(xy1)=(10tx01ty001)(xy1)

3 逆变换

上图表示左上角图形经过 M 变换得到右上角图形,右上角图形在经过 M1 变换得到原图形,那么我们称 M1M 的逆变换,两者表示的矩阵满足:

MM1=I         (I)

M1 又称为 M 的逆矩阵。

 

4 仿射变换

仿射变换由一次线性变换和一次平移变换组成,用矩阵形式表示为:

(xy)=(abcd)(xy)+(txty)

引入齐次坐标后矩阵表示为:

(xy1)=(abtxcdty001)(xy1)

5 组合变换

在二维空间中,任何复杂的变换都可以分解成一个个的线性变换或者平移变换,以下图为例:

将最左侧图形以图中标记的点为中心,逆时针旋转一定的角度得到最右侧图形,理解起来很简单,但是纵观上文中讲解的所有变换,发现其不属于任何一种,我们可以称之为一个复杂变换。

对于复杂变换,我们可以将其分解为多个简单变换的组合:最左侧图形先做平移变换 T(c),再做旋转变换 R(α),最后做平移变换 T(c) 得到最右侧图形。

用矩阵表示为:

T(c)R(α)T(c)

注意,矩阵相乘的顺序为从右到左,对应变换操作的从前到后,由于矩阵相乘不满足交换律,所以矩阵的左右位置是固定不可变的,除非变换操作的顺序发生变化。