java中的池游戏 - 球碰撞算法

时间:2013-08-12 14:06:37

标签: java android algorithm pool

我正在用java开发一个用于andorid的池游戏。我试图让球在它们之间碰撞时遇到问题。所有球具有相同的质量和半径。我知道每个球碰撞前的位置和它们的速度(x,y),我需要知道碰撞后每个球的速度。

有人可以给我一个算法或公式来计算它们吗?

2 个答案:

答案 0 :(得分:3)

答案实际上属于物理学(碰撞动力学),而不是计算机科学。

主要有两种类型的碰撞 - 弹性和非弹性。要模拟真实场景,您应该实现非弹性规则。然而,它们更复杂,除了粒子质量和速度之外还涉及几个变量。因此,最好从弹性碰撞开始。

解决方案(弹性):这里有两条规则 - 保持动量保持动能。比如u1,u2是质量为m1,m2的球的初始速度,它们的最终速度是V1,V2:

m 1 u 1 + m 2 u 2 = m 1 < / sub> V 1 + m 2 V 2

m 1 u 1 2 + m 2 u 2 2 = m 1 V 1 2 + m 2 V 2 2

从已知值 m 1 ,u 1 ,m 2 ,u 2 <求解上述等式/ sub> ,您将获得 V 1 V 2

答案 1 :(得分:1)

我在游戏中使用以下链接进行圆碰撞算法。对我来说很棒。 https://sites.google.com/site/t3hprogrammer/research/circle-circle-collision-tutorial