在圓形檯球桌上,檯球以一定的速度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