【问题标题】:Relative gravity相对重力
【发布时间】:2012-09-11 13:21:17
【问题描述】:

我最近开始使用jMonkey引擎,非常好。但是我在尝试实现相对重力时遇到了困难。

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

我现在拥有的:

关闭全局重力

bulletAppState.getPhysicsSpace().setGravity(Vector3f.ZERO);

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

Sphere sphere = new Sphere(50, 50, 5);
Geometry sun = new Geometry("Sun", sphere);

sun.setMaterial(stone_mat);
rootNode.attachChild(sun);
sun.setLocalTranslation(0, 0, 0);

sunPhysics = new RigidBodyControl((float) (50*Math.pow(10, 5)));
sun.addControl(sunPhysics);
bulletAppState.getPhysicsSpace().add(sunPhysics);

Geometry mercury = new Geometry("Mercury", sphere);

mercury.setMaterial(stone_mat);
rootNode.attachChild(mercury);
mercury.setLocalTranslation(15f, 0, 0);

mercuryPhysics = new RigidBodyControl((float) (5));
mercury.addControl(mercuryPhysics);
bulletAppState.getPhysicsSpace().add(mercuryPhysics);

我注意到 RigidBodyControl 类中有 setGravity 方法,但它只是设置方向。所以对象会一直走下去,直到它消失。

我真的很期待答案。

【问题讨论】:

    标签: java jmonkeyengine bulletphysics


    【解决方案1】:

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

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

    现在,您需要做的是:在模拟的每一步中,对于每个物体,将 as 与其他物体相加,并将该加速度应用于物体的速度。

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

    【讨论】:

      【解决方案2】:

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

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

      F = m * a
      
      F - force
      m - objects mass
      a - acceleration 
      

      地球上的常规加速度是g == 9.8

      在太空中,加速度可能都取决于与行星的距离。

      如果您喜欢模拟 Angry Birds Space 之类的游戏,那么您应该考虑阅读有关该游戏中重力的文章 http://www.wired.com/wiredscience/2012/03/the-gravitational-force-in-angry-birds-space/

      【讨论】:

      • 您可以使用 applyCentralForce 方法施加力
      • 谢谢,我认为可能有“更简单”的方式来实现它。但没问题,我会按照你建议的方式尝试:)
      【解决方案3】:

      如果您想要稳定的系统,请不要使用模拟物理。 (但如果系统有足够多的重要体,没有人知道它应该如何表现,所以没关系。

      对于像太阳系这样的事物,我会对行星使用运动学模式(自己移动它们),而对于船舶、小行星等,我会使用力。 (除非你在太阳系做台球)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多