Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 相对重力_Java_Jmonkeyengine_Bulletphysics - Fatal编程技术网

Java 相对重力

Java 相对重力,java,jmonkeyengine,bulletphysics,Java,Jmonkeyengine,Bulletphysics,我最近开始使用jMonkey引擎,这非常好。但我在尝试实现相对重力时被卡住了 我想让行星围绕彼此旋转(不一定是完美的圆形轨道,取决于速度)。因此,每个对象都应该影响其他对象 我现在所拥有的: 关闭全球重力 初始化球体并添加到物理空间 我注意到在RigidBodyControl类中有方法setGravity,但它只是设置方向。所以物体一直朝那个方向移动直到消失 我真的很期待答案。物理学中的重力是所有物体的一个方向 您应该像以前一样将重力设置为0,并在每个模拟步骤后使用以下公式对所有对象应用力 F

我最近开始使用jMonkey引擎,这非常好。但我在尝试实现相对重力时被卡住了

我想让行星围绕彼此旋转(不一定是完美的圆形轨道,取决于速度)。因此,每个对象都应该影响其他对象

我现在所拥有的:

关闭全球重力

初始化球体并添加到物理空间

我注意到在RigidBodyControl类中有方法setGravity,但它只是设置方向。所以物体一直朝那个方向移动直到消失


我真的很期待答案。

物理学中的重力是所有物体的一个方向

您应该像以前一样将重力设置为0,并在每个模拟步骤后使用以下公式对所有对象应用力

F = m * a

F - force
m - objects mass
a - acceleration 
地球上的规则加速度是
g==9.8

在太空中,加速度可能取决于与一个或多个行星的距离

<>如果你喜欢模拟像愤怒的小鸟空间那样的游戏,那么你应该考虑在游戏中阅读关于重力的文章。

如果你想要稳定的系统,不要使用模拟物理。(但若系统有足够多的重要机构,并没有人知道它应该如何运作,所以这并不重要)


对于像太阳系这样的东西,我会对行星(自己移动它们)使用运动学模式,对船只、小行星等使用力。(除非你在太阳系中做双星)

万有引力定律说
F=G(m1*m2)/r^2
其中
m1
m2
是两个天体的质量,
r
是距离
G
是重力常数

牛顿第二定律说,
F=m*a
,所以如果我们把它们放在一起,质量为
m1
的物体将经历
a=G*m2/r^2
的加速度,这是由质量为
m2
的物体的引力引起的

现在,你需要做的是:在模拟的每个步骤中,对于每个物体,求出每个物体的
a
s,并将该加速度应用于物体的速度

a(body1) = G * sum[ mass(body2) / dist(body1, body2)^2 , for each body2 ]

您可以使用applyCentralForce方法应用强制谢谢,我认为可能有“更简单”的方法来实现它。但没问题,我会按照你建议的方式尝试:)
F = m * a

F - force
m - objects mass
a - acceleration 
a(body1) = G * sum[ mass(body2) / dist(body1, body2)^2 , for each body2 ]