我已经在SO(而不仅仅是)关于arkanoid碰撞检测,即在文具矩形上移动圆碰撞,但是他们都询问如何检测碰撞或如何检测碰撞的哪一侧矩形球命中。我的问题有点不同 - 它涉及在球击中矩形的 角度 时计算新的速度方向。
为了简单起见,让我们假设Vx >= 0
和Vy <= 0
,也就是说,球是从左上方向上和向右来的,并且我想我知道它会击中下方的长方形。绿色箭头显示球的近似方向,蓝点显示包含球击中的矩形下方的线上的第一个点。如果该点严格位于矩形的下方,那么所有这些都是微不足道的 - 只需将Vy
更改为-Vy
即可。然而,当该点位于下侧之外时,这意味着球将接触的矩形的第一个点将是其左下角,在这种情况下,我不认为将Vy
更改为-Vy
是正确的。我认为新的速度角必须取决于蓝点到角落的距离。此外,我认为不仅Vy
而且Vx
必须改变(可能保留V矢量的长度)。
那么, 当我们达到角度 时,我们如何计算新的Vx和Vy?如果你知道解决这个问题的任何好的链接,我会很高兴知道它们。另请注意,我对这个而不是易于编码优化的近似的绝对物理模型更感兴趣。您可以假设没有涉及轮换。非常感谢您提前
答案 0 :(得分:1)
你知道如何从水平墙上弹开。你知道如何从另一个角度的墙上反弹吗?
当圆圈撞到墙壁时,它会在一个点上接触。这一点就是所有关于墙壁的“知道”的圈子;该点的位置为您提供了足够的信息来计算新的 V 。当圆圈撞到角落时,它会在一个点(即角落)处进行接触,因此它会弹跳,就好像它在那一点碰到墙壁一样。
这是否足够继续,或者你想要一些数学? (如果是这样,你对矢量代数有多舒服?)
答案 1 :(得分:1)
在岩石力学中对岩石块进行建模时经常进行的简化是假设矩形的边角半径较小。然后计算是两个接触的曲面中的一个。这种方法倾向于提供比建模角更一致的行为作为直角,因此在需要一致结果的情况下是优选的。