2012-01-15 13 views
4

私は剛体2D物理プログラムの円の衝突を検出できるレベルにあります。 これらの円にはランダムなx、yの速度があります。 それらのどれかが他のものに当たると、私は彼らがお互いに衝突していると言うことができます!このステップが問題です。 私は速度のXとYの値を取って、衝突点の軸に基づいて変換しようとしています。つまり、法線力の軸と、通常の力軸に対して過大な軸を意味します。 perpandacular軸は、接線軸...と呼ばれていますか?2つの衝突円、数式をコードに変換できません

私はsin cos tanを使用しますが、問題は、sin cos tanは常に右辺である角度を返すだけなので、オブジェクトは決して左側に移動しません....すべてのX軸の勢い衝突するオブジェクトは右側に固定されます。 これは非常に多くの問題を引き起こし、私はそれを修正する方法を見つけることができません。 私は少しでもアドバイスをいただければ幸いです。 ありがとうございます。

+0

atan2をお試しください。 SinとCosの場合、角度情報はすでに提供されています。 – rsaxvc

+0

もう少し説明してください... – Bug

+0

atan2はxとyの両方の引数をとるので、象限の情報が失われることはありません。 – rsaxvc

答えて

1

三角関数(sin、cos、tanなど)を使用しないでください。

衝突方向にオブジェクトに衝撃を加えたい、つまり衝突が衝突方向ベクトルの何倍かを適用したいとします。オブジェクトの運動量を計算し、単純にインパルスを加えます。

単純な弾性衝突を行う場合、運動量とエネルギーは保存されます。これらの制約が与えられれば、インパルスを計算することができます。 This wikipedia articleに詳細があります。

+0

衝動に依頼するかもしれませんか?私はまだこの式を適用することができますか?または私は衝突を処理する全く異なる方法を考え出すべきでしょうか? V1f =(V1i(m1 - m2)+2 m2V2i)/(m1 + m2) – Bug

+0

単純な弾性衝突を行っているならば、運動量とエネルギーは保存されます。これらの制約が与えられれば、インパルスを計算することができます。このウィキペディアの記事には詳細があります:http://en.wikipedia.org/wiki/Elastic_collision – arx

関連する問題