地球在java上绕太阳运行

时间:2015-12-04 13:56:14

标签: java

运行程序时,会打印“NaN”值。我推断出错误在于我的主要类在“while.componentY()”和“Sun.componentX()”部分中的do while循环中,因为新的Grav Field除以零。为了纠正这个问题,我试图在Gravfield写一个名为CalcAcc的新方法来解决太阳与地球之间的力量。我不确定如何使用向量将其实现到我的主要方法,以及如何使其正确地输出地球的位置和速度。请参阅下面的代码,非常感谢。

为了澄清我的模拟由4个不同的类组成,我认为我的PhysicsVector类不是问题的根源。

1 个答案:

答案 0 :(得分:2)

在这种情况下,你的GravField似乎是一种不寻常的抽象。在“简化”的物理引擎中,你可以拥有一个重力“场”,在每个物体上施加恒定的力量,就像你在地球上一样。

在这种情况下,你要模拟空间,重力被认为是空间/时间的扭曲。每次物体移动时,它都会影响其他物体上的力。

我建议您重新考虑抽象,并且对于引擎的每次迭代,只需计算模拟中每对对象组合之间的重力。这将是一个O(n ^ 2)操作!