乒乓球比赛的数学

时间:2011-03-20 19:39:17

标签: java math

让我们说我有一个角度......什么是合理的方法来寻找下一个球的位置?

变量:bSpeed,bAngle,Ball.x,Ball.y

当你做c ^ 2 = a ^ 2 + b ^ 2时你知道了...有没有办法可以找到c ^ 2可以多长时间并且实际上“画出”它然后使用速度只去其中的一部分...找到一个^ 2和b ^ 2所以你实际上可以有斧头和ay来画球......

提前致谢! (顺便说一句,我不需要代码......只是推理和智慧)

5 个答案:

答案 0 :(得分:2)

delta_x = speed*cos(angle)
delta_y = speed*sin(angle)
new_x = x+delta_x
new_y = y+delta_y

然后你需要在墙击的情况下改变球的速度和角度)

答案 1 :(得分:2)

你的4个变量实际上是一个向量 - 其中向量是方向和幅度/速度的度量(即你表示为bSpeed和bAngle)。使用此表示意味着Ball.x和Ball.y只是成为向量的水平和垂直分量。

给定一个名为v1的向量,我们可以按如下方式计算x和y轴的运动......

xVelocityOfBall = v1.magnitude * cos(v1.angle);
yVelocityOfBall = v1.magnitude * sin(v1.angle);

GPWiki(游戏编程维基)是用于游戏开发的任何数学/物理的绝佳资源。这是他们vector page

的便捷链接

答案 2 :(得分:0)

因为你正在使用bAngle,所以在Sin,Cos和Tan上打开你的教科书。具体来说,你可能会看到Sin的垂直运动和Cos的水平运动。取决于你定义0度面的位置。

此外,您可以考虑缓存水平和垂直速度,因为Sin和Cos很昂贵

答案 3 :(得分:0)

你可能需要考虑乒乓球运动员正在移动的运动的物理特性。例如,如果球员的球在接触球时向左加速,则球将需要向左加速。这代表了物理学中动量的转移。 x和y方向的一般方程组将始终是:

  1. 质量*速度(以x为单位)= x
  2. 中所有对象的质量*速度之和
  3. 质量*速度(y)= y中所有对象的质量*速度之和
  4. 一般来说,你总是在x和y中拥有球的速度所有你需要做的就是确定球和桨的质量(我想这取决于你但我建议让它们变得相同以便于计算)。

    在求解角度方面,它非常简单,你只需要确保反射是相等的。如果球从60度的事故中接近桨(或墙),那么反弹也应该是60度的事件。

答案 4 :(得分:0)

首先,使用sincos函数将角度转换为矢量。这告诉你球的相对x速度和y速度。然后,要了解球的实际走向,请将这些数字乘以球的速度和飞行时间。最后,添加到球的起始位置。这可以为你提供球的结束位置。

在乒乓球比赛中,球可能击中一个物体,在这种情况下你需要纠正速度的变化。