在一个圆形的台球桌上,台球以速度v1撞击该桌子的边界。检测到这种碰撞的方法如下:
现在如何计算碰撞后的新速度v2,使得入射角等于反射角(弹性碰撞)?
注:台球被表示为一个点p(x,y),具有速度向量v(x,y)。模拟中没有摩擦。
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,使得入射角等于反射角(弹性碰撞)?
注:台球被表示为一个点p(x,y),具有速度向量v(x,y)。模拟中没有摩擦。