Gareth Rees得到了正确的公式,但我发现这里的图片和解释更加清晰.也就是说,基本公式是:
Vnew = -2*(V dot N)*N + V
where
V = Incoming Velocity Vector
N = The Normal Vector of the wall
Run Code Online (Sandbox Code Playgroud)
因为你不熟悉矢量符号,所以你需要知道这个公式:矢量基本上只是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).
如果表面是弯曲的,请使用接触点处的法线.