【问题标题】:Does Per-Body Damping Compound With Space Damping in Pymunk?Pymunk 中的每体阻尼是否与空间阻尼复合?
【发布时间】:2017-06-12 18:41:38
【问题描述】:

为一个项目做一些模拟。

我的问题是身体的阻尼值是否与 pymunk 空间的阻尼值(如果有的话)复合?

例如,如果我有一个 pymunk 空间 SPACE,SPACE.damping = 0.9,然后我有一个主体 BODY,我将它的 BODY.update_velocity() 方法设置为阻尼值 0.5,BODY 的阻尼是 0.9*0.5(或其他组合)还是 0.5?

如果我能让我的问题更清楚,请告诉我,并提前感谢您。

【问题讨论】:

    标签: python pygame simulation pymunk


    【解决方案1】:

    阻尼是这样使用的:

    1. 当步进空间(space.step)时,将使用的阻尼由damping = pow(space.damping, dt)计算
    2. 接下来,它将调用空间中每个物体的速度函数,传入第 1 步计算的阻尼(就在第 1 步中的阻尼计算下方)
    3. 默认速度函数执行此计算以设置速度: body.velocity = body.velocity * damping + (gravity + body.force / body.mass) * dt
    4. 设置角速度: body.angular_velocity = body.angular_velocity*damping + body.torque / body.moment * dt

    您可以在此处找到第 1 步和第 2 步的实际代码:https://github.com/viblo/pymunk/blob/master/chipmunk_src/src/cpSpaceStep.c#L399

    此处第 3 步和第 4 步的代码:https://github.com/viblo/pymunk/blob/master/chipmunk_src/src/cpBody.c#L494 (我在上面的回答中将源代码中的 c 代码翻译成 python/pymunk 术语)

    【讨论】:

    • 有趣。谢谢你指点我的源代码。所以,我仍然不清楚:修改后的速度函数的阻尼值是否以任何方式(合成、相乘、相加等)与 space.damping 相互作用?
    • 来自空间的阻尼被传递到体速度函数中。如果您有自定义速度函数,则完全取决于您要对传入的阻尼做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多