【发布时间】:2014-07-13 23:11:33
【问题描述】:
我将如何编写重力模拟器?我正在制作一种 2d 空间模拟器,我想要的是有一个行星(重心)将物体拉向它。该对象是一艘宇宙飞船(基本上只有 x 和 y 坐标)。
【问题讨论】:
-
发布一些代码,向我们展示您已经走了多远以及遇到了困难。
我将如何编写重力模拟器?我正在制作一种 2d 空间模拟器,我想要的是有一个行星(重心)将物体拉向它。该对象是一艘宇宙飞船(基本上只有 x 和 y 坐标)。
【问题讨论】:
使用牛顿定律 - 两个物体感觉到的力是有吸引力的(从一个物体的质心到另一个物体的质心),彼此相等,并且值等于 g*m1*m2/(d*d)(其中 g是一个常数,m1和m2是质量,d是中心点的距离。
但是,如果你有一颗行星,飞船对行星的吸引力的影响可以忽略不计,所以通常不会为行星做计算;它只是静止的。
记住F=m*a,其中F是上面计算的力,m是飞船的质量,a是物体的加速度。根据加速度计算速度,根据速度计算位置。
【讨论】:
查看普林斯顿大学的N-Body 作业。它描述了你想要什么。
但是,为了快速总结,您可以从基本三角学和牛顿万有引力定律推导出方程:
F = GMm/(r^2)
其中 F = 两个物体之间的力,G = 引力常数,M 和 m 是相关质量,r 是它们之间的距离。
一点数学运算,你会得到以下结果:
F_x = F(x_2 - x_1)/r
F_y = F(y_2 - y_1)/r
其中 F_x 是 x 方向上的重力(F_y 相同,但在 y 方向上),x_2 和 y_2 是您的一个物体的位置,x_1 和 y_1 是另一个物体的位置,F 定义如上, r 是它们之间的距离。
【讨论】: