2012-04-06 9 views
2

私は、ボールを打つために使用できるパドルをユーザーに描こうとしています。しかし、ボールの速度のxとy成分が壁に並べられていないため、ボールが正しく跳ね返るように見えません。どうすればこの問題を回避できますか?任意の角度のボールをバウンスする?

私はGareth Rees hereのアドバイスを試しましたが、それに従うためにはベクターについて十分にわかりません。たとえば、ベクターに正確に何が格納されているのかわかりません - 方向付きの値であることはわかっていますが、その間にある2つの点、勾配、角度を保存していますか?

私が本当に必要とするのは、ボールの打撃として壁の角度とxとyの速度が与えられ、その後新しいxとyの速度を見つけることです。

答えて

6

ガレス・リースは正しい式を得ましたが、私は画像と説明を見つけましたhereもう少し明確です。それは基本的な式は、次のとおりです。

Vnew = -2*(V dot N)*N + V 
where 
V = Incoming Velocity Vector 
N = The Normal Vector of the wall 

あなたはベクトル表記に慣れていないので、ここであなたは、この式のために知っておくべきだ:ベクターは、基本的にはただのx、yのペア、そうV = (v.x, v.y)N = (n.x, n.y)です。平面は、平面に垂直な単位長のベクトルである平面に垂直に最もよく記述されます。次に、数式、b*V = (b*v.x, b*v.y); V dot N = v.x*n.x+v.y*n.y、つまりスカラーです。およびA + B = (a.x+b.x, a.y+b.y)。最後に、任意のベクトルに基づく単位ベクトルを見つけるには、N = M/sqrt(M dot M)です。

表面が湾曲している場合は、接触点で法線を使用してください。

+0

1つの段落のいいベクトルチュートリアル!あなたは(単位ベクトルを見つけるために必要な)除算を定義しませんが、同じ規則が製品と同じであることを推測するのは難しくありません。ベクトルの各成分をスカラで単純に除算します。 – MattJ

関連する問題