在2d空间中,有一个矩形和一个相互重叠的圆。怎么能 我计算分离圆和矩形所需的最小距离(深度)?
答案 0 :(得分:3)
如果一个形状完全包含另一个形状,我将从你描述它的方式开始假设它仍然算作"重叠"
在将圆圈移动最短距离时将圆圈与矩形分开的策略如下:
因此,要计算需要拉动的距离,您的公式将为:
pullDistance = radius - centreDistance
其中:
pullDistance
是您尝试计算的内容radius
是圆的半径centreDistance
是圆心与矩形边缘上最近点的距离。有两点需要注意:
centreDistance
应该以相同的方式计算,但是为负数pullDistance
为负数,则两个形状已经不重叠,因此真实距离为0. 因为radius
已知,所以您需要做的就是计算centreDistance
。这样做的方法是找到从圆的中心点到每个矩形的四个线段的距离并取最小值。找到一个点和一个线段之间的距离是一个常见的任务,我不会在这里重复如何做到这一点。 This question有很多关于如何操作的样本和信息。