2017-06-12 3 views
1

プロジェクトのシミュレーションをいくつか行います。Pymunkで空間減衰を伴うボディーダンピングコンパウンドはありますか?

私の質問は、体のコンパウンドのダンピング値は、pymunk空間のダンピング値(もしあれば)ですか?

たとえば、SPACE.damping = 0.9のpymunkスペースがある場合、BODY.update_velocity()メソッドの減衰値0.5を設定するボディBODYがあります。 BODYのダンピングは0.9 * 0.5(または他のいくつかのコンポジション)か、0.5になりますか?

私の質問をより明確にすることができますか、事前に感謝してください。

答えて

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. およびT彼の角速度を設定するには:あなたがここに手順1 & 2の実際のコードを見つけることができます body.angular_velocity = body.angular_velocity*damping + body.torque/body.moment * dt

を: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の言葉のソース)

+0

興味深い。ソースコードを教えていただきありがとうございます。 変更された速度関数のダンピング値は、何らかの方法で(構成、掛け算、追加など)space.dampingとやりとりしますか? – Skittles

+0

空間からの減衰は、体の速度関数に渡されます。カスタムベロシティ機能を持っているなら、渡されるダンピングで何をしたいのかをあなたに完全に伝えます。 – viblo

関連する問題