科数网
首页
题库
试卷
学习
VIP
你好
游客,
登录
注册
在线学习
线性代数
第二篇 矩阵
平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标
最后
更新:
2025-03-15 08:39
查看:
146
次
反馈
同步训练
平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标
> 阅读本文前,最好理解了 [矩阵乘法](https://kb.kmath.cn/kbase/detail.aspx?id=1380) 在计算机图形学里,大量应用矩阵,这里介绍几个常见的变换。 ## 图形缩放 缩放变换中,如果一个图片以原点 $(0,0)$ 为中心缩放 $s$ 倍。那么点 $(x, y)$ 变换后数学形式可以表示为 $$ \begin{aligned} & x^{\prime}=s x \\ & y^{\prime}=s y \end{aligned} $$ 写成矩阵形式为: $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} s_x & 0 \\ 0 & s_y \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ 当然,我们也可以给 x 轴和 y 轴不同的缩放倍数 $s x$ 和 $s y$ 。在非均匀情况下,缩放变换的矩阵形式为 $$ \boxed{ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} s_x & 0 \\ 0 & s_y \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] ...(\text{图像缩放公式}) } $$ 下图展示了图像缩放示意图 {width=600px} `例` 下面矩阵乘法显示一个向量$[1,1]$ 乘以一个矩阵后,变成 $[2,1]$ **一个向量左乘对角阵相当于对向量各维坐标值进行缩放,缩放的比例就是对角阵元素的值**。当然了,这里的向量缩放这里也可以看成坐标轴进行缩放,两者是等价的 $$ \left[\begin{array}{ll} 2 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} 1 \\ 1 \end{array}\right]=\left[\begin{array}{l} 2 \\ 1 \end{array}\right] $$ 从几何意义上看,向量从$\vec{AB}$ 变成$\vec{AC}$ 你也可以从物理上理解,一个物体原先速度为$(1,1)$,他分解为最平速度为1,和垂直速度1,乘以矩阵后,水平速度变成了2,而垂直速度仍然是1. {width=300px} ## 图像旋转 我们默认旋转变换(Rotate)都绕着原点$ (0, 0)$ 旋转,并且默认旋转方向为逆时针方向(逆时针方向旋转角度值为正,顺时针旋转角度值为负),当一个点 $(x,y)$绕着原点$(0,0)$旋转$\theta$角时,变换矩阵可以表示为: $$ \boxed { \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] ...(\text{图像旋转公式}) } $$ ### 证明 我们在直角坐标系中绘制一个边长为 1 的正方形,点 $A$ 坐标为 $(1,0)$ ,点 $B$ 坐标为 $(0,1)$ 。正方形沿着原点 $(0,0)$ 旋转的角度为 $\theta$ 角 参考下图。 {width=500px} 我们设原坐标里任一点$(x,y)$ 经过旋转后,在新坐标为$(x',y')$,现在找一下新旧坐标系下“点”的关系。 $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} A & B \\ C & D \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ 接下来去两个特殊点,代入点 $A$ 的的值 $(1,0)$ 可以得到: $$ \left[\begin{array}{c} \cos \theta \\ \sin \theta \end{array}\right]=\left[\begin{array}{ll} A & B \\ C & D \end{array}\right]\left[\begin{array}{l} 1 \\ 0 \end{array}\right] $$ 解方程得到: $$ \begin{aligned} & A=\cos \theta \\ & C=\sin \theta \end{aligned} $$ 代人点 $B$ 的的值 $(0,1)$ 可以得到: $$ \left[\begin{array}{c} -\sin \theta \\ \cos \theta \end{array}\right]=\left[\begin{array}{ll} A & B \\ C & D \end{array}\right]\left[\begin{array}{l} 0 \\ 1 \end{array}\right] $$ 解方程得到: $$ \begin{aligned} & B=-\sin \theta \\ & D=\cos \theta \end{aligned} $$ 因此,坐标旋转公式为 $$ A_{\text {rotate }}=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right] $$ 下图显示了一个图形旋转 {width=600px} `例` 考虑$\theta=45^{\circ}$ 时, $\cos \theta=\sin \theta= \frac{\sqrt{2}}{2}$ ,此时旋转矩阵$A$为 $$ \boldsymbol{A}=\left[\begin{array}{cc} \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \end{array}\right] $$ 这意味着任何一个向量乘以该矩阵将旋转$45^{\circ}$ ## 矩阵的旋转与缩放 在一维里,一个向量乘以$-1$表示逆时针旋转$180$度,在二维复平面里,引入了虚数单位$i$,当一个数乘以$i$后,相当于逆时针旋转$90$度。由此,可以对其扩展。 一个矩阵乘以一个向量, 一般将会对向量的几何图形进行旋转和伸缩变化。常见的一个例子就是旋转矩阵, 旋转矩阵只对向量进行旋转变化而没有伸缩变化。例如, 二阶旋转矩阵 $\boldsymbol{A}$ : $$ \boldsymbol{A}=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right] $$ 首先看一下旋转矩阵 $\boldsymbol{A}$ 对单位向量 $\boldsymbol{i}=(1,0), \boldsymbol{j}=(0,1)$ 的作用效果: $$ \begin{gathered} \boldsymbol{A i}=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right]\binom{1}{0}=\binom{\cos \theta}{\sin \theta} \\ \end{gathered} $$ $$\quad$$ $$ \begin{gathered} \boldsymbol{A j}=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right]\binom{0}{1}=\binom{-\sin \theta}{\cos \theta}=\binom{\cos (\theta+\pi / 2)}{\sin (\theta+\pi / 2)} \end{gathered} $$ 再结合下图, 可以看出, 旋转矩阵对单位向量 $\boldsymbol{i} 、 \boldsymbol{j}$ 确实分别逆时针旋转了一个 $\theta$ 角度。旋转后的两个向量 $A i$ 和 $A j$ 保持长度不变和夹角不变。或者说,向量 $i \rightarrow A i$ 长度不变,角度逆时针增加了 $\theta$ 度;向量 $\boldsymbol{j} \rightarrow \boldsymbol{A} \boldsymbol{j}$ 长度不变, 同时同向角度增加了 $\theta$ 度。 {width=600px} 然后, 我们考察旋转矩阵 $\boldsymbol{A}$ 把任意向量 $\boldsymbol{c}$ 变换到 $\boldsymbol{A} \boldsymbol{c}$ 的情形。对于任意向量 $\boldsymbol{c}$, 我们知道,可以分解为单位向量的线性表示: $$ \boldsymbol{c}=\binom{c_1}{c_2}=c_1\binom{1}{0}+c_2\binom{0}{1}=c_1 \boldsymbol{i}+c_2 \boldsymbol{j} $$ 那么, 旋转矩阵作用于向量 $\boldsymbol{c}$ 的式子为 $$ \boldsymbol{A} \boldsymbol{c}=\boldsymbol{A}\left(c_1\binom{1}{0}+c_2\binom{0}{1}\right)=c_1 \boldsymbol{A}\binom{1}{0}+c_2 \boldsymbol{A}\binom{0}{1}=c_1 \boldsymbol{A} \boldsymbol{i}+c_2 \boldsymbol{A} \boldsymbol{j} $$ 对比上式 ,上面提到,一个向量乘以旋转矩阵$A$,长度不变,方向选择$\theta$角度,所以 分向量 $c_1 i \rightarrow c_1 A i$ 长度不变, 角度逆时针增加了 $\theta$ 度; 分向量 $c_2 \boldsymbol{j} \rightarrow c_2 \boldsymbol{A} \boldsymbol{j}$ 长度不变, 同时同向角度增加了 $\theta$ 度。那么, 向量的和 $c_1 \boldsymbol{i}+c_2 \boldsymbol{j} \rightarrow c_1 \boldsymbol{A} \boldsymbol{i}+c_2 \boldsymbol{A} \boldsymbol{j}$ 长度不变, 角度逆时针增加了 $\theta$ 度, 即 $c \rightarrow A c$ 长度不变, 角度逆时针增加了 $\theta$ 度, 如下图所示。 {width=600px} > 因此,$\boldsymbol{A B = C}$ 的一般几何意义, 就是矩阵 $\boldsymbol{A}$ 把矩阵 $\boldsymbol{B}$ 的数个列向量构成的几何图形进行**旋转、缩放、镜像**等变换, 得到数个新向量, 这些新向量作为列向量组成一个新的矩阵 $\boldsymbol{C}$, 这个新矩阵 $\boldsymbol{C}$ 会构成新的几何图形。 ## 计算机图形学 计算机图形是在计算机屏幕上显示或活动的图像.计算机图形学的应用广泛,发展迅速.例如,计算机辅助设计(CAD)是许多工程技术的组成部分之一,在最简单的二维图形符号中,字母用于在屏幕上做标记.某些字母作为线框对象存储,其他有弯曲部分的字母还要将曲线的数学公式也存储进去. `例` 图2-15中的大写字母 N 由 8 个点组成,计算机里存储这8个点的坐标到矩阵$D$中.(只要存储这8个点,在计算机渲染时,把对应点自动连接起来,就显示出了字母$N$) {width=300px} {width=550px} 当描述这些对象的顶点被变换以后,他的图像也就跟着变换。 `例` 给定 $A=\left[\begin{array}{cc}1 & 0.25 \\ 0 & 1\end{array}\right]$ 描述剪切变换 $x \mapsto A x$ 对上例 中字母 N 的作用. 解 由矩阵乘法的定义,乘积 $A D$ 的各列给出字母 N 各顶点的像. {width=550px} 变换过的顶点画在图 2-16,同时还画上相应于原来图形中连线的线段. 图 2-16 中斜体的 N 看来有些太宽,为此,我们可以用倍乘变换使它变窄. {width=300px} `例` 先作如上例的剪切变换,然后再把 $x$ 坐标乘以一个因子 0.75 ,求此复合变换的矩阵. 解 把每个点的 $x$ 坐标乘以 0.75 的矩阵为 $$ S=\left[\begin{array}{ll} 0.75 & 0 \\ 0 & 1 \end{array}\right] $$ 所以复合变换的矩阵是 $$ S A=\left[\begin{array}{ll} 0.75 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{ll} 1 & 0.25 \\ 0 & 1 \end{array}\right]=\left[\begin{array}{ll} 0.75 & 0.1875 \\ 0 & 1 \end{array}\right] $$ 复合变换的结果如图 2-17 所示. {width=300px} ### 总结 通过上面的例子,我们有2个小小结论: ①微观上看,$1-8$个点可以看成八向量,乘以矩阵,相当于矩阵让这8个向量进行变形(旋转,缩放)。 ②宏观上看,$1-8$个点可以看成组成了一个图形,乘以矩阵,相当于矩阵让图形进行了变换(选择,缩放) ## 延伸阅读 ### 反射变换 反射变换(Reflection)指的是图片对着 x 轴或者 y 轴做对称变换。对于图片上的点 $(x, y)$ 在经过 x 轴的对称反射变换后,数学形式可以表示为: $$ \begin{gathered} x^{\prime}=-x \\ y^{\prime}=y \end{gathered} $$ 表示成矩阵形式为: $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} -1 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ 同理可以得到 y 轴对称反射变换后的变换矩阵为: $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} 1 & 0 \\ 0 & -1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ 沿原点反射变换的变换矩阵为: $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{cc} -1 & 0 \\ 0 & -1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ ### 切变变换 切变变换(Shear),指的是在物理学上指的是两个距离很近,大小相等,方向相反的平行力作用于同一物体上所引起的形变。使用示意图可以更直观的去表示什么是切变。如图2.2所示,是图片在 x 轴方向上发生了切变。从图中我们可以看出所有点在 y 轴上的坐标不变,在 x 轴上的坐标满足:$y=0$ 上的点, x 轴坐标不发生变化;$y=1$ 上的点水平方向上移动了 $a$ 个长度。因此对于任意一个点来说,水平方向上移动长度为 $a y$ 。 {width=500px} 切变的矩阵变换可以写作: $$ \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} 1 & a \\ 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right] $$ ### 线性变换 对于任何一种变换如果可以写作: $$ \begin{aligned} & x^{\prime}=a x+b y \\ & y^{\prime}=c x+d y \end{aligned} $$ 矩阵形式可以表示为: $$ \begin{array}{r} {\left[\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right]=\left[\begin{array}{ll} a & b \\ c & d \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]} \\ x^{\prime}=M x \end{array} $$ 那么我们认为这种变换是线性变换(Linear transformation)。 ## 齐次坐标 ### 平移变换 平移变换(Translation)相比于以上的线性变换有特殊的地方。平移变换的数学形式为:
免费注册看余下 50%
非VIP会员每天15篇文章,开通VIP 无限制查看
上一篇:
雅可比矩阵及其行列式的几何意义
下一篇:
过渡矩阵
本文对您是否有用?
有用
(
0
)
无用
(
0
)
更多
学习首页
数学试卷
同步训练
投稿
题库下载
会议预约系统
数学公式
关于
科数网是专业专业的数学网站 版权所有 本站部分教程采用AI辅助生成,请学习时自行鉴别
如果页面无法显示请联系 18155261033 或 983506039@qq.com