【三体运动模拟器】| 探索刘慈欣《三体》中的三体运动(第一期)

时间:2023-07-07 07:23:20       来源:哔哩哔哩

设计想法/理念

最近在又读了两遍三体。是的没错,那部刘慈欣的科幻巨作,带我踏上了一场奇妙而深邃的宇宙之旅。我陷入了恒星和行星的引力之舞,沉浸在宇宙的浩瀚与神秘之中。于是,我决定用我的代码能力和创造力,将这个壮观的三体运动的模拟器做出来!


(资料图片)

三体运动的历史可以追溯到古代天文学的发展。古代的天文学家们开始观察和记录天体运动,其中三体运动成为他们研究的重要课题之一。

早期的观测发现,恒星和行星之间的引力相互作用会导致它们的轨道发生变化,甚至可能产生稳定的三体轨道。这引起了天文学家们的兴趣和好奇心。

随着时间的推移和科学的进步,人们开始运用数学和物理定律来描述和解释三体运动的现象。著名的天体力学理论和计算方法被开发出来,帮助我们更好地理解和预测三体系统的行为。

然而,三体运动仍然是一个复杂且具有挑战性的问题。它涉及到多体相互作用、引力力学、数值计算等领域的知识和技术。通过不断的研究和探索,我们逐渐揭开了三体运动的奥秘,为人类对宇宙的理解提供了重要的突破。

今天,三体运动的研究仍然在进行中,科学家们通过模拟、数值计算和实验来探索更加复杂的三体系统,以进一步深入理解宇宙的演化和天体运动的规律。

三体运动的历史见证了人类对宇宙的不断探索和追求,它激发了科学家们的智慧和想象力,也为我们打开了通往宇宙奥秘的大门。无论是在天文学、物理学还是计算科学领域,三体运动都是一个永恒的课题,它将继续激发人类的好奇心和创造力。

我最初的构想是为Windows和MacOS各编一个应用程序,把三体运动打包做成一个可调动态桌面壁纸。再后来我觉先实现H5前端的网页版好一点,然后再做桌面版。于是我觉得使用Unity或者WebGL/Canvas。

设计方向/目标

最终的目标是设计一个可交互的三体运动模拟器,可以自己输入质量,速度,参数等。还要符合物理以及天文相关定律和规则,如牛顿运动定律,万有引力定律,轨道力学和开普勒定律,这样才能最大化模拟真实场景。

更进一步的目标是可以模拟碰撞,等更拟真的事件。还有一些细节,比如星球的尾迹,时间尺度加速等等....

三体运动的方程

对于三体问题,我们可以使用牛顿万有引力定律和牛顿第二定律来描述天体之间的相互作用。假设有三颗恒星分别为恒星1、恒星2和恒星3,它们的质量分别为 m₁、m₂ 和 m₃,位置分别为 (x₁, y₁, z₁)、(x₂, y₂, z₂) 和 (x₃, y₃, z₃)。

根据牛顿第二定律,恒星1的运动方程可以表示为:

恒星2和恒星3的运动方程可以类似地表示。

在上述方程中,G 是万有引力常数,r₁、r₂ 是恒星之间的距离,可以通过欧几里得距离公式计算:

这些方程仅仅描述了每个恒星在三体系统中的运动规律。为了模拟三体运动,需要使用数值方法(如欧拉法、龙格-库塔法等)来逐步计算天体的位置和速度。

需要注意的是,由于三体问题的复杂性,对于长时间模拟或特定的初始条件,可能需要考虑其他因素,例如动量守恒、轨道稳定性等。此外,为了增加模拟的准确性,可能需要使用更精细的数值方法和调整时间步长。

三体运动初步代码框架

这里就是把上面的三体运动数学模型转换成JavaScript代码函数。

计算距离:

计算恒星在x轴方向的加速度:

计算恒星在y轴方向的加速度:

计算恒星在z轴方向的加速度:

用法:

感谢观众老爷们的观看,本期内容到此为止。下期来进行程序的初步设计和框架/引擎的最初实现。点赞过1W继续更新本系列。制作不易求三连加关注!

关键词: