给定光线和多边形,计算多边形内的最大圆,其中中心位于光线上,端点位于圆上

时间:2016-05-01 19:48:03

标签: algorithm geometry

给定一个简单的多边形(不一定是凸面)和一个原点位于多边形内部的光线,我想计算多边形中包含的最大圆,但要受到以下约束:

  1. 圆圈的中心位于光线的某处。
  2. 光线的起源位于圆圈上。
  3. 是否有算法来准确计算?那么近似值呢?

    enter image description here

2 个答案:

答案 0 :(得分:2)

C 成为满足问题条件的圆的集合(即光线上圆的中心和光线的原点在圆上)。

考虑多边形的边 e 。然后:

  1. C 中没有任何圈子触及 e 。在这种情况下, r e )=∞。
  2. 有一个最小的圆 c C 接触 e e 相切c ,或者 e 的一个端点位于 c 上 - 你可以通过解决这些可能性找到 c )。在这种情况下, r e )是 c 的半径。
  3. 你想要的答案是min( r e ))。

    更新显然你没有计算 C (这个集合中有无限多个圈子)。你要做的是找到触及每条边 e 的最小圆圈 c (如果存在任何这样的圆圈)。对于每个边缘 e ,您计算 c 的三个候选者:一个与 e 相切的候选者,以及两个触及 e 的端点的候选者/ em>,并采取最小的可行候选人。因此,如果有 n 边缘,则最多考虑3个 n 个圆圈。

答案 1 :(得分:2)

(这个答案适用于凸规则多边形;我误解了术语"简单"多边形。)

圆的中心与光线的原点和多边形的一侧的距离相同。与线和点等距的点集是抛物线。

如果将n边多边形划分为n个边,则圆将触及多边形的边,该边与圆的中心点所在的扇区相邻。

因此,要找到中心点,请为光线通过的每个扇区执行此操作:

  • 绘制由多边形边和光线原点定义的抛物线。
  • 如果抛物线与扇区内的光线相交,则交点是圆的中心。

所以这真的是为光线和抛物线创建方程,找到交点。

enter image description here

(这只是一个快速草图,使用圆圈而不是真正的抛物线;这些部分显然应该在分段的边缘相遇。)