真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!

The following article is from AI 科技评论 Author 贝爽、陈大鑫
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
要说在《三体》这本著名的科幻小说中挑选几个令人印象深刻、血脉膨胀的科幻元素和场景,那 水滴攻击和 二向箔降维打击肯定能上榜。真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
图注:水滴今天我们就来讲一讲降维打击——如何实现对地球 " 从三维向二维跌落 "。
在《三体》中,太阳系被一小片二向箔攻击由三维降至二维的场景描述实在是太吸引人了有没有:
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
" 这是第一个跌入二维的固态行星,与海王星和土星想象比,二维地球的 " 年轻 " 更加清晰精致…… ",听起来如此有诗意的描述,激发了不少读者的无限想象,一位重度科幻迷的 B 站 Up 主 Ele 实验室便是其中一个,起初他想象的三体降维是这样的:啪的一声!三维变成二维……
啊这……有点儿草率了。那下面这样呢?
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
这种剥橘子的方法显然也不太行。其实,以上这两种想法最大的问题就是只考虑了地球的表面。就像我们在玩游戏穿模时看到的那样,目前主流的三维建模技术采用的都是三角面,组成物体的表面,而至于物体的内部则只是空的而已。
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
但地球其实是一个实心的球体,从内到外依次是地核、地漫、地壳和地表。真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
这就有点复杂了。那么该如何实现对三维物体降维攻击呢?
几天前,这位 B 站 UP 主在用 threejs 框架编写程序时,无意间发现了一个 Demo,
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
它大概这个样子:真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
和大多数人一样,Up 主起初也以为这个密集恐惧者看了流泪、贪吃蛇爱好者见了狂喜的线条,只是一个简单的数学分析。但研究之后,他发现这其实是大名鼎鼎的希尔伯特曲线。
正是借助这条曲线,Up 主成功实现了对三体的降维打击。
希尔伯特曲线
我们先来了解一下什么是 " 希尔伯特曲线 "?
早在 19 世纪时数学界就掀起了一阵用一维直线填满二维平面的热潮,换句话说就是找到一维和二维的一个映射,起初是意大利数学家皮亚诺,没错,就是时不时出现在高等数学教材里的老伙计:
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
他提出了一种能够填满平面的曲线皮亚诺曲线,紧接着是德国数学家希尔伯特提出了另外一种希尔伯特曲线,这也就是本文要介绍的 Up 主用来完成降维打击的工具。希尔伯特曲线是这样的:这是一个平面正方形,先把它画为 4 等份,可以使用这样一条曲线遍历所有的四个小块,这就是一阶的希尔伯特曲线。
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
之后每个小块可以再划分为 4 等份。如果还想得到一个能够遍历出所有小块的曲线,可先把 4 个小区域内各自画出一阶希尔伯特曲线。真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
然后把下面两个分别旋转 90 度和 -90 度再把它们连起来,这就是二阶的希尔伯特曲线。真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
同样的道理我们可以得到三阶、四阶、五阶希尔伯特曲线等等。真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
而当阶数趋近于无穷的时候,我们就可以认为曲线 " 填满了 " 整个平面:真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图
只有当这时候才是真正意义上的希尔伯特曲线,而之前阶数达不到不无穷的情况,姑且可以称作 " 伪希尔伯特曲线 "。通过遍历这个曲线我们就可以得到平面上所有的点,虽然希尔波特的曲线取无穷大的时候,在数学上还有很多争议,但是对于离散系统的计算机来说,这已经很 Nice 了。
那么,希尔伯特曲线如何实现降维?
举个栗子:
这是一张 64 × 64 像素的图片,每个像素刚好是一个小方块。
真 · 降维打击!《三体》中二向箔吞噬地球的场景成真了!
文章插图

推荐阅读