《计算机图形学原理及实践》学习笔记之第十章

第十章 2D 变换

线性变换:
对于 2D 空间:
T : R 2 − > R 2 T:R^2 -> R^2 T:R2>R2
R 2 R^2 R2 表示二维空间,及一个二维空间向量 或 点经过线性变换仍是二维的
对于 2D 空间 R 2 R^2 R2 中任意两个向量 v、w 和 任意实数 α,线性变换 T 可以表示为 T ( v + α w ) = T ( v ) + α T ( w ) T(v + αw) = T(v) + αT(w) T(v+αw)=T(v)+αT(w)
在线性变换下,直线保持不变,原点保持不动
对于任意线性变换都有 T ( 0 ) = 0 T(0) = 0 T(0)=0 这里的 0 指的是 0向量
平移不属于线性变换(平移的是零向量除外),因为平移使得直线与原点的相对位置改变了(可以理解为原点改变了)。
在这里插入图片描述

矩阵变换:对于任何一个 2x2矩阵 M,函数 v → M v v → Mv vMv 都是一个线性变换,我们称其为矩阵变换
下面给出 五个矩阵变换实例:

矩阵变换实例

1、旋转变换


M 1 = [ c o s 3 0 o − s i n 3 0 o s i n 3 0 o c o s 3 0 o ] M_1 = \begin{bmatrix} cos30^o & -sin30^o \\ sin30^o & cos30^o \end{bmatrix} M1=[cos30osin30osin30ocos30o]
则有:
T 1 : R 2 → R 2 : [ x y ] → M 1 [ x y ] = [ c o s 3 0 o − s i n 3 0 o s i n 3 0 o c o s 3 0 o ] [ x y ] T_1 : R^2 → R^2 : \begin{bmatrix} x \\ y \end{bmatrix} → M_1\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} cos30^o & -sin30^o \\ sin30^o & cos30^o \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} T1:R2R2:[xy]M1[xy]=[cos30osin30osin30ocos30o][xy]
设有 e 1 = [ 1 0 ] e_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix} e1=[10], e 2 = [ 0 1 ] e_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix} e2=[01]
e 1 e_1 e1 变换为 [ c o s 3 0 o s i n 3 0 o ] \begin{bmatrix} cos30^o \\ sin30^o \end{bmatrix} [cos30osin30o] e 2 e_2 e2 变换为 [ − s i n 3 0 o c o s 3 0 o ] \begin{bmatrix} -sin30^o \\ cos30^o \end{bmatrix} [sin30ocos30o]
相当于将 x轴 和 y轴 逆时针旋转 30° 后的两个向量
在这里插入图片描述

在这里插入图片描述

这里 30° 只是一个具体的例子,30°本身不具有特殊性质,这里换成其它度数也没有问题
接下来进行证明:
设单位向量 v v v,一开始其与 x轴 夹角为 α,则有: v = [ c o s α s i n α ] v = \begin{bmatrix} cosα \\ sinα \end{bmatrix} v=[cosαsinα]
这里: x = c o s α x = cosα x=cosα y = s i n α y = sinα y=sinα
那么将 v v v 逆时针旋转 θ 后,则有 v = [ c o s ( α + θ ) s i n ( α + θ ) ] = [ c o s α ∗ c o s θ − s i n α ∗ s i n θ s i n α ∗ c o s θ + c o s α ∗ s i n θ ) ] = [ x ∗ c o s θ − y ∗ s i n θ y ∗ c o s θ + x ∗ s i n θ ) ] v = \begin{bmatrix} cos(α + θ) \\ sin(α + θ)\end{bmatrix} = \begin{bmatrix} cosα * cosθ - sinα * sinθ \\ sinα * cosθ + cosα * sinθ)\end{bmatrix} = \begin{bmatrix} x * cosθ - y * sinθ \\ y * cosθ + x * sinθ)\end{bmatrix} v=[cos(α+θ)sin(α+θ)]=[cosαcosθsinαsinθsinαcosθ+cosαsinθ)]=[xcosθysinθycosθ+xsinθ)]
这一结果与上面的矩阵变换相同
在这里插入图片描述

2、非均匀缩放(当然也可以均匀缩放)


M 2 = [ 3 0 0 2 ] M_2 = \begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix} M2=[3002]
则有:
T 2 : R 2 → R 2 : [ x y ] → M 2 [ x y ] = [ 3 0 0 2 ] [ x y ] = [ 3 x 2 y ] T_2:R^2→R^2: \begin{bmatrix} x \\ y \end{bmatrix} →M_2\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 3x \\ 2y \end{bmatrix} T2:R2R2:[xy]M2[xy]=[3002][xy]=[3x2y]
显然,这将物体在 x方向 拉伸了 3倍,在 y方向 拉伸了 2倍
在这里插入图片描述

在这里插入图片描述

如果我们取矩阵为 [ − 1 0 0 − 1 ] \begin{bmatrix} -1 & 0 \\ 0 & -1 \end{bmatrix} [1001],就相当于是对物体逆时针旋转了180°,该缩放矩阵 与 逆时针旋转180°的旋转矩阵是一样的

3、错切

M 3 = [ 1 2 0 1 ] M_3 = \begin{bmatrix} 1 & 2 \\ 0 & 1 \end{bmatrix} M3=[1021]
则有:
T 3 : R 2 → R 2 : [ x y ] → M 3 [ x y ] = [ 1 2 0 1 ] [ x y ] = [ x + 2 y y ] T_3:R^2→R^2: \begin{bmatrix} x \\ y \end{bmatrix} →M_3\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 1 & 2 \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} x + 2y \\ y \end{bmatrix} T3:R2R2:[xy]M3[xy]=[1021][xy]=[x+2yy]
在 T_3 变换下,物体各点的高度不变,但 x轴方向进行了平移移动
在这里插入图片描述

在这里插入图片描述

4、一般变换

M 4 = [ 1 − 1 2 2 ] M_4 = \begin{bmatrix} 1 & -1 \\ 2 & 2 \end{bmatrix} M4=[1212]
则有:
T 4 : R 2 → R 2 : [ x y ] → M 4 [ x y ] = [ 1 − 1 2 2 ] [ x y ] T_4:R^2→R^2: \begin{bmatrix} x \\ y \end{bmatrix} →M_4\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 1 & -1 \\ 2 & 2 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix} T4:R2R2:[xy]M4[xy]=[1212][xy]
正如 一般变换 一样,这是一种"随意的"线性变换。当然 它说它是随意的,实际上它可不是随便变换的啊,一般变换实际上是上面三种变换的组合
在这里插入图片描述

5、退化(或奇异)变换

M 5 = [ 1 − 1 2 − 2 ] M_5 = \begin{bmatrix} 1 & -1 \\ 2 & -2 \end{bmatrix} M5=[1212]
则有:
T 5 : R 2 → R 2 : [ x y ] → M 5 [ x y ] = [ 1 − 1 2 − 2 ] [ x y ] = [ x − y 2 x − 2 y ] T_5:R^2→R^2: \begin{bmatrix} x \\ y \end{bmatrix} →M_5\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 1 & -1 \\ 2 & -2 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} x - y \\ 2x - 2y \end{bmatrix} T5:R2R2:[xy]M5[xy]=[1212][xy]=[xy2x2y]
可以发现,变换后的坐标满足 y = 2 x y = 2x y=2x 这一条件。没错,物体上的点都被变换到了一条线上。即 2D 面被变为了 1D的线
在这里插入图片描述

在这里插入图片描述

关于变换的重要事实

给定一个线性变换 T,就有一个与之对应的矩阵 M

函数(变换)的组合 等于 变换矩阵相乘

设 M、K 为 2x2矩阵,则它们定义了相关变换 T M T_M TM T K T_K TK,则将这两个变换组合起来,例如先进行变换 T M T_M TM 然后进行变换 T K T_K TK 就有:
T M ⋅ T K : R 2 → R 2 : x → T M ( T K ( x ) ) = T M ( K x ) = M ( K x ) = ( M K ) x = T M K ( x ) \begin{aligned} T_M \cdot T_K : R^2 → R^2 : x → T_M(T_K(x)) = T_M(Kx) \\ = M(Kx) \\ = (MK)x \\ = T_{MK}(x) \end{aligned} TMTK:R

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值