Cyclone物理引擎中的重力

时间:2014-03-21 17:14:03

标签: c++

我基于Cyclone物理引擎http://procyclone.com建立了一个基于c ++的2D物理引擎,并且我试图弄清楚为什么代码使用重力矢量乘以质量向对象添加力,

void psiclone::Gravity::addForce(Body* body, double seconds) {
    body->addForce(gravity * body->mass);
}

而不是

body->addForce(gravity * seconds);

当然,代码确实提供了一个update(),包括

velocity.mX += acceleration.getX() * seconds;

但是有2个物体受到重力的影响,即使它们有不同的质量,它们也不应同时撞击地面?

2 个答案:

答案 0 :(得分:0)

从物理学,我们知道force = mass * acceleration。因此,为了计算加速度,他们只需将force除以mass。他们只是坚持使用术语的物理定义。 gravity * seconds将是velocity

答案 1 :(得分:0)

感谢您的回复;在进一步调查后,我在更新函数中错过了一行(旋风的粒子:: integrate())将加速度矢量乘以身体的逆马斯:

acceleration *= inverseMass;
velocity += acceleration * seconds;
position += velocity * seconds;

这允许两个不同质量的物体落到屏幕底部并同时击中。