【问题标题】:Java Simulate realistic gravity [closed]Java模拟现实重力[关闭]
【发布时间】:2014-07-13 23:11:33
【问题描述】:

我将如何编写重力模拟器?我正在制作一种 2d 空间模拟器,我想要的是有一个行星(重心)将物体拉向它。该对象是一艘宇宙飞船(基本上只有 x 和 y 坐标)。

【问题讨论】:

  • 发布一些代码,向我们展示您已经走了多远以及遇到了困难。

标签: java gravity


【解决方案1】:

使用牛顿定律 - 两个物体感觉到的力是有吸引力的(从一个物体的质心到另一个物体的质心),彼此相等,并且值等于 g*m1*m2/(d*d)(其中 g是一个常数,m1和m2是质量,d是中心点的距离。

但是,如果你有一颗行星,飞船对行星的吸引力的影响可以忽略不计,所以通常不会为行星做计算;它只是静止的。

记住F=m*a,其中F是上面计算的力,m是飞船的质量,a是物体的加速度。根据加速度计算速度,根据速度计算位置。

【讨论】:

  • 既然有 x 和 y 坐标,就需要对速度进行划分,以便它可以应用于两个坐标。如何划分速度?
【解决方案2】:

查看普林斯顿大学的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 是它们之间的距离。

【讨论】:

  • 这是我一直在寻找的,完美运行。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2010-10-06
  • 2010-10-13
  • 2013-03-26
  • 1970-01-01
相关资源
最近更新 更多