我基于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个物体受到重力的影响,即使它们有不同的质量,它们也不应同时撞击地面?
答案 0 :(得分:0)
从物理学,我们知道force = mass * acceleration
。因此,为了计算加速度,他们只需将force
除以mass
。他们只是坚持使用术语的物理定义。 gravity * seconds
将是velocity
。
答案 1 :(得分:0)
感谢您的回复;在进一步调查后,我在更新函数中错过了一行(旋风的粒子:: integrate())将加速度矢量乘以身体的逆马斯:
acceleration *= inverseMass;
velocity += acceleration * seconds;
position += velocity * seconds;
这允许两个不同质量的物体落到屏幕底部并同时击中。