单独的圆和矩形

时间:2014-06-03 10:20:08

标签: collision geometry rectangles

在2d空间中,有一个矩形和一个相互重叠的圆。怎么能 我计算分离圆和矩形所需的最小距离(深度)?

1 个答案:

答案 0 :(得分:3)

如果一个形状完全包含另一个形状,我将从你描述它的方式开始假设它仍然算作"重叠"

在将圆圈移动最短距离时将圆圈与矩形分开的策略如下:

  • 从圆形中心画一条线到其中一个矩形顶点上的最近点
  • 沿着此线拉动圆圈,直到它们不再重叠

因此,要计算需要拉动的距离,您的公式将为:

pullDistance = radius - centreDistance

其中:

  • pullDistance是您尝试计算的内容
  • radius是圆的半径
  • centreDistance是圆心与矩形边缘上最近点的距离。

有两点需要注意:

  • 如果圆圈的中心在矩形内,那么centreDistance应该以相同的方式计算,但是为负数
  • 如果pullDistance为负数,则两个形状已经不重叠,因此真实距离为0.

因为radius已知,所以您需要做的就是计算centreDistance。这样做的方法是找到从圆的中心点到每个矩形的四个线段的距离并取最小值。找到一个点和一个线段之间的距离是一个常见的任务,我不会在这里重复如何做到这一点。 This question有很多关于如何操作的样本和信息。