桌球游戏
2015-06-07 11:02
260 查看
1、球的碰撞
已知两球碰撞前的速度,求两球碰撞之后的速度是游戏的关键。
下面就阐述一下这里的原理:
我们可以计算得出这样一个结论:对于两个等质量小球的对心碰撞(两球速度方向在同一条直线上的碰撞),碰撞之后,交换速度。
但是对于不是对心的碰撞呢?这里可以把速度分成沿着对心的方向的速度分量,与垂直于对心方向上的速度分量。具体如下图:
如图,对于球1,其速度方向可以分为垂直于对心方向的速度
其值为Vx1*Sin(a)-Vy1Cos(a),这个方向上的速度碰撞前后不会变化。
根据上面交换速度的结论,得到球1对心方向的速度变成了Vx2*Cos(a)+Vy2*Sin(a)。
所以球1碰撞后的速度变成了下图所描述的样子。
故小球碰撞后的速度如下
X方向:(Vx1*Sin(a)-Vy1Cos(a))*Sin(a)+(Vx2*Cos(a)+Vy2*Sin(a))*Cos(a)
Y方向:(Vx1*Sin(a)-Vy1Cos(a))*Cos(a)+(Vx2*Cos(a)+Vy2*Sin(a))*Sin(a)
求球2的碰撞后速度原理也一样。
已知两球碰撞前的速度,求两球碰撞之后的速度是游戏的关键。
下面就阐述一下这里的原理:
我们可以计算得出这样一个结论:对于两个等质量小球的对心碰撞(两球速度方向在同一条直线上的碰撞),碰撞之后,交换速度。
但是对于不是对心的碰撞呢?这里可以把速度分成沿着对心的方向的速度分量,与垂直于对心方向上的速度分量。具体如下图:
如图,对于球1,其速度方向可以分为垂直于对心方向的速度
其值为Vx1*Sin(a)-Vy1Cos(a),这个方向上的速度碰撞前后不会变化。
根据上面交换速度的结论,得到球1对心方向的速度变成了Vx2*Cos(a)+Vy2*Sin(a)。
所以球1碰撞后的速度变成了下图所描述的样子。
故小球碰撞后的速度如下
X方向:(Vx1*Sin(a)-Vy1Cos(a))*Sin(a)+(Vx2*Cos(a)+Vy2*Sin(a))*Cos(a)
Y方向:(Vx1*Sin(a)-Vy1Cos(a))*Cos(a)+(Vx2*Cos(a)+Vy2*Sin(a))*Sin(a)
求球2的碰撞后速度原理也一样。
相关文章推荐
- 论本事
- javsscript问题收集
- poj1323Game Prediction
- 斯坦福大学深度学习与自然语言处理第二讲:词向量
- gdb调试命令
- mysql 中的 my.ini 配置文件
- 【j2ee spring】26、巴巴运动网-整合hibernate4(1)
- JS结构图
- 卸载 Windows 8/8.1/10 无法常规卸载的内置应用
- 信庭嵌入式工作室-互联网+的交流
- C#操作XML
- 【转】arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- javascript操作ASP.NET服务器控件
- 1130-host '192.168.x.x' is not allowed to conneciton to this MySQL server
- leetcode Word Break II
- DirectShow自带的实例(打开摄像头)
- JavaScript OOP 创建对象的7种方式
- ngx_lua 内幕
- 反射注解的程序举例
- 加密隧道绕过WAF