我如何编写重力模拟器?我正在制作一种二维空间模拟器,我想要的是有一个行星(一个重心)将物体拉向它。物体是宇宙飞船(基本上只是x和y坐标)。
答案 0 :(得分:2)
使用牛顿定律 - 两个物体感觉到的力是有吸引力的(从一个物体质量中心点到另一个物体),彼此相等,并且值等于g * m1 * m2 /(d * d)(其中g是一个常数,m1和m2是质量,d是中心点的距离。
然而,如果你有一颗行星,宇宙飞船对地球的吸引力的影响可以忽略不计,所以通常不会对地球进行计算;它只是静止不动。
请记住,F = m * a,其中F是上面计算的力,m是宇宙飞船的质量,a是物体的加速度。根据加速度计算速度,并根据速度计算位置。
答案 1 :(得分:1)
查看普林斯顿大学的N-Body作业。它描述了你想要的东西。
然而,为了快速总结,您可以从基本三角学和牛顿万有引力定律推导出方程式:
F = GMm/(r^2)
其中F =两个物体之间的力,G =重力常数,M和m是相关质量,r是它们之间的距离。
有点mathemagic,你得到以下结果:
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是它们之间的距离。