计算角度弹球

时间:2017-01-06 15:41:32

标签: math vector game-physics

现在我正在使用ActionScript编写一个Pinball克隆(实际上在这种情况下,语言并不重要)。我有以下问题:我有两个桨和一个以一定速度移动的球(表示为速度矢量)。我无法弄清楚如何在击球后计算球的新速度矢量。我的所有计算都非常错误。

我拥有的: 桨的当前角度(以弧度表示),我的球的速度矢量和该矢量的当前角度(以弧度表示),其中1,5708(90度)是直线向下(例如x = 0且y = 5的速度矢量) )。

有没有人知道如何处理这个问题。编程语言在这里无所谓 - 伪代码也没关系。

1 个答案:

答案 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)).