计算角度弹球
Calculate angle Pinball
现在我正在用 ActionScript 编写 Pinball 克隆代码(实际上在这种情况下,语言并不重要)。我有以下问题:我有两个桨和一个以一定速度移动的球(表示为速度矢量)。我无法弄清楚如何在击中球拍后计算球的新速度矢量。我所有的计算都大错特错了。
我有:
桨的当前角度(以弧度为单位)、我的球的速度矢量和该矢量的当前角度(以弧度为单位),其中 1,5708(90 度)是垂直向下的(例如 x = 0 和 y = 5 的速度矢量).
有没有人知道如何处理这个问题。编程语言在这里并不重要 - 伪代码也可以。
您需要在方向为
的直线上镜像速度矢量(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)).
现在我正在用 ActionScript 编写 Pinball 克隆代码(实际上在这种情况下,语言并不重要)。我有以下问题:我有两个桨和一个以一定速度移动的球(表示为速度矢量)。我无法弄清楚如何在击中球拍后计算球的新速度矢量。我所有的计算都大错特错了。
我有: 桨的当前角度(以弧度为单位)、我的球的速度矢量和该矢量的当前角度(以弧度为单位),其中 1,5708(90 度)是垂直向下的(例如 x = 0 和 y = 5 的速度矢量).
有没有人知道如何处理这个问题。编程语言在这里并不重要 - 伪代码也可以。
您需要在方向为
的直线上镜像速度矢量(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)).