pymunk 部队的相对规模

Relative sizes of pymunk forces

在Pymunk中,重力的大小是否与apply_force_at_local_point或apply_force_at_world_point的大小相同,相对而言。也就是说,重力的大小=(20,40)是否等于apply_force_at_world_point的大小((20,40),object的位置).

我用运动方程式,最终位置=初始位置+初始速度*时间+1/2*加速度*t^2来测试。事实证明,这些幅度并不相等。例如,(0,-7888)的力等于(0,-1750)的重力。

我正在尝试确定 apply_force_at_world_point 可以 equal/cancel 克服重力的力。我知道我可以将 body 的重力设置为零来实现这种效果,但我的目标是确定足以使给定重量和磁场强度的磁铁悬浮的磁力。

如何找到等于重力的力的大小(无需测试一堆随机值)。

我希望所提供的信息足以理解问题

您可以在 Chipmunk 源代码中看到物体的速度是如何更新的:https://github.com/viblo/Chipmunk2D/blob/master/src/cpBody.c#L501

body->v = cpvadd(cpvmult(body->v, damping), cpvmult(cpvadd(gravity, cpvmult(body->f, body->m_inv)), dt));

翻译成 Python/Pymunk 这将是这样的:

body.velocity = body.velocity * damping + (gravity + body.force / body.mass) * dt

由此我认为这应该可以产生与重力相匹配的反作用力:

body.apply_force_at_local_point(-space.gravity * body.mass)

(我在一个简单的模拟中用一些重力和一个球 shape/body 测试了这个,它似乎按预期工作,而不是让球保持原状)