【问题标题】:Separate circle and rectangle分离圆形和矩形
【发布时间】:2014-06-03 10:20:07
【问题描述】:

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

【问题讨论】:

  • 由于这个问题并不真正涉及编程,它更适合math.stackexchange.com 现在已经在这里回答了,但请记住这一点以备将来的问题:)

标签: collision geometry rectangles


【解决方案1】:

根据您描述的方式,我假设一个形状完全包含另一个形状,这仍然算作“重叠”

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

  • 从圆心到矩形顶点之一上最近的点画一条线
  • 沿着这条线拉圆直到它​​们不再重叠

所以要计算它需要拉的距离,你的公式是:

pullDistance = radius - centreDistance

地点:

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

需要注意的两点:

  • 如果圆心在矩形内,则centreDistance 应以相同方式计算,但设为负数
  • 如果pullDistance 为负数,则这两个形状已经不重叠,因此真实距离为 0。

所以既然radius 是已知的,那么您所要做的就是计算centreDistance。这样做的方法是找到从圆的中心点到矩形的四个线段中的每一个的距离并取最小值。求点到线段之间的距离是一项常见的任务,这里不再赘述。 This question 有很多示例和如何操作的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多