1

为一个项目做一些模拟。

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

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

让我知道我是否可以让我的问题更清楚,并提前感谢您。

4

1 回答 1

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 术语楼上回答)

于 2017-06-13T20:07:23.053 回答