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

Algorithm 给定光线和多边形,计算多边形内的最大圆,其中中心位于光线上,端点位于圆上,algorithm,geometry,Algorithm,Geometry,给定一个简单多边形(不一定是凸多边形)和一条射线,其原点位于多边形内,我想计算多边形中包含的最大圆,但要受以下约束: 圆的中心位于光线的某个地方 射线的原点位于圆上 有没有一个算法可以精确地计算这个?近似值呢 设C为满足问题条件的圆集(即,射线上圆的中心和射线的原点在圆上) 考虑多边形的边e。然后: C中没有一个圆与e相接触。在这种情况下,r(e)=∞. 有一个最小的圆c∈ 与e相切的C(或者e与C相切,或者e的一个端点位于C上-您可以通过求解这些可能性来找到C)。在这种情况下,r(e)是c的半

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

  • 圆的中心位于光线的某个地方
  • 射线的原点位于圆上
  • 有没有一个算法可以精确地计算这个?近似值呢

    设C为满足问题条件的圆集(即,射线上圆的中心和射线的原点在圆上)

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

  • C中没有一个圆与e相接触。在这种情况下,r(e)=∞.
  • 有一个最小的圆c∈ 与e相切的C(或者e与C相切,或者e的一个端点位于C上-您可以通过求解这些可能性来找到C)。在这种情况下,r(e)是c的半径
  • 你想要的答案是min(r(e))

    更新显然您不计算C(在这个集合中有无限多个圆)。您要做的是找到与每条边e接触的最小圆c(如果存在任何这样的圆)。对于每个边e,计算c的三个候选边:一个与e相切,两个与e的端点接触,并取最小的候选边。因此,如果有n个边,则最多考虑3n个圆。

    让C是满足问题条件的圆的集合(即光线的中心和光线的原点在圆圈上)。 考虑多边形的边e。然后:

  • C中没有一个圆与e相接触。在这种情况下,r(e)=∞.
  • 有一个最小的圆c∈ 与e相切的C(或者e与C相切,或者e的一个端点位于C上-您可以通过求解这些可能性来找到C)。在这种情况下,r(e)是c的半径
  • 你想要的答案是min(r(e))

    更新显然您不计算C(在这个集合中有无限多个圆)。您要做的是找到与每条边e接触的最小圆c(如果存在任何这样的圆)。对于每个边e,计算c的三个候选边:一个与e相切,两个与e的端点接触,并取最小的候选边。因此,如果有n个边,则最多考虑3n个圆。

    (这个答案适用于凸正多边形;我误解了“简单”多边形这个词)

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

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

    因此,要找到中心点,请对光线经过的每个扇区执行以下操作:

    • 绘制由多边形侧面和光线原点定义的抛物线
    • 如果抛物线与扇区内的光线相交,则相交点为圆心
    所以这实际上是一个创建光线和抛物线方程的问题,并找到交点

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

    (这个答案适用于凸正多边形;我误解了术语“简单”多边形。)

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

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

    因此,要找到中心点,请对光线经过的每个扇区执行以下操作:

    • 绘制由多边形侧面和光线原点定义的抛物线
    • 如果抛物线与扇区内的光线相交,则相交点为圆心
    所以这实际上是一个创建光线和抛物线方程的问题,并找到交点


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

    如果光线的原点都位于圆上,另一点是圆的中心,则表示属于光线的两个点位于圆上,这意味着两个点位于多边形上,这意味着它不再相交,光线和多边形在同一平面上,或者,这两个点是同一点。@Alexandrubarbosie我编辑了这个问题,说光线的原点在多边形内。这有意义吗?我觉得一张图片会更有意义;如果我误解了这个问题,请告诉我。我必须说,它看起来像一个数学问题,而不是一个编程问题。将一个点从其原点穿过光线,计算到多边形所有边的距离,直到最短距离等于到原点的距离。@m69的图像完美地说明了这一点。谢谢。如果射线的原点都在圆上,而另一个点是圆的中心,这意味着属于射线的两个点在圆上,这意味着两个点在多边形上,这意味着它不再相交,射线和多边形在同一平面或平面上,这两个点是同一点。@Alexandrubarobasie我编辑了这个问题,说光线的原点在多边形内。这有意义吗?我觉得一张图片会更有意义;如果我误解了这个问题,请告诉我。我知道