房间的正中间悬浮着一个正方形的金属框。五位画家看到这般奇迹后,立即拿出纸和笔,把这个金属框的样子画了下来。但是,由于五位画家观察这个金属框的角度不同,它们画出来的结果也互不相同。请问,这五位画家画出来的结果都是对的吗?换句话说,有没有哪一幅图或者哪几幅图根本不可能是一个正方形的透视图?
首先,我们简单解释一下透视图背后的数学模型。假设人眼和实物之间有一个矩形的画布。将实物中的任意一点 X0与人眼相连,都会与画布有一个交点 X ,那么在人眼看来,实物上的 X0点和画布上的 X 点是完全重合的。我们就说,这个 X 点是 X0点在画布上的像。把实物中的每一个点在画布上的像都描出来,我们就能得到实物在这块矩形画布上的透视图了。假设实物上有一条线段 A0B0,那么人眼、 A0点、 B0点就确定了空间当中的一个平面。由于线段 A0B0上的任意一点与人眼的连线都在这个平面上,因而这条线段的像一定在这个平面与矩形画布的交线上。这说明,任意一条直线在画布上的像仍然是一条直线。
在这个意义下, A 、 B 、 C 、 D 、 E 这五幅图究竟画得对不对呢?我们先来说明,图 D 和图 E 是对的。事实上,我们将会证明,任意一个两组对边都不平行的凸四边形 ABCD 都可以看作是从某个角度观察正方形所得到的透视图。假设这个四边形的对角线 AC 和 BD 交于点 O ,再假设它的两组对边分别交于点 P 和点 Q ,如下图所示。过点 A 作平行于 PQ 的直线 l ,令 PO 、 QO 、 BD 所在直线分别与直线 l 交于 M 、 N 、 S 。现在,过直线 l 作与四边形 ABCD 所在平面垂直的平面 γ 。分别以 AS 、 MN 为直径,在平面 γ 上作半圆,两个半圆交于点 O0。过 PQ 所在直线也作一个与四边形 ABCD 所在平面垂直的平面 π ,显然平面 π 和平面 γ 平行。反向延长 OO0,与平面 π 交于点 Z 。延长 ZB 、 ZC 、 ZD ,与平面 γ 交于 B0、 C0、 D0。根据刚才讲到的透视图理论,如果人眼在 Z 处观察平面 γ 上的四边形 AB0C0D0,得到的就是四边形 ABCD 了。下面我们证明,四边形 AB0C0D0是一个正方形。
首先注意到, Z 、 B0、 C0构成了一个平面,且线段 QCB 也在这个平面上。这个平面与 γ 交于 B0C0,与 π 交于 ZQ 。然而,平面 γ 和平面 π 是平行的,这就说明 B0C0与 ZQ 平行。同理, AD0也与 ZQ 平行。既然 B0C0和 AD0都与 ZQ 平行,因此 B0C0与 AD0互相之间也是平行的。
类似地,我们可以说明 D0C0和 AB0都与 ZP 平行,因此 D0C0与 AB0互相之间也是平行的。这说明,四边形 AB0C0D0是一个平行四边形。在透视图中, B 、 O 、 D 在一条直线上, A 、 O 、 C 也在一条直线上;因此,在实物中, B0、 O0、 D0在一条直线上, A 、 O0、 C0也在一条直线上。这意味着, O0是平行四边形 AB0C0D0的中心。
线段 QON 和 ZOO0确定了一个平面,这个平面与 γ 和 π 分别交于 NO0和 ZQ ,再次结合 γ ∥ π 便可得出, 线段 NO0平行于 ZQ ,从而也就平行于 B0C0、 AD0了。同样地,线段 MO0平行于 ZP ,从而也平行于 D0C0、 AB0。然而,由于直径所对的圆周角为 90° ,因此 ∠MO0N = 90° ,即 NO0与 MO0垂直。这说明平行四边形 AB0C0D0的两组对边互相之间也是垂直的,进而说明这个平行四边形实际上是一个矩形。
最后注意到,在透视图中, O 、 B 、 S 在一条直线上,因此在实物中, O0、 B0、 S 也在一条直线上。由于直径所对的圆周角为 90° ,因此 ∠AO0S = 90° ,即 ∠AO0B0= 90° 。考虑到 O0是平行四边形 AB0C0D0的中心,因而 ∠AO0B0= 90° 就意味着这个平行四边形的对角线互相垂直。这说明,这个平行四边形实际上是一个菱形。
把上面两段的结论结合起来,我们便得到了,四边形 AB0C0D0的确是一个正方形。这表明,任何一个两组对边都不平行的凸四边形,比如图 D 和图 E ,都可以看作是某个正方形的透视图。
利用前面的这些技巧,我们很快可以说明,任何一个梯形,比如图 C ,也都可以看作是某个正方形的透视图。事实上,我们几乎可以把刚才的构造原封不动地套用在梯形上,只不过点 B 、点 B0、点 S 重合在了一起,并且点 P 和点 M 跑到了无穷远处。整个构造过程也大大简化了。假设 AD 与 BC 交于点 Q , AC 与 BD 交于点 O ,延长 QO 与 AB 交于点 N 。过 AB 作与四边形 ABCD 所在平面垂直的平面 γ ,过 Q 作平行平面 π 。此时,以 AS 为直径的半圆也就变成了以 AB 为直径的半圆,以 MN 为直径的半圆也就变成了过点 N 且垂直于 AB 的直线,令两者的交点为 O0。反向延长 OO0,它与 π 的交点便是人眼的位置 Z 。延长 ZC 、 ZD ,分别与平面 γ 交于 C0、 D0,则四边形 ABC0D0即为所求。
为什么 ABC0D0一定是正方形呢?证明方法和刚才几乎完全相同,只不过更简单一些。这里,我们就不重复叙述了。
现在,我们已经证明了,图 C 、图 D 、图 E 都是正确的透视图。那么,图 A 和图 B 呢?图 A 显然也是正确的透视图。如果把正方形金属框平行地放在画布的一侧,人眼在画布另一侧的任意位置,那么容易看出,这个正方形里的每条线段,包括对角线,都与它在画布上留下的像平行。于是,原正方形的两组对边分别平行,像的两组对边也分别平行;原正方形的邻边是互相垂直的,像的邻边也是互相垂直的;原正方形的对角线是互相垂直的,像的对角线也是互相垂直的。这足以说明,画布上像也是正方形。容易想到,事实上,把任意平面图形搬到一个与之平行的画布上,不管人眼的位置在哪里,所得到的都是这个平面图形的一个相似形。
下面我们说明,图 B 不可能是某个正方形的透视图。注意到图 B 的特征:每一组对边经过透视之后都仍然是平行的。我们来看一看,如果实物上的平行线在画布上也是平行的,这意味着什么。
假设 l0、 m0是实物上的两条平行线, Z 是人眼的位置。那么, Z 和 l0确定了一个平面, Z 和 m0也确定了一个平面。不妨把这两个平面分别叫做 α 和 β ,它们的交线为 i 。容易看出, i 与 l0、 m0都平行。再假设 l0、 m0在画布上的像分别是 l 、 m 。容易看出, l 和 m 所在的直线其实就是画布与 α 和 β 的交线,它们的交点也就是画布与 i 的交点。所以,为了让 l 和 m 平行,即为了让 l 和 m 不相交,我们必须保证画布和 i 也不能相交,即画布和 i 平行,即画布和 l0、 m0都平行。
如果正方形的第一组对边经过透视之后仍然是平行的,这就说明画布平行于第一组对边;如果正方形的第二组对边经过透视之后仍然是平行的,这就说明画布平行于第二组对边。可见,此时画布将会平行于整个正方形所在的平面。但是,我们刚才说过,这种情况下,画布上显示的应该是一个正方形。
所以,正方形的透视图要么是一个正方形,要么是一个至少有一组对边不平行的四边形。所以,图 A 、图 C 、图 D 、图 E 都是合法的正方形透视图,图 B 则不是一个正方形的透视图。
在刚才的文字中,我们避免使用了消失点、消失线等词,但很多地方实际上都触及了这些概念。如果你对这些概念非常熟悉的话,你会发现前面那些神一般的构造其实来得都很自然,而且论证过程也不必如此大费周章。利用一些与仿射变换、射影变换相关的知识,这个问题的解答还可以变得更加简单。这篇文章部分参考了 100 Great Problems of Elementary Mathematics: Their History and Solution 一书中的第 72 题,同时也参考了 Analytic Projective Geometry 一书中的附录 A ,但完整而初等的解答过程则是自己整理出来的,若有问题,还请大家及时指正。
在写这篇文章的时候,我还做了一个消失点的演示动画,用于更直观地展示 Wikipedia 上的这张图(https://commons.wikimedia.org/wiki/File:Vanishing_Point.jpg)的意思,但最后并没有用到。想着觉得有点可惜,因此还是放上来吧。
这个动画表明,如果实物上有 l0, m0, n0, … 等一系列无限长的平行线,那么它们在画布的像 l, m, n, … 将会交于一点(即使这些平行线之间的间隔很稀疏,即使这些平行线被平移到了人眼侧方很远的位置)。这个点就叫做这些平行线的“消失点”(vanishing point)。这个消失点究竟在哪儿呢?我们很容易把它找出来。过人眼作出与这些平行线都平行的线,它与画布的交点就是消失点。由此可见,如果画布本身就与这些平行线平行,消失点就不存在了。此时,这些平行线在画布上的像不会交于一点,而是依旧呈现出彼此平行的形态。
在描绘机器、建筑等物体时,我们经常会发现,物体上有三组平行线,它们分别与 X 轴、 Y 轴、 Z 轴平行。如果画布所在的平面与 X 轴、 Y 轴、 Z 轴都不平行,那么对于每一组平行线来说,把它们画在画布上并且延长之后,都应该汇聚于一点。这就是美术当中的三点透视原理。如果画布与某条轴平行,那么其中一组平行线的像将会依旧平行,不会形成任何消失点。这种绘画模式就叫做两点透视。如果画布与其中两条轴都平行,那么其中两组平行线的像都将会依旧平行,只剩下一组拥有消失点的平行线。这种绘画模式就叫做一点透视。刚才我们曾让画布与直线 i 平行,这样做的效果就是减去一个消失点,从而把三点透视变为两点透视,或者把两点透视变为一点透视。
消失点还有另一个更加直观的意义:呈现出一条直线是如何消失在无穷远处的。直线 l0在画布上的消失点,其实就是直线 l0的无穷远点在画布上所对的点。类似地,如果实物上有一个无限大的平面,那么它的无穷远处就对应于画布上的一条线。这条线就叫做这个平面的“消失线”(vanishing line)。如果你站在一望无垠的水平地面上,你所看到的地平线就是地面的消失线,它和你的眼睛齐平。地面上的任何一条无限向前延伸的线,在画布上的消失点都位于消失线上。
所以,之前在解释 AB0C0D0为何是平行四边形的时候,我们完全可以这么说:画布上的直线 PQ 和人眼齐平,这说明它是平面 γ 的消失线。由于四边形 AB0C0D0的两组对边在画布上的像都汇聚在了消失线上,这说明这个四边形的每一组对边都是平行的,所以它是一个平行四边形。