Ball-Line Collision Bounce Angles Python

时间:2015-04-25 16:40:50

标签: python vector line collision

我正在编写一个程序,其中用户创建受到重力反弹的球的线(表示为(x1,y1,x2,y2))。因此,这些线不一定是水平的。我在获得正确的反弹角度方面遇到了麻烦。我找到了提供一种好方法的来源,但为了使用它我需要找到线的反弹角。

显然有两种可能的法向量,但我需要面向球碰撞一侧的那种。唯一的问题是我需要在我的程序中使用Tkinter,并且由于时间步长,我的碰撞检测工作方式有时会让球在检测到碰撞之前略微超过线。所以我不能只使用球的中心(cx,cy)来确定正确的法向量。我可能在脑海中过于复杂,但我在提出解决方案时遇到了麻烦。我认为它需要涉及碰撞时球的入射速度矢量(vx,vy),但我不确定如何。

任何想法都会非常感激!!

1 个答案:

答案 0 :(得分:0)

要使用的正确法向量是n scalar v = n.x v.x + n.y v.y为负的法向量。实际上,当两个向量全局在同一方向时,标量积为正。所以想要它是消极的意味着你将有两个相反指向的向量,这正是你想要的。

但是,你不能在角度上定义这样的法线向量,所以我不知道你如何编程你的算法,但要注意这个边缘情况。