欢迎来到矩阵变换的世界!
你好!本章将带你进入几何与矩阵力量交汇的领域。如果“变换(transformation)”这个术语听起来很复杂,别担心——它其实就是指图形的移动或改变。使用 2x2 矩阵,我们只需通过简单的乘法,就能完成旋转、反射等多种操作。
为什么这很重要? 在计算机图形学、工程学和物理学等领域,矩阵是计算物体如何在空间中移动、缩放或变形的基础工具。掌握了这一章,你不仅是在学习数学,更是获得了一个解决几何问题的强大代数工具!
1. 基础知识:映射点
1.1 什么是变换矩阵?
变换矩阵(transformation matrix) \(\mathbf{M}\) 是一个 2x2 矩阵。当它与一个位置向量(即点)相乘时,会将其变换为一个新的位置向量(即像点)。
我们将坐标为 \((x, y)\) 的点 \(P\) 表示为列向量 \(\mathbf{p} = \begin{pmatrix} x \\ y \end{pmatrix}\)。
变换过程始终遵循:
$$ \mathbf{M} \mathbf{p} = \mathbf{p}' $$
其中 \(\mathbf{p}'\) 是变换后的像点,坐标为 \((x', y')\)。
简单来说: 把矩阵 \(\mathbf{M}\) 想象成一台小型机器。你把原始点的坐标放进去,机器就会吐出变换后新点的坐标!
1.2 映射的步骤示例
设变换矩阵为 \( \mathbf{T} = \begin{pmatrix} 2 & 1 \\ 0 & 3 \end{pmatrix} \)。求点 \( A(4, -1) \) 的像。
- 将点 A 写成列向量:\( \mathbf{a} = \begin{pmatrix} 4 \\ -1 \end{pmatrix} \)。
- 进行矩阵乘法: $$ \mathbf{a}' = \mathbf{T} \mathbf{a} = \begin{pmatrix} 2 & 1 \\ 0 & 3 \end{pmatrix} \begin{pmatrix} 4 \\ -1 \end{pmatrix} $$
- 计算结果向量: $$ \mathbf{a}' = \begin{pmatrix} (2)(4) + (1)(-1) \\ (0)(4) + (3)(-1) \end{pmatrix} = \begin{pmatrix} 8 - 1 \\ 0 - 3 \end{pmatrix} = \begin{pmatrix} 7 \\ -3 \end{pmatrix} $$
点 \(A(4, -1)\) 的像为 \(A'(7, -3)\)。
关键点 1:矩阵乘法的顺序很重要!
一定要确保变换矩阵乘以列向量时,矩阵在左侧:即 \( \mathbf{M} \mathbf{p} \)。你不能写成 \(\mathbf{p} \mathbf{M}\),因为这样矩阵维度不匹配,无法相乘!
2. 寻找变换矩阵
不要担心需要死记硬背每一个变换矩阵。有一个绝妙的技巧可以让你推导出任何 2D 变换矩阵 \(\mathbf{M}\)。
2.1 基向量技巧
所有的 2D 变换(假设原点保持不变)都是由两个基本基向量的变化决定的:
- 沿 x 轴的向量: \( \mathbf{i} = \begin{pmatrix} 1 \\ 0 \end{pmatrix} \)
- 沿 y 轴的向量: \( \mathbf{j} = \begin{pmatrix} 0 \\ 1 \end{pmatrix} \)
变换矩阵 \(\mathbf{M}\) 的构造方法是:将 \(\mathbf{i}\) 的像作为矩阵的第一列,将 \(\mathbf{j}\) 的像作为矩阵的第二列。
如果变换 T 将 \(\mathbf{i} \to \begin{pmatrix} a \\ c \end{pmatrix}\) 且将 \(\mathbf{j} \to \begin{pmatrix} b \\ d \end{pmatrix}\),那么:
$$ \mathbf{M} = \begin{pmatrix} a & b \\ c & d \end{pmatrix} $$
你知道吗? 这就是为什么以原点为中心的 2D 变换只需要 2x2 矩阵的原因。如果原点发生平移,我们需要使用不同的系统(称为齐次坐标,通常在进阶课题中涉及,所以我们这里只讨论基于原点的变换!)。
2.2 示例:求关于直线 \(y = -x\) 的反射矩阵
1. \(\mathbf{i} = (1, 0)\) 去了哪里?
将 \((1, 0)\) 沿直线 \(y = -x\) 反射,会交换坐标并改变符号。
\(\mathbf{i}\) 的像是 \((0, -1)\)。这就是第一列:\(\begin{pmatrix} 0 \\ -1 \end{pmatrix}\)。
2. \(\mathbf{j} = (0, 1)\) 去了哪里?
将 \((0, 1)\) 沿直线 \(y = -x\) 反射。
\(\mathbf{j}\) 的像是 \((-1, 0)\)。这就是第二列:\(\begin{pmatrix} -1 \\ 0 \end{pmatrix}\)。
3. 组合成矩阵: $$ \mathbf{M} = \begin{pmatrix} 0 & -1 \\ -1 & 0 \end{pmatrix} $$
3. 关键标准变换
你需要能够识别并写出这些以原点 \((0, 0)\) 为中心的标准 2D 变换矩阵。
3.1 旋转 (R)
除非另有说明,旋转均为逆时针。如果顺时针旋转 \(\theta\) 角,则在公式中使用 \(-\theta\)。
绕原点逆时针旋转 \(\theta\) 角: $$ \mathbf{R} = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} $$
示例: 逆时针旋转 \(90^\circ\) (\(\theta = 90^\circ\)): $$ \mathbf{R}_{90} = \begin{pmatrix} \cos 90^\circ & -\sin 90^\circ \\ \sin 90^\circ & \cos 90^\circ \end{pmatrix} = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix} $$
3.2 反射 (R)
反射将点映射到其关于某条直线(反射轴)的镜像位置。
- 关于 x 轴反射 (\(y=0\)): $$ \mathbf{R}_{x} = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} $$
- 关于 y 轴反射 (\(x=0\)): $$ \mathbf{R}_{y} = \begin{pmatrix} -1 & 0 \\ 0 & 1 \end{pmatrix} $$
- 关于直线 \(y=x\) 反射: (交换 x 和 y) $$ \mathbf{R}_{y=x} = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} $$
- 关于直线 \(y=-x\) 反射: (交换 x 和 y,并同时取反) $$ \mathbf{R}_{y=-x} = \begin{pmatrix} 0 & -1 \\ -1 & 0 \end{pmatrix} $$
3.3 缩放 (E)
缩放(Enlargement)是以原点为中心,按比例因子 \(k\) 进行的伸缩。每个坐标都会乘以 \(k\)。
以原点为中心的缩放,比例因子 \(k\): $$ \mathbf{E} = \begin{pmatrix} k & 0 \\ 0 & k \end{pmatrix} $$
注意: 如果 \(k\) 为负数,则相当于缩放加 \(180^\circ\) 旋转。如果 \(k=1\),则矩阵为单位矩阵 \( \mathbf{I} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \),它不会对图形产生任何改变!
3.4 拉伸 (S)
拉伸仅改变平行于某一坐标轴的尺寸。
- 平行于 x 轴拉伸(y 坐标保持不变),因子为 \(k\): $$ \mathbf{S}_{x} = \begin{pmatrix} k & 0 \\ 0 & 1 \end{pmatrix} $$
- 平行于 y 轴拉伸(x 坐标保持不变),因子为 \(k\): $$ \mathbf{S}_{y} = \begin{pmatrix} 1 & 0 \\ 0 & k \end{pmatrix} $$
3.5 切变 (Sh)
切变(Shear)是指沿某一坐标轴平移,移动距离取决于到另一坐标轴的距离。
- 平行于 x 轴切变: x 坐标的变化量是 \(k \times y\) 坐标。(平行于 x 轴的线是不变量。) $$ \mathbf{Sh}_{x} = \begin{pmatrix} 1 & k \\ 0 & 1 \end{pmatrix} $$
- 平行于 y 轴切变: y 坐标的变化量是 \(k \times x\) 坐标。(平行于 y 轴的线是不变量。) $$ \mathbf{Sh}_{y} = \begin{pmatrix} 1 & 0 \\ k & 1 \end{pmatrix} $$
快速回顾:关键矩阵
单位矩阵: \( \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \) (不变)
缩放 (k): \( \begin{pmatrix} k & 0 \\ 0 & k \end{pmatrix} \)
旋转 (\(\theta\)): \( \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} \)
其他矩阵中 '1' 和 '0' 的位置告诉你哪个轴受到影响或保持不变!
4. 复合变换
在现实世界中,物体经常经历多次移动。复合变换就是一次变换接着另一次变换。
4.1 乘法顺序
如果一个图形先经受变换 \(T_1\),再经受变换 \(T_2\),且对应的矩阵分别为 \(\mathbf{M}_1\) 和 \(\mathbf{M}_2\),那么组合后的变换矩阵 \(\mathbf{M}\) 即为两个矩阵的乘积。
$$ \mathbf{M} = \mathbf{M}_2 \mathbf{M}_1 $$
关键点(警惕常见错误!): 矩阵乘法的执行顺序与变换应用的顺序相反!
如果你先应用 \(T_1\),那么它的矩阵 \(\mathbf{M}_1\) 必须写在靠近位置向量 \(\mathbf{p}\) 的那一侧: $$ \mathbf{p}' = \mathbf{M}_2 (\mathbf{M}_1 \mathbf{p}) $$
先作用于向量的矩阵写在右边。
4.2 示例:合并变换
求先进行关于直线 \(y=x\) 的反射,再进行绕原点顺时针 \(90^\circ\) 旋转的复合变换矩阵。
1. 定义矩阵(顺时针 \(90^\circ\) 即 \(\theta = -90^\circ\)):
反射 \(T_1\): \( \mathbf{M}_1 = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \)
旋转 \(T_2\): \( \mathbf{M}_2 = \begin{pmatrix} \cos(-90) & -\sin(-90) \\ \sin(-90) & \cos(-90) \end{pmatrix} = \begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix} \)
2. 计算复合矩阵 \(\mathbf{M} = \mathbf{M}_2 \mathbf{M}_1\): $$ \mathbf{M} = \begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix} \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} = \begin{pmatrix} (0)(0) + (1)(1) & (0)(1) + (1)(0) \\ (-1)(0) + (0)(1) & (-1)(1) + (0)(0) \end{pmatrix} $$
$$ \mathbf{M} = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} $$
观察: 这个复合变换的结果相当于关于 x 轴的反射!
5. 面积比例因子与逆变换
5.1 行列式与面积
变换矩阵 \(\mathbf{M} = \begin{pmatrix} a & b \\ c & d \end{pmatrix}\) 的行列式,记作 \(\det(\mathbf{M})\) 或 \(|\mathbf{M}|\),代表了变换的面积比例因子。
$$ \det(\mathbf{M}) = ad - bc $$
如果图形的原始面积为 \(A\),那么变换后的新面积 \(A'\) 为: $$ A' = |\det(\mathbf{M})| \times A $$ 我们使用绝对值,因为面积总是正数。
- 若 \(|\det(\mathbf{M})| > 1\),图形面积变大。
- 若 \(|\det(\mathbf{M})| < 1\),图形面积变小。
- 若 \(|\det(\mathbf{M})| = 1\),面积保持不变(如旋转、反射和切变)。
奇异矩阵: 若 \(\det(\mathbf{M}) = 0\),该矩阵称为奇异矩阵(singular matrix)。这意味着该变换将整个平面映射到一条线或一个点上。此时面积变为 0,且该变换不可逆。
5.2 逆变换
如果变换 \(\mathbf{M}\) 将 \(P \to P'\),那么逆变换 \(\mathbf{M}^{-1}\) 将 \(P' \to P\)。
逆矩阵仅在行列式不为零时(即矩阵为非奇异矩阵)存在。
回顾 2x2 逆矩阵公式: $$ \mathbf{M}^{-1} = \frac{1}{\det(\mathbf{M})} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} $$
逆变换会“撤销”原始变换。例如,逆时针 \(+30^\circ\) 旋转的逆变换就是顺时针 \(-30^\circ\) 旋转。
6. 不变点与不变线
当应用一个变换时,有些点可能不会移动,有些直线可能位置不变(即使线上的点发生了移动)。这些是变换中的关键特征。
6.1 寻找不变点
不变点(invariant point) \(\mathbf{p}\) 是指变换后映射到自身的点:\(\mathbf{M} \mathbf{p} = \mathbf{p}\)。
设 \( \mathbf{M} = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \) 且 \( \mathbf{p} = \begin{pmatrix} x \\ y \end{pmatrix} \)。
我们求解方程组: $$ \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} x \\ y \end{pmatrix} $$
这可以重写为: $$ \begin{pmatrix} a-1 & b \\ c & d-1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} $$
示例: 对于任何以原点为中心的旋转或缩放,原点 \((0, 0)\) 始终是唯一的不变点。
6.2 寻找不变线
不变线(invariant line)是指线上的每个点变换后依然落在原直线上(尽管点本身可能沿直线移动)。
若 \(y = mx + c\) 是一条不变线,则对于线上的任意点 \((x, y)\),其像 \((x', y')\) 也必须满足 \(y' = mx' + c\)。
这通常需要建立联立方程组,并找出结果在一定 x 值范围内成立的情况。这往往是该课题中代数要求最高的部分。
关键点 2:几何代数化
这一章的核心就是将几何(旋转、切变)转化为代数(矩阵乘法)。当你被要求“描述变换”时,你必须说明变换类型(如旋转)、比例因子(如适用)以及旋转中心/对称轴(如绕原点,关于 \(y=x\) 反射)。