Geometry 计算移动圆与矩形接触时的位置 我有以下情况: 一个圆向一个不移动的矩形直线移动。有没有一种有效的方法来计算圆与矩形接触时的位置?

Geometry 计算移动圆与矩形接触时的位置 我有以下情况: 一个圆向一个不移动的矩形直线移动。有没有一种有效的方法来计算圆与矩形接触时的位置?,geometry,collision,Geometry,Collision,我需要这个来处理碰撞。如果移动会导致相交,则圆应尽可能靠近矩形移动,而不是仅仅停止移动。我能够解决一个圆向另一个圆移动的问题,因为你可以用移动方程加上半径。但是对于矩形,我目前不知道如何(有效地)计算它,而不沿着圆的路径进行二元搜索。要解决这个问题,可以想象,当矩形膨胀并变成圆角矩形时,圆收缩到一个点。现在你必须将中心的轨迹与该形状相交 现在,您需要检查光线是否与膨胀矩形的直边相交(这很容易,检查端点是否在两侧),或者是否与拐角处的一条圆弧相交(这不太容易:通过使用光线的参数方程和圆的隐式方程

我需要这个来处理碰撞。如果移动会导致相交,则圆应尽可能靠近矩形移动,而不是仅仅停止移动。我能够解决一个圆向另一个圆移动的问题,因为你可以用移动方程加上半径。但是对于矩形,我目前不知道如何(有效地)计算它,而不沿着圆的路径进行二元搜索。

要解决这个问题,可以想象,当矩形膨胀并变成圆角矩形时,圆收缩到一个点。现在你必须将中心的轨迹与该形状相交

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


这需要一点解析几何,但很容易处理。请注意,这会告诉你有接触时中心的位置,但通过沿着光线沿长度R继续,你会得到接触点。

轨迹是倾斜的吗?是的。我想我找到了一种方法来计算它。你只需要找到一个向量,它是正交的al到矩形的侧面,圆将与之接触。向量必须从矩形的侧面开始,并在圆的轨迹线上结束。当向量的长度等于圆的半径时,当它碰到矩形时,就有了圆的位置。还有更多情况,请参阅我的答案。