计算圆形碰到矩形时的位置

问题描述


我有以下情况: 圆朝不动的矩形线性移动。有没有一种有效的方法可以计算圆在接触矩形时的位置?

我需要这个来处理碰撞。如果移动会导致相交,则圆应尽可能靠近矩形移动,而不仅仅是停止移动。我可以用一个圆向另一个圆移动来解决问题,因为您可以使用移动方程式和半径。但是对于矩形,我现在不知道如何在不沿着圆的路径进行二分查找的情况下(有效地)计算矩形。

解决方法

要解决此问题,您可以想象圆会变圆到一个点,而矩形会变圆并变成带有圆角的矩形。现在,您必须将中心的轨迹与该形状相交。

enter image description here

现在,您需要检查射线是否与膨胀矩形的直边相交(这很容易,请检查端点是否在两侧),或者在拐角处有一条弧线(这不太容易:通过使用射线的参数方程和圆的隐式方程,您将得到二次方程,并且必须消除不在右象限中的解)。

这需要一些分析几何体,但是非常易于管理。请注意,这会告诉您有接触时中心的位置,但是通过沿射线继续沿长度R可以得到接触点。