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