【问题标题】:Line(s) Equidistant From Two Convex Polygons In 2D与二维中两个凸多边形等距的线
【发布时间】:2011-11-15 17:21:38
【问题描述】:

给定 2D 空间中的两个凸多边形,您将如何构建线段,该线段在线上的任何点都与任一凸多边形的最近点等距?

我正在寻找针对凸多边形而不是点的 Voronoi 图的实现,但我不确定如何开始计算仅用于两个多边形的线。所以我想我会一步一步从这里开始。

编辑为了让问题更清楚一点,我想平分平面(或其子集)。

假设我们在左边有多边形 A,在右边有多边形 B。会有一些平分线将平面分成左边的点和右边的点。线上的每个点与任一多边形的距离相等。直线左边的每个点都比多边形 B 更接近多边形 A。直线右边的每个点都最接近多边形 B。

这是一个由我编写的 Matlab 脚本生成的图像,该脚本强力逼近一个近似值:

我相信,问题并不像检查两个多边形“之间”的空间那么简单,因为线必须直接延伸到两个形状之间的区域之外。理想情况下,我想找到一个可以推广到两个以上形状的解决方案,在我看来,这似乎使问题更加复杂。这是一个(显然非常粗略的)近似值:

【问题讨论】:

    标签: polygon voronoi convex


    【解决方案1】:

    好吧,我会一步一步地查看多边形本身中最近的点。假设 A 中的 a 是离 Bb最近的点B 中的 > 是距离 A 最近的点。您知道 AB 的中点在所需的段中。

    a 有哪些可能性?它可以是 A 的顶点,也可以是一侧的点。这同样适用于 b。 “等距段”会发生什么?在每种情况下如何构建它们?

    由于这些线段与多边形的边等距,它们必须是包含相应边的线的line that bissects the angle 的一部分。

    【讨论】:

    • 但是我们如何确定距离多边形更远的二等分线点(而不是在正常使用的单词之间)?很容易选择一个随机点并计算它到每个多边形的最小距离,看看它们是否相同。但由于这需要检查每个点,我对一种算法方法感兴趣,该方法无需简单地选择一个点并检查它是否满足标准即可构建线。 (我已经更新了我的问题,希望我的问题更清楚一点)
    • 我并不是要使用随机点并检查收盘点。也编辑了我的答案,看看是否更清楚。在初始点之后还添加了一个想法。
    【解决方案2】:

    我是否正确理解您,但假设您想要有效平分 2 个凸多边形之间空间的线?如果是这样,那么...

    1. 找到连接 2 个多边形(P1 和 P2)的线
      • 通过计算平均 X 和 Y 坐标找到每个多边形中心(P1.centre 和 P2.centre)。
      • 在每个多边形上找到最接近对方中心的顶点(P1.vc 和 P2.vc)
    2. 假设 P1.vc 和 P2.vc 现在定义了连接 P1 和 P2 的线
      • 找到 P1.vc 和 P2.vc 的中点 (mp)

    二等分线 = 连接 P1.vc 和 P2.vc 的线的垂线,穿过 mp

    【讨论】:

    • 部分是的。但是,我不是仅将 2 个多边形之间的空间一分为二,而是在寻找将整个平面 (R^2) 划分为 2 个凸多边形之间的空间的线。因此,您可以查看平面中的任何点,并根据它位于直线的哪一侧,知道它最接近哪个多边形。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2017-07-05
    相关资源
    最近更新 更多