如何计算点的非轴平行反弹

      Flash 2007-10-30 18:12

       已知条件是我们已经知道了一个球的运动的速度为Vi=[20,10],两个点p1=[10,30],p2=[40,20]确定的一条直线S:如图所示:

 

       我们先求出N,因为S的向量为S=p2-p1,利用向量的减法来求出S=[30,-10],利用垂直向量的转换公式[y,-x]可以得到N=[-10,-30]。N'是N的单位向量。他的计算方法是:

M=sqrt((-10)^2+(-30)^2)=31.62,那么N'=[-10/31.62,-30/31.62]=[-0.31,-0.94]

       得到上面的一些条件还是不够的,还需要其他的条件来参与,如下图:

 

      上图中多了几个向量,只要将他们求出我们就可以得到我们想要得Vf了。首先看一下V和V',,实际上他们是相同的。知道V就知道了V',而Vf=V'+P。因此我们需要计算出P和V。

     利用向量的点乘来计算出Vi在N'上的投影。实际上投影是一个标量,那么如何将他转换为一个向量,这里就是一个关键:转换的方法是将投影X这个N'来计算出向量P=N'*(-Vi*N')。(我们对Vi取反的原因是Vi的方向是没有办法来计算他在N'上的投影的

     投影实际上就是对Vi和N'取模。因此我们得到了P=[1.2,3.70]。我们对Vi取反,可以得到P=-Vi+V,而Vf=P+V,因此Vf=2P+Vi。P我们已经得到了,利用这个公式我们就可以直接的计算出Vf=[17.6,12.6]。

     因此球在碰撞了墙壁后的速度变成了[17.6,12.6]。

以上的内容为个人的原创作品,如蒙转载,请注明出处,如有错误或者是不明之处,请指正。更多的教程到www.toswf.com。

标签集:TAGS:向量 反射
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}