我正在编写一个程序,其中用户创建受到重力反弹的球的线(表示为(x1,y1,x2,y2))。因此,这些线不一定是水平的。我在获得正确的反弹角度方面遇到了麻烦。我找到了提供一种好方法的来源,但为了使用它我需要找到线的反弹角。
显然有两种可能的法向量,但我需要面向球碰撞一侧的那种。唯一的问题是我需要在我的程序中使用Tkinter,并且由于时间步长,我的碰撞检测工作方式有时会让球在检测到碰撞之前略微超过线。所以我不能只使用球的中心(cx,cy)来确定正确的法向量。我可能在脑海中过于复杂,但我在提出解决方案时遇到了麻烦。我认为它需要涉及碰撞时球的入射速度矢量(vx,vy),但我不确定如何。
任何想法都会非常感激!!
答案 0 :(得分:0)
要使用的正确法向量是n scalar v = n.x v.x + n.y v.y
为负的法向量。实际上,当两个向量全局在同一方向时,标量积为正。所以想要它是消极的意味着你将有两个相反指向的向量,这正是你想要的。
但是,你不能在角度上定义这样的法线向量,所以我不知道你如何编程你的算法,但要注意这个边缘情况。