瓜豆原理
一个图形经过任意旋转、缩放、平移、对称之后,与原图形保持相似,且相似比等于缩放比。
非常强大而泛用的定理。可以用来解决一整类初中的几何题。
这篇文章的目的是证明它,从地基开始重构这整套工具箱。所以默认读者已经会了这些东西,主要进行推式子。
定义 1:线性变换与仿射变换
线性变换
我们常常听说,“某某变换(比如缩放,旋转)是线性变换”。那么什么是“线性变换”?
我们称一个对 $n$ 维点的变换是线性变换,当且仅当存在一组 $\R^n \to \R$ 的线性变换 ${g_i}(1\le i \le n)$ 使得:
$$f((x_1, x_2, \cdots x_n)) = (g_1((x_1, x_2, \cdots x_n)), g_2((x_1, x_2, \cdots x_n)), \cdots g_n((x_1, x_2, \cdots x_n)))$$
这里的“$\R^n\to \R$ 的线性变换”指满足以下两条性质的变换:
- 可加性。对于变换 $f$,当且仅当 $\forall x\in \R^n, y\in \R^n; f(x + y) = f(x)+f(y)$ 时它满足这条性质。
- 齐性。对于变换 $f$,当且仅当 $\forall x\in \R^n, c\in \R; f(cx) = cf(x)$ 时它满足这条性质。
容易发现,这样的变换一定是形如 $f((x_1, \cdots x_n)) = \sum_{i = 1}^n a_ix_i$ 的变换,其中 $a_i$ 是常数。
仿射变换
很简单。一个变换 $f(x)$ 是仿射变换当且仅当它可以写成 $g(x)+c$ 的形式,其中 $g(x)$ 是一个线性变换,而 $c$ 是常数。
证明 1:旋转是线性变换
考虑点 $P(x, y)$,将它旋转 $\theta$ 这个角。
自然的方法是使用极坐标。我们设 $P = (r, \phi)$,其中 $r = \sqrt{x^2+y^2}$,$\phi$ 是 $P$ 到原点连线与 $x$ 轴的夹角。
进而有 $x = r\cos \phi, y = r\sin \phi$。
旋转 $\theta$ 之后,$P’ = (r, \phi + \theta)$,可以算出 $x’=r\cos(\phi+\theta), y’=r\sin(\phi+\theta)$。
用和角公式拆开:
$$x’=r(\cos \phi\cos \theta-\sin\phi\sin\theta),\\ y’=r(\sin \phi\cos \theta+\sin \theta\cos \phi)$$
拆开括号。
$$x’=r\cos \phi\cos \theta-r\sin\phi\sin\theta,\\ y’=r\sin \phi\cos \theta+r\sin \theta\cos \phi$$
代回 $x = r\cos \phi, y = r\sin \phi$。
$$x’=x\cos \theta-y\sin\theta,\\ y’=y\cos \theta+x\sin \theta$$
于是不难发现旋转是线性变换。设 $a = \cos \theta, b = \sin \theta$(此时由于旋转角是常数,它们都是常数),只需选取 ${g_i}={(x, y) \to ax-by,(x, y)\to bx+ay}$ 即可。
你甚至可以写成矩阵的形式: $$ f\left(\begin{pmatrix} x \\ y \end{pmatrix}\right) = \begin{pmatrix} a & -b \\ b & a \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} $$
定义 2:缩放
点(或向量)$\bold{v}$ 的缩放是 $s\bold{v}$,其中 $s$ 是一个常数。如果点的缩放不关于原点,平移坐标系使得缩放中心为原点即可。
注意我们这里的缩放特指均匀缩放。
显然,缩放是一个线性变换。
证明 2:对一条直线上的每个点进行仿射变换,得到的新图形依然是直线
设一条直线 $l: Ax+By+C=0$。对于它上面的任一点 $(x_1, y_1)$,我们进行仿射变换,得到点 $(k_1x_1+k_2y_1+c_1, k_3x_1+k_4y_1+c_2) = (a, b)$。
我们需要证明的是,存在一组常数 $A’,B’,C’$,使得对于任意这样产生的 $(a, b)$,都有 $A’a+B’b+C’=0$。
这显然是存在的。我们首先考虑一次项的系数 $A’, B’$,考虑调整它们使得 $x_1,y_1$ 的系数分别是 $A$ 和 $B$ 的倍数,这样,我们就可以利用 $Ax+By+C=0$ 的性质确保整个式子的值是常数。并且溢出的常数项可以被 $C’$ 吸收掉。
这是可以做到的,具体而言考虑方程组: $$ \begin{cases} A’k_1+B’k_3=nA\\ A’k_2+B’k_4=nB \end{cases} $$ (其中 $n$ 是任意非零常数)
这样就能使得 $x_1,y_1$ 的系数分别是 $A$ 和 $B$ 的倍数。并且两个未知数,两个方程,刚好有解(除非仿射变换本身是奇异的,行列式的值 $k_1k_4-k_2k_3$ 等于 0)。常数项可以用 $C’$ 全部吸收。
于是证毕,直线经过仿射变换之后依然是直线。
这样,我们就证明了瓜豆原理的一种基础情形:被变换的对象是直线。
证明 3:对一个图形进行旋转,对称或平移,新图形与原图形全等
证明框架
设 $T$ 是一个变换(平移、旋转或反射)。
取任意两个点 $P_1 = (x_1, y_1)$ 和 $P_2 = (x_2, y_2)$。
它们之间的向量是 $\vec{v} = P_2 - P_1 = (x_2-x_1, y_2-y_1)$。
它们之间的距离的平方是 $d^2 = |\vec{v}|^2 = (x_2-x_1)^2 + (y_2-y_1)^2$。
经过变换后,得到新点 $P’_1 = T(P_1)$ 和 $P’_2 = T(P_2)$。
它们之间的新向量是 $\vec{v}’ = P’_2 - P’_1$。
新距离的平方是 $(d’)^2 = |\vec{v}’|^2$。
我们要证明的就是,对于平移、旋转和反射,始终有 $(d’)^2 = d^2$。
1. 平移(Translation)
设平移向量为 $\vec{b} = (c, d)$。
$T(P) = P + \vec{b}$。
$P’_1 = P_1 + \vec{b} = (x_1+c, y_1+d)$
$P’_2 = P_2 + \vec{b} = (x_2+c, y_2+d)$
计算新向量 $\vec{v}’$:
$\vec{v}’ = P’_2 - P’_1 = ((x_2+c)-(x_1+c), (y_2+d)-(y_1+d))$
$\vec{v}’ = (x_2-x_1, y_2-y_1) = \vec{v}$
结论: 平移变换不改变点对之间的向量。
所以,距离显然不变:$|\vec{v}’|^2 = |\vec{v}|^2$。
因为向量本身都没变,夹角自然也不可能变。
平移保持全等,证毕。
2. 旋转(Rotation)
设绕原点逆时针旋转 $\theta$ 角。 $T(P) = R_\theta P$,其中 $R_\theta = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}$。
对于线性变换,有一个极好的性质:$T(P_2 - P_1) = T(P_2) - T(P_1)$。
所以,$\vec{v}’ = P’2 - P’1 = R{\theta} P_2 - R{\theta} P_1 = R_{\theta}(P_2-P_1) = R_{\theta} \vec{v}$。
这意味着,原图中的任意向量 $\vec{v}$,在旋转后变成了 $R_\theta \vec{v}$。
现在我们来证明距离不变。设 $\vec{v}=(x, y)$。
$R_\theta \vec{v} = (x\cos\theta - y\sin\theta, x\sin\theta + y\cos\theta)$
$|\vec{v}’|^2 = |R_\theta \vec{v}|^2 = (x\cos\theta - y\sin\theta)^2 + (x\sin\theta + y\cos\theta)^2$
展开它:
$= (x^2\cos^2\theta - 2xy\cos\theta\sin\theta + y^2\sin^2\theta) + (x^2\sin^2\theta + 2xy\sin\theta\cos\theta + y^2\cos^2\theta)$
合并同类项:
$= x^2(\cos^2\theta+\sin^2\theta) + y^2(\sin^2\theta+\cos^2\theta)$
$= x^2(1) + y^2(1) = x^2+y^2 = |\vec{v}|^2$
结论: 旋转变换保持距离不变(保距性)。
接下来证明保角性。
设有两个向量 $\vec{u}$ 和 $\vec{v}$。它们夹角的余弦值由点积公式给出:$\cos\alpha = \frac{\vec{u} \cdot \vec{v}}{|\vec{u}||\vec{v}|}$。
变换后的向量是 $\vec{u}’=R_\theta\vec{u}$ 和 $\vec{v}’=R_\theta\vec{v}$。
我们已经证明了 $|\vec{u}’|=|\vec{u}|$ 和 $|\vec{v}’|=|\vec{v}|$。
所以,要证明夹角不变,我们只需要证明点积不变,即 $\vec{u}’ \cdot \vec{v}’ = \vec{u} \cdot \vec{v}$。
设 $\vec{u}=(u_x, u_y)$, $\vec{v}=(v_x, v_y)$。
$\vec{u}’ = (u_x c - u_y s, u_x s + u_y c)$
$\vec{v}’ = (v_x c - v_y s, v_x s + v_y c)$
(其中 $c=\cos\theta, s=\sin\theta$)
$\vec{u}’ \cdot \vec{v}’ = (u_x c - u_y s)(v_x c - v_y s) + (u_x s + u_y c)(v_x s + v_y c)$
$= (u_x v_x c^2 - u_x v_y cs - u_y v_x cs + u_y v_y s^2) + (u_x v_x s^2 + u_x v_y sc + u_y v_x sc + u_y v_y c^2)$
中间的四项 $cs$ 项两两抵消!
$= u_x v_x (c^2+s^2) + u_y v_y (s^2+c^2)$
$= u_x v_x + u_y v_y = \vec{u} \cdot \vec{v}$
点积确实不变!所以角度也不变。
旋转保持全等,证毕。
3. 对称/反射(Reflection)
以关于 x 轴的反射为例。变换矩阵是 $F = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}$。
这也是一个线性变换,所以 $\vec{v}’ = F\vec{v}$。
设 $\vec{v}=(x, y)$,则 $\vec{v}’=(x, -y)$。
保距性: $|\vec{v}’|^2 = x^2 + (-y)^2 = x^2+y^2 = |\vec{v}|^2$。距离不变。
保角性(点积不变性): 设 $\vec{u}=(u_x, u_y), \vec{v}=(v_x, v_y)$。
$\vec{u}’=(u_x, -u_y), \vec{v}’=(v_x, -v_y)$。
$\vec{u}’ \cdot \vec{v}’ = (u_x)(v_x) + (-u_y)(-v_y) = u_x v_x + u_y v_y = \vec{u} \cdot \vec{v}$。
点积依然不变!所以角度大小也不变。
对称保持全等,证毕。
这样我们就证明了瓜豆原理的大部分。剩下的是证明缩放保持相似,且相似比等于缩放比。这几乎是相似的定义(缩放,大小不同形状相同),所以不加证明。读者也可将其作为习题。
应用与工具
瓜豆原理常用于求一个点的轨迹。在一些最值问题中很常用。尤其是与点到直线距离公式搭配:
点到直线距离公式:
$P(x_0,y_0)$ 到 $l:Ax+By+C$ 的距离等于:
$$\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}$$。
证明思路非常简单:我们首先考虑 $A$ 和 $B$ 均不为零的直线,再考虑对于特例验证其正确性。
对于一般情况,我们使用面积法。在 $l$ 上取两点 $M, N$,求出三角形 $PMN$ 的面积和 $MN$ 的长度,然后就可以求出 $P$ 到 $l$ 的高也即距离。
为了简化计算,我们选取 $M$ 的纵坐标与 $P$ 相同,$N$ 的横坐标与 $P$ 相同。
那么有 $M = (-\frac{By_0+C}{A}, y_0), N = (x_0, -\frac{Ax_0+C}{B})$。
设 $V_p = Ax_0+By_0+C$。
我们有 $MN$ 等于
$$
\sqrt{(\frac{V_p}{A})^2+(\frac{V_p}{B})^2}
$$
而三角形 $PMN$ 的面积则等于: $$ |\frac{V_p^2}{2AB}| $$
$P$ 到 $l$ 的距离则是: $$ \frac{|\frac{V_p^2}{AB}|}{\sqrt{(\frac{V_p}{A})^2+(\frac{V_p}{B})^2}} $$ (注意分子是面积的二倍,也就是两直角边的乘积)
把分子上的 $AB$ 乘下去,并且上下同时约去一个 $|V_p|$,就得到 $$ \frac{|V_p|}{\sqrt{A^2+B^2}} $$ 也就是我们一开始的公式。