三体模拟器小记
消灭人类暴政,地球属于三体
早有耳闻《三体》系列小说,但阴差阳错直到今年才有机会阅读这套鸿篇巨制。一口气看完三部曲,《球状闪电》和《超新星纪元》仍意犹未尽,当时颇有畅快淋漓之感。当然,或许因为并非特别偏好科幻小说,这种快感不久也就逐渐消散了。然而,小说中一些物理学和宇宙学的设定给我留下了印象。
小时候看百科全书的时候,对宇宙边缘的未知充满了好奇。红巨星、蓝巨星、白矮星、中子星、脉冲星、黑洞、虫洞、钱德拉塞卡极限、事件视界……有时候会对黑暗与未知产生恐惧,但更多的是对自己无法见证宇宙的尽头而感到遗憾。时空二字,囊括了我们所知所闻的一切。从小时候的既害怕又好奇,到后来逐渐释然——时间在自己身上逐渐留下印记,自然自己也变成了这时空的一部分。
看完《三体》后,很多关于物理的探讨让我感觉意犹未尽,而最容易最方便上手研究的自然就是多体问题。运动方程易于列写编程、结果直观方便可视化,况且计算物理课程中曾经做过类似的事情。万事俱备,只欠一个理由。不想干活自然是一个很好的推手。索性开干。
在读三体的时候,就调研了GitHub看是否有类似的解决方案。发现了一个很好的基于React的模板,但原作者做的不够完善。于是star了下来。这次翻出来重构代码,让整个程序重新焕发了活力。
Nunquam praescriptos transibunt sidera fines(Never will heavenly bodies transgress their prescribed bounds)
Henri Poincaré, « Sur le problème des trois corps et les équations de la dynamique », Acta Mathematica, vol. 13, 1890, p. 1-270
花了两天多时间把源代码重构修饰一番,增加了轨迹描绘、改进了样式、重构了运动方程计算函数、添加了几个已知天体运动参数的预设。同时,为了呼应小说中关于三体文明的描写,还煞有介事地拽了个二了咕叽的标题。这一番不算小的改动,也让我稍稍了解了一些关于js、jQuery和jsx的语法知识。深感以前知识面不够广,很多技术都未曾接触。不过也并不后悔学了那么多物理,尽管现在忘了不少、当时也没学透彻,但至少此生剩余时光我的时空观将始终客观、理性而富有逻辑。虽说付出的代价不小,但懂点物理还是挺舒服的。
Leave a Comment