在Pymunk中,每个身体阻尼复合空间阻尼吗?

时间:2017-06-12 18:41:39

标签: python pygame simulation pymunk

为项目进行一些模拟。

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

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

如果我能够更清楚地表达我的问题,请告诉我,并提前感谢你。

1 个答案:

答案 0 :(得分:1)

阻尼的使用方式如下:

  1. 当踩空间(space.step)时,将使用的阻尼由damping = pow(space.damping, dt)
  2. 计算
  3. 接下来,它将调用空间中每个物体的速度函数,从步骤1传递计算的阻尼(恰好在步骤1中的阻尼计算下方)
  4. 默认速度函数执行此计算以设置速度: body.velocity = body.velocity * damping + (gravity + body.force / body.mass) * dt
  5. 这是设置角速度: body.angular_velocity = body.angular_velocity*damping + body.torque / body.moment * dt
  6. 您可以在此处找到步骤1和2的实际代码:https://github.com/viblo/pymunk/blob/master/chipmunk_src/src/cpSpaceStep.c#L399

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