皮蒙克力的相对大小

问题描述 投票:0回答:1

在皮蒙克中,相对而言,重力的大小与

apply_force_at_local_point()
apply_force_at_world_point()
的大小相同。换句话说,
gravity=(20,40)
的大小等于
apply_force_at_world_point((20,40),<object's position>)
的大小吗?

我使用运动方程

final position = initial position + initial velocity * time + 1/2 * acceleration * t^2
来测试这一点。事实证明,这些幅度并不相等。例如,需要
(0,-7888)
的力才能等于
(0,-1750)
的重力。

我正在尝试确定等于/抵消重力的

apply_force_at_world_point()
力。我知道我可以将身体的重力设置为零来实现这种效果,但我的目标是确定足以悬浮给定重量和磁强度的磁铁的磁力。

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

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

simulation gravity pymunk
1个回答
0
投票

您可以在 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)

(我在一个简单的模拟中测试了这一点,具有一定的重力和球形/身体,它似乎按预期工作,而不是让球留在原处掉落)

© www.soinside.com 2019 - 2024. All rights reserved.