Actionscript 3 RK4在二维重力模拟中的应用

Actionscript 3 RK4在二维重力模拟中的应用,actionscript-3,physics,gravity,Actionscript 3,Physics,Gravity,在ActionScript3.0中,我有两个对象(一颗中心红星和一颗绕轨道运行的蓝色行星)。我想用RK4来绘制轨道。我每帧运行一次模拟,每帧绘制一次。我必须把蓝色行星在x,y和中心行星的位置联系起来,这样我可能会在转换过程中迷失方向。这只适用于1,1象限。当蓝色行星从一个象限穿过另一个象限时,我将调整重力矢量 问题:如果我改变时间步长,轨道会发生剧烈变化。在小的时间步长下,轨道变成一条直线。在较大的时间步长下,轨道会变得更紧。计算每个“K”的加速度的系数不是按dt缩放的(除非它通过之前的速度向量

在ActionScript3.0中,我有两个对象(一颗中心红星和一颗绕轨道运行的蓝色行星)。我想用RK4来绘制轨道。我每帧运行一次模拟,每帧绘制一次。我必须把蓝色行星在x,y和中心行星的位置联系起来,这样我可能会在转换过程中迷失方向。这只适用于1,1象限。当蓝色行星从一个象限穿过另一个象限时,我将调整重力矢量

问题:如果我改变时间步长,轨道会发生剧烈变化。在小的时间步长下,轨道变成一条直线。在较大的时间步长下,轨道会变得更紧。计算每个“K”的加速度的系数不是按dt缩放的(除非它通过之前的速度向量)

以下是RK4代码剪报:


蓝色行星必须具有正确的初始速度才能绕红色行星运行。如果你想要一个圆形轨道,你需要有正确的速度,并且速度的方向与圆形轨道相切。我的猜测是你无意中通过修正空间步长使你的初始速度依赖于你的时间步长。我想知道你为什么选择RK4作为你的积分方法?我做了一个三维重力模拟,最好的积分方法是隐式欧拉法。我还做了euler和verlet。模拟中最困难的事情是确保初始速度是正确的。如果这不正确,取决于您使用的积分方法,它将向内螺旋或飞出轨道。隐式欧拉法是引力模拟的最佳方法,因为它本身可以消除舍入误差。