2012-01-05 11 views
0

私はPythonでPythonでPongを作っています。私は反射でいくつかの問題に遭遇しました。Pongゲームの三角法と衝突/反射

ボールには角度が付いています。正のyは下にあるので、この角度は下向きです。ボールが上部または下部の壁に当たった場合、角度を単に打ち消すことができ、正しく反映されますが、問題は左右の壁にあります。この場合、角度を変える方法について三角法を理解することはできません。私は現在、以下のスニペットの組み合わせを試していますが、運はありません。

self.angle = -(self.angle - math.pi/2) 

私はコードを添付しました。あなたは簡単にそれを試すことができます。私がまだ含まれていない、または使用していない "フレームレート"モジュールを取り出してください。私はどんな入力にも感謝します。ありがとう!

+0

コードは次のとおりです。http://dl.dropbox.com/u/7264839/code/pong.py – ballaw

答えて

0

あなたは使用する必要があります。

math.pi - angle 
1

あなたはAngle of Incidenceに見たいと思うでしょう。

enter image description here

基本的に、あなたの入ってくるベクトルとボールが当たっている壁の法線との間の角度シータを見つけたいと思うでしょう。入ってくる角度が(壁の法線) - シータの場合、結果の角度は(壁の法線)シータです。

あなたの入ってくるベクトルと壁の法線との間のドット積を使って角度を求め、次に逆余弦を取る(ベクトルを最初に正規化する)ことができます。