2011-02-04 11 views
1

私はAndroid携帯用Javaでバウンスボールゲームを書いています。衝突や反発係数の小さな問題を除けば、すべてがうまくいくようです。Java Bouncing Ball Game - ローリングボールシナリオ

ボールがサーフェスに衝突すると、このサーフェスのベクトル法線が計算され(nxとny)、ボールのベクトル方向(dxとdy)がこの法線ベクトルに反映されます。

現時点では、復元係数として0.9を使用しているため、dxとdyの両方にこの値を掛けています。これは、圧延を適切にシミュレートしていないため、はるかに単純すぎます。

新しいdxとdyをより正確に計算する簡単な式があるので、ボールが衝突したときに斜面とほぼ平行に移動しているときには、衝突する速度が遅くなります。

私のコードを投稿しないという謝罪、私は自分のコンピュータから離れているので、後で誰かの理解を助けることができればそれを投稿することができます。

ご協力いただきありがとうございます。

+1

私はこれを尋ねるのに最適な場所であるとは確信していません。私はいくつかの数学/物理stackexchangesがあると信じています。 –

+0

おそらくGameDev SEですか? –

答えて

2

反発係数は、衝突する物体の相対的な弾力性と関係がある。ボールとサーフェスの両方がインパクト時に変形するという事実を説明する単純な方法です。変形のエネルギーの一部は失われる(例えば、発生した熱、音波など)が、そのほとんどは他の身体を「押し込む」。

反発係数が1.0に等しい場合、エネルギーは失われません。それを「ファッジファクター」と考えて、動的な弾力性の問題を起こす必要はありません。

ローリングは別の問題です。

反発係数は、速度の標準成分にのみ適用する必要があると思います。実際の物理学にもっと近づけたい場合は、接線成分に摩擦と滑りを適用する必要があります。

また、x、y方向の変位以外の式も必要です。ボールの重心の周りのz軸回りのトルクに別のものが必要になります。

ニュートンの運動方程式は、xとy方向の力とボールのz軸まわりのモーメントを合計します。

0

私は間違っているかもしれませんが、これに対する解決策はボールの角度を計算することです(artan(dy/dx)を意味します)。

この角度が原点を基準にしている場合、この角度のコサインを乗算することができます。完全に平行であれば速度は変わらず、完全に垂直であれば速度はゼロになります。

ボールが跳ね返るスピードが最大と最大にあることを確認するには、これを考慮する必要があります。

希望すると助かります!

+0

これは非常に単純な解決法であり、物理学の抽象度が高い。 – Everton