现在我正在使用ActionScript编写一个Pinball克隆(实际上在这种情况下,语言并不重要)。我有以下问题:我有两个桨和一个以一定速度移动的球(表示为速度矢量)。我无法弄清楚如何在击球后计算球的新速度矢量。我的所有计算都非常错误。
我拥有的: 桨的当前角度(以弧度表示),我的球的速度矢量和该矢量的当前角度(以弧度表示),其中1,5708(90度)是直线向下(例如x = 0且y = 5的速度矢量) )。
有没有人知道如何处理这个问题。编程语言在这里无所谓 - 伪代码也没关系。
答案 0 :(得分:2)
您需要在方向
的线上镜像速度矢量(vx,vy)
(c,s) = ( cos(anglePaddle), sin(anglePaddle))
以便与其正交的分量恢复并且与其平行的分量保持不变。正交分量是
(-s,c)*(-s*vx+c*vy)
使反射的矢量变为
(vx,vy) - 2*(-s,c)*(-s*vx+c*vy) = ( c2*vx + s2*vy, s2*vx - c2*vy )
其中双角三角标识用于简化使用
(c2,s2) = ( cos(2*anglePaddle), sin(2*anglePaddle)).