yAtlas

正在绘制第一帧……

0:00 / 7:14序幕

秩序之下 · No.08 · 实时渲染短片 · 7:14

Topology

一部关于拓扑学的短片

五个短章讲拓扑学。一个形状可以随便弯、拉、拧,只要不撕开、不粘连,有些东西就怎么都变不了:一条纸条扭半圈再首尾接上,就只有一面;在球面上画格子,顶点减棱加面总是 2;球上的毛不管怎么梳,总有梳不平的地方,绕着每一处数一数毛的方向转了几圈,按正负加起来,也是 2;两个圈扣了一次,只要线不穿过线,怎么晃都还是一次。这些数出来的整数,记下了形状怎么变都抹不掉的那一部分。但也有两个两个地数、数不出来的缠绕:三个环两两都没扣上,合在一起却拆不开。最后是四维空间里一个由圆组成的球面,其中每两个圆都扣一次。画面全部由代码逐帧计算生成;在网站上观看时,每一帧都在你的浏览器里实时绘制。

片长
7:14
章节
五章,加上序幕和尾声
分辨率
随播放区域自适应,最高 440 万像素
帧率
最高为屏幕刷新率,实际取决于设备性能
预录画面
无
语言
中文 · English

章节

旁白稿 · 88
  1. 序幕

  2. I只有一面

  3. II数出来的 2

  4. III梳不平的球

  5. IV扣在一起

  6. V由圆组成的球

  7. 尾声

图版说明 · 5

I 莫比乌斯带

拓扑学关心的是:只要不撕开、不粘上,怎么弯、怎么拉都变不了的东西。1858 年,利斯廷和莫比乌斯各自描述了扭半圈再接上的纸带,它只有一面:刷颜料的人只要不越过边,就能把它整个刷满;沿着中线走一圈的蚂蚁回到原处时,头顶的朝向和出发时相反。角上数出纸带有几面、几条边、几块,再用积分算出曲线之间扣了几次,每个答案都是整数。

只有一面
X(u+2π,v)=X(u,−v)颜料从一点出发,沿着纸带铺开,始终不越过边。走完一圈,它到了出发处的背面;走完两圈,每一点的正反两面都刷满了:纸带只有一面。走在颜料前头的蚂蚁,一圈后回到原处,头顶的法向朝着反方向;两圈后才又朝上。
扭几个半圈
|Lk|=k/2(k even)纸条扭 k 个半圈,再把两头接上。不扭,是一个平的环,两面、两条边;扭一个半圈,是莫比乌斯带,一面、一条边;扭两个半圈,又是两面,但两条边扣在了一起:扣了一次,这个数是角上用高斯积分算出来的;扭三个半圈,一面、一条边,那条边打成了三叶结。只有扭了偶数个半圈、纸带有两条边时,才谈得上这两条边扣了几次。金色撞上蓝色的地方,是扭了奇数个半圈留下的接缝。
剪开
halftwists=2|Lk(edges)|沿正中剪开,莫比乌斯带不会分成两条:它成了一整条,长了一倍,有两面,扭了四个半圈;这四个半圈,是角上从它的两条边扣了几次换算出来的(扣两次,就是四个半圈)。离边三分之一带宽处剪开,它分成两块:一条细一些的莫比乌斯带,和一条扭了四个半圈的长带,两块扣在一起。
克莱因瓶
χ=0两条莫比乌斯带沿着边缝在一起,就是克莱因瓶,菲利克斯·克莱因在 1882 年描述过它。放进普通的空间,它只能穿过自己;但它没有边,和纸带一样只有一面:颜料照样把它整个刷满。随后金和蓝标出缝成它的那两条莫比乌斯带。

II 欧拉公式

1750 年,欧拉注意到凸多面体的顶点、棱和面总满足 V−E+F=2。这个数不看形状,只看多面体铺成的是哪一种曲面:球面是 2,圆环面是 0;1813 年吕利耶发现,每多一个洞就少 2。这个数今天叫欧拉示性数,记作 χ;对分得出里外的闭合曲面,有 g 个像甜甜圈那样穿透的洞,就是 χ=2−2g。角上的顶点、棱和面,是从画面上那张网格一个一个数出来的,多的时候有几万个。

V − E + F
V−E+F=2五种正多面体:正四面体,4−6+4;立方体,8−12+6;正八面体,6−12+8;正十二面体,20−30+12;正二十面体,12−30+20。每一个都是 2。
细分
V−E+F=2把正二十面体的每个三角形分成四个,新的顶点推到球面上。每分一次,每条棱上添一个顶点,原来的棱一分为二,每个面里再添三条新棱、多出三个面:多出来的顶点和面,正好抵掉多出来的棱。顶点从 12 个到 42、162、642 个,结果还是 2。
一个洞
V−E+F=0改在圆环面上画格子,不管格子多密,V−E+F 都是 0:24 格,然后是 96、384、1536 格。这个数属于曲面,不属于画法。
更多的洞
χ=2−2g两个洞和三个洞的曲面,是一个场取零的地方;用移动四面体法扫过这个场,就把曲面切成了几万个三角形。角上把网格的每个顶点、每条棱、每个三角形都数一遍,得到 −2 和 −4:每多一个洞,少 2。

III 毛球定理

切向量场给曲面上的每一点放一支贴着曲面的箭头,就像梳在上面的毛,或者吹过地球的风。箭头缩成零的地方叫零点,也就是梳不平的地方;绕一个孤立的零点走一圈,箭头的方向转过的带正负的圈数,就是这个零点的指数:源、汇和旋涡是 +1,鞍点是 −1,更复杂的零点,指数可以是别的整数,比如 2。庞加莱在 1885 年对曲面、霍普夫在 1926 年对任意维数证明,零点孤立时,指数之和总等于欧拉示性数:球面上是 2,所以球永远梳不平;圆环面上是 0,所以能梳平。角上找出每个零点,在它周围的小圈上数出指数;挨得太近、分不开的零点,合成一簇,标出指数之和;所有指数的总和,角上再沿着铺满曲面的小格子一格一格地数一遍,两种数法结果一样。

梳不平的地方
V=∇z把每根毛都往高处梳,朝着北极。毛从南极向四面散开,到北极聚拢:两个梳不平的地方,一个源、一个汇,指数都是 +1。角上找出每个梳不平的地方,在它周围的小圈上数毛转了几圈;总和再沿着铺满球面的 1350 个格子的边,一格一格地数一遍。
旋涡
V=cosα∇z+sinαez×p把每根毛慢慢往侧面转,流线成了绕着轴的旋涡,再成了螺旋。梳不平的地方留在两极,指数还是 +1:源、汇和旋涡,绕着走一圈,方向都只转一圈。
总和都是 2
1+1+1−1=2把平面上一阵稳定的风,用球极投影搬到球面上,得到的是偶极场:它只有一个梳不平的地方,在北极,指数是 2。再把它慢慢变成一片地形的梯度:两座山峰,中间一个山口(也就是鞍点),还有一个山谷。北极的零点立刻裂成四个,一开始挨得太近,分不开:一个指数 −1 的山口留在北极,三个指数 +1 的零点离开。一个往外走到第一座山峰;另外两个绕到背面,在那一侧的经线上碰头:那里先冒出一对指数 +1、−1 的零点,零点一时有六个;接着原来的两个 +1 和新生的 −1 并成一个 +1,又回到四个。经线上剩下的两个 +1 沿经线离开,一个去第二座山峰,一个去南极的山谷。零点的个数在变,指数的总和始终是 2。
圆环面
χ(torus)=0把圆环面竖起来,往高处梳:顶上一个山峰,底下一个山谷,洞的上方和下方各一个山口,指数是 +1、+1、−1、−1。再改成绕着轴梳:山峰和洞上方的山口沿着管子靠近我们的一面滑到一起,互相抵消;片刻之后,山谷和洞下方的山口在管子远的那一面也这样消掉。一个零点都不剩:圆环面和球面不同,可以梳平。

IV 纽结与链环

纽结是空间里一个闭合的圈;只要不剪断、也不让线穿过线,一个纽结能挪成另一个,两者就算同一个。要区分它们,得靠不变量,也就是这样怎么挪都不变的东西。两个圈的环绕数就是一种不变量,高斯在 1833 年把它写成一个二重积分;福克斯把纽结图的弧按规则涂成三种颜色,合法涂法有几种,是另一种。角上从上方看过去数交叉,一种一种地试涂法,沿着曲线算积分。

环绕数
Lk=signedcrossings/2两个环,各自从对方中间穿过一次:霍普夫链环。从上方看,数出它们之间的交叉,把符号加起来:和的一半是 −1,就是环绕数;是正是负,只取决于给每个环定的走向。沿着两个环算高斯积分,是完全不同的一种算法,得到的数和它到小数点后四位都一样;把一个环随意弯一弯,这个数也不变,因为不剪断、线不穿过线的弯曲改变不了它。所罗门链环的两个环互相绕了两圈,得到 2。
三种颜色
colourings(trefoil)=9从上方看,三叶结分成三段弧,每段都在从另一段下面穿过的地方结束。给每段弧涂上三种颜色中的一种,要求每个交叉处碰头的三段弧颜色全都相同,或者全都不同:27 种涂法里有 9 种合法,其中用齐三种颜色的 6 种证明三叶结打了结,因为一个普通的圈只有单色的 3 种。8 字结也只有 3 种:它同样打了结,只是这个检验看不出来。
环面纽结
c=min(p(q−1),q(p−1))环面纽结缠在一个圆环面上:绕着它的轴走 p 圈,绕着它的管子走 q 圈。T(2,3) 是三叶结,接着是 T(2,5)、T(3,4) 和 T(3,5)。从上方数出的交叉,3、5、8、10 个,已经是这些纽结的任何画法里最少的,村杉邦男在 1991 年证明了这一点。
博罗梅安环
Lk=0,0,0三个环,任何两个都没扣上:每一对的环绕数都是 0,单拿出其中两个,都能拉开。可三个在一起,却分不开。拿走一个,另外两个就滑开了。

V 霍普夫纤维化

1931 年,海因茨·霍普夫找到一个映射,把三维球面 S3,也就是四维空间里的单位球面,映到普通的球面 S2 上,映到同一点的那些点组成一个圆。他证明这个映射没法连续地变成一个常值映射;用来证明这一点的那个数,今天叫霍普夫不变量,就是其中任意两个圆的环绕数:1。球极投影把 S3 除投影点以外的部分搬进普通的空间:不经过投影点的圆投过来还是圆,经过投影点的那一个成了一条直线。角上数圆的个数,再一对一对地用积分算它们的环绕数。

扣着的圆
Lk=1球面上六个点,对应的六个圆一个接一个出现。每个圆都从其余每个圆中间穿过一次:角上逐对用积分算环绕数,每一对都是 1。顶上的小球用同样的颜色标出它们对应的点。
圆织成的圆环面
|z1|=cos(α/2)沿一条纬线等距取 72 个点,得到 72 个圆。它们都躺在同一个圆环面上,把这个圆环面织了出来;每个圆沿两个方向各绕一圈,就像普通圆环面上的维拉索圆。纬线往南移,圆环面从绕着一个圆的细环,胀成绕着轴的宽环;到了赤道,就是克利福德环面。其中任意两个圆都始终扣一次,这里量的是相对的两个。
纤维化
S1→S3→S2四条纬线,每条 42 个点:168 个圆,躺在一层套一层的四个圆环面上。整个纤维化填满了空间:空间中每一点都恰好落在一条纤维上,这些纤维都是圆,只有经过无穷远点的那一条是直线,就是轴。从不同层里挑出几对来量,每一对都扣一次。
转动 S³
q↦q(cosω+ksinω)把 S3 的每一点右乘一个单位四元数,让它转起来。每个圆都变成另一个圆,纤维化本身不变,但投到空间里,它在流动:圆环面倾斜、胀大,有的圆转到经过无穷远点的位置,就伸出了画面。自始至终,量过的每一对都扣一次。