円形のビリヤードテーブルでは、ビリヤードボールがある速度v1でそのテーブルの境界に衝突します。円の衝突後の新しい速度
double s = sqrt((p.x-a)*(p.x-a) + (p.y-b)*(p.y-b));
if (s<r) // point lies inside circle
// do nothing
else if (s==r) // point lies on circle
// calculate new velocity
else if (s>r) // point lies outside circle
// move point back onto circle (I already have that part)
// calculate new velocity
を今衝突後新しい速度V2は、反射(弾性衝突)の入射角=の角度こと、計算することが方法を次のように、この衝突が検出されましたか?
PS:ビリヤードボールは、速度ベクトルv(x、y)を有する点p(x、y)によって表される。シミュレーションはのないです。
この質問はC++固有のようではありません。実際、それはプログラミング問題よりも数学的質問のように思えます。 –
初速はどこですか?どのようにそれを表現していますか? –
「v_new = coeff *(v_old - 2 * dot(v_old、boundary_normal)* boundary_normal);」のようなものは真剣に単純化された物理については? – Bart