重力在旋风物理引擎

Gravity in the Cyclone Physics Engine

本文关键字:引擎 旋风      更新时间:2023-10-16

我正在基于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;

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

从物理学上,我们知道force = mass * acceleration。为了计算加速度,他们只需要用force除以mass。他们只是坚持这些术语的物理定义。gravity * secondsvelocity

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

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

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