1

2D ボールから壁への衝突/跳ねるアニメーション プログラムを実行しています。私はなんとかボールとボールの衝突、ボールと直線の壁の衝突 (両方とも弾性衝突) を行うことができました。

私の質問は、曲面で跳ね返るボールの衝突をどのように処理できるかということです。たとえば、ボールが円の中に閉じ込められて跳ね返る (円は壁)。

乾杯

ps私はCプログラミング言語を使用しています

4

2 に答える 2

2

基本原則は常に次のとおりです。

  • 衝突が発生したかどうかを調べる
  • 衝突の接線を見つける
  • 衝突を線との衝突として扱う

円と円の衝突の場合:

  • を 1 つの円の半径r1とします (3D では球)
  • もうr2一方の円の半径を
  • それらdの中心の距離を
  • の場合d>r1+r2、円は互いに完全に外側にあります
  • の場合r1>r2+d、2 番目の円は最初の円の中に完全に入っています。
  • の場合r2>r1+d、最初の円は最後の円の中に完全に入っています
  • そうでなければ、円は重なります:
    • 接線 (3D では接平面) は、両方の中心を結ぶ線に対して垂直です。
    • 最初の円が動かない場合は、接平面を最初の円に接するようにします (最良の結果を得るために)。
    • それ以外の場合、接平面の位置の最適な選択は、両方の円の質量に依存します (質量の中心を維持する位置を選択してください)。
    • 2d の円は、摩擦による場合を除いて、衝突から角運動量を得ることはありません
于 2013-02-06T11:12:40.923 に答える
1

私見ですが、ボールが円形の壁の内側に閉じ込められている場合、壁とボールの間の接触点が無視できる場合、ボールの反射は通常の壁の場合と同じように管理されます。唯一の変更点は、ボールと壁の接触点で接する反射面です。したがって、接線の角度は、ボールの速度の角度を決定する衝突のさまざまなポイントで異なります。

凸曲面は、曲率と同じ半径の巨大な球と考えることで扱うことができます。したがって、2 つのボール間の衝突を計算しているだけです。もちろん、この場合、表面の質量が無限大であることを考慮して、弾性衝突方程式から方程式を導出する必要があります。

于 2013-02-06T11:10:21.597 に答える