科学大院

如果我们改变了𝛑的值,世界将会变成什么样

Image

本篇文章正文共2521字

预计阅读时间约为8分钟
Image

《毁灭战士》封面(图片来源:wikimedia)

如果我们改变圆周率 π 的数值,世界会变成什么样?无论是在现实世界中还是游戏环境里,答案都相当复杂。

人人都会犯错——而有时,这些错误会带来意想不到的发现。20世纪90年代初,在为电脑游戏《毁灭战士》(Doom)编程时,游戏开发者约翰·卡马克(John Carmack)手动设定了圆周率 π 的数值。颇具极客风范的是,他仅凭记忆,一口气把这个数字写到了小数点后第九位:3.141592657。

你有没有注意到这个数字有什么不对劲?最后一位写错了。正确的数值应该是3.141592654。(圆周率通常也会直接截断而不进行四舍五入,这样小数点后第九位就会是3;但如果四舍五入,由于后一位数字是5,第九位就应该进位为4。)

Image

约翰·卡马克(Rob Fahey - CC BY-SA 2.0)

幸运的是,这个错误对游戏几乎没有造成影响。《毁灭战士》是最早采用三维画面的第一人称射击游戏之一。玩家在游戏中扮演一名太空陆战队员,因为一次失败的传送实验而流落到火星的一颗卫星上,与恶魔和僵尸展开战斗。这款游戏的故事很精彩,画面却十分粗糙。不过,这并不是错误的圆周率数值造成的,而是因为20世纪90年代的计算机运算能力还极其有限。

尽管如此,这个错误还是启发了美国工程师卢克·戈茨林(Luke Gotszling)。他开始研究:如果在游戏中大幅改变程序所使用的圆周率数值,可能会产生怎样的后果。2022年,他在一场黑客大会上展示了这一构想。

当电脑游戏里的圆周率出了错

由于《毁灭战士》是一款开放源代码的电脑游戏,任何人都可以下载并修改它的代码。戈茨林正是这样做的:他改变了程序中设定的圆周率数值,看看游戏会发生什么变化。

实验结果可能会让观看者感到有些头晕恶心。例如,当戈茨林把π设为3时,《毁灭战士》那像素化的世界开始发生扭曲,墙壁和柱子以出人意料的方式移动。不过,此时的游戏仍然可以正常游玩。

当圆周率被设为欧拉数的数值2.718……时,游戏变得更加诡异。玩家在游戏世界里直线前进时,周围的物体会突然移动到另一侧;敌人可能凭空出现,又突然消失。“只要醉得足够厉害,你也能体验到这种效果。”戈茨林在演讲中开玩笑说。

当他把圆周率设为π⁄2时,情况变得十分糟糕。墙壁会不断闪烁,甚至突然消失;看不见的障碍物会挡住玩家的去路。游戏在这种状态下显然谈不上有趣。

圆周率并不总是3.14159……

为什么圆周率有如此强大的影响?要回答这个问题,我们需要更深入地思考:改变圆周率究竟意味着什么。

圆周率最初被定义为圆的周长与直径之比。在日常世界里,我们理所当然地认为圆是圆润的。但在更严格的数学意义上,圆是由所有与同一个中心距离相等的点构成的。在一个平坦的二维世界里,如果距离被定义为两点之间最短的直线,圆就会呈现我们熟悉的圆形。这也意味着,一旦对距离的定义发生变化,圆周率的数值也可能随之改变。

例如,想象一下你正站在曼哈顿市中心。如果你想找出所有与你的步行距离恰好为一千米的地点,这些地点组成的形状就不再是圆形。因为你不能穿墙而过,只能沿着棋盘格一般纵横交错的街道行走。用数学术语来说,在“曼哈顿度量”中,圆会呈现出正方形。如果在这种情况下仍然把圆周率定义为周长与直径之比,它就会得到一个截然不同的数值:在曼哈顿度量中,圆周率恰好等于4。

Image

图片来源:Amanda Montañez

如果仔细观察,你会发现现实世界中的圆周率其实也不总是严格等于3.14159……在某些情况下,圆的周长与直径之比会得到不同的数值——更麻烦的是,这个数值还会发生变化!

例如,如果你站在北极,寻找所有与你相距恰好1000千米的地点,这些点会在球面上组成一个圆。但由于地球表面存在曲率,这个圆的周长会小于平面上半径相同的圆。随着这个圆越来越接近赤道,这种效应也会越来越明显,对应的圆周率数值会越来越偏离我们熟悉的3.14159……。

Image

图片来源:Amanda Montañez

因此,这种新的圆周率并不是一个常数,而是取决于圆的半径。并且,这种现象不只会出现在球面上:任何类型的曲面都会让圆周率呈现出不同的数值。

数学家把这样的弯曲世界称为“非欧几里得几何”。(2000多年前,学者欧几里得系统阐述了我们大多数人在学校里学到的几何规则,但这些规则只适用于平坦的世界。)

打造一个迷幻扭曲的《毁灭战士》世界

不过,戈茨林通过修改《毁灭战士》源代码制造出的奇异景象,又是另一回事。要理解这种现象,我们必须回到20世纪90年代。当时,计算机执行每一次算术运算都需要耗费大量资源。为了应对这一问题,程序员会尽可能提前完成可能用到的计算,并把结果存放在“查找表”中。

在开发电脑游戏的三维画面时,正弦、余弦和正切等三角函数发挥着重要作用。它们可以用来描述物体如何随着时间在空间中移动。为了节省运算资源,《毁灭战士》的开发者提前计算出了不同角度所对应的一些重要三角函数值,并把它们储存在查找表中。而这正是圆周率登场的地方:要把以角度表示的角转换为计算机使用的弧度值,就必须在换算过程中使用圆周率。

因此,如果戈茨林使用的圆周率数值过小,角度就会被错误地转换。由于开发者只能在查找表中存储有限数量的角度,他最终生成的查找表不再能够正确覆盖一整圈旋转。正常情况下,一个物体要旋转360度后才会重新回到原来的位置;但在被修改后的环境中,它旋转一个小得多的角度就可能再次出现在同一位置。因此,在极端情况下,物体会突然消失,或者毫无征兆地凭空出现。

戈茨林创造出的《毁灭战士》世界无比怪异。尽管如此,它却以一种有趣的方式促使人们思考数学,以及圆周率在各种意义上的“价值”。一名游戏开发者犯下的一个小错误,就这样催生了一场规模更大、围绕这个奇妙圆周数字展开的实验。

原文链接:

https://www.scientificamerican.com/article/how-an-error-in-cult-classic-game-doom-sparked-new-appreciation-for-pi/

Image

版权说明:未经授权严禁任何形式的媒体转载和摘编,并且严禁转载至微信以外的平台!


文章转载自“环球科学”,仅代表作者观点,不代表科学大院立场。转载请联系[email protected]

Image

推荐阅读

最基础的常数,到现在还测不准 >>

时间为什么不能倒流?>>

为什么说宇宙中最神秘的整数是137?>>

微积分如何帮助我们理解世界? >>

Image

推荐资源

关注使用“科学与中国”小程序,可观看以院士科普视频为代表的优秀科普视频,第一时间获取中国科学院公众科学日、科学节等科普活动报名信息。

Image

科学大院是中国科学院官方科普微平台,致力于最新科研成果的深度解读、社会热点事件的科学发声

主办机构:中国科学院学部工作局

运行机构:中国科学院计算机网络信息中心

技术支持:中国科普博览

转载授权、合作、投稿事宜请联系[email protected]

大院er拍了拍你:不要忘记 

点亮这里的 赞 和 在看 噢~