【发布时间】:2014-06-03 10:20:07
【问题描述】:
在二维空间中,有一个矩形和一个圆形相互重叠。怎么能 我计算了分隔圆和矩形所需的最小距离(深度)?
【问题讨论】:
-
由于这个问题并不真正涉及编程,它更适合math.stackexchange.com 现在已经在这里回答了,但请记住这一点以备将来的问题:)
标签: collision geometry rectangles
在二维空间中,有一个矩形和一个圆形相互重叠。怎么能 我计算了分隔圆和矩形所需的最小距离(深度)?
【问题讨论】:
标签: collision geometry rectangles
根据您描述的方式,我假设一个形状完全包含另一个形状,这仍然算作“重叠”
将圆移动到最短距离的同时将圆与矩形分开的策略如下:
所以要计算它需要拉的距离,你的公式是:
pullDistance = radius - centreDistance
地点:
pullDistance 是您要计算的内容radius 是圆的半径centreDistance 是圆心到矩形边缘最近点的距离。需要注意的两点:
centreDistance 应以相同方式计算,但设为负数pullDistance 为负数,则这两个形状已经不重叠,因此真实距离为 0。所以既然radius 是已知的,那么您所要做的就是计算centreDistance。这样做的方法是找到从圆的中心点到矩形的四个线段中的每一个的距离并取最小值。求点到线段之间的距离是一项常见的任务,这里不再赘述。 This question 有很多示例和如何操作的信息。
【讨论】: