在2D中从两个凸多边形等距离的线

时间:2011-11-15 17:21:38

标签: polygon voronoi convex

在二维空间中给出两个凸多边形,你将如何构建线段,这些线段在线上的任何一点与任何凸多边形的最近点等距?

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

编辑为了让问题更加清晰,我想将平面(或其子集)平分。

假设我们左边是多边形A而右边是多边形B.将有一些二分线将平面划分为左侧的点和右侧的点。线上的每个点与任一多边形的距离相等。线的每个点都更接近多边形A而不是多边形B.线的每个点都最接近多边形B.

这是我写的一个Matlab脚本生成的图像,它强制逼近:

approximate bisecting line

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

more complicated example

2 个答案:

答案 0 :(得分:1)

好吧,我一步一步地看着多边形中最近的点。假设 A 中的 a B b 的最近点 B 中的 A 的最近点。您知道 AB 的中间点位于所需的细分中。

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

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

答案 1 :(得分:1)

我是否正确理解你,但假设你想要有效地将两个凸多边形之间的空间一分为二的线?如果是,那么......

  1. 找到连接2个多边形的线(P1和P2)
    • 通过计算平均X和Y坐标找到每个多边形中心(P1.centre& P2.centre)。
    • 在每个多边形上找到最接近另一个中心的顶点(P1.vc& P2.vc)
  2. 鉴于P1.vc& P2.vc现在定义连接P1和amp;的线。 P2
    • 找到P1.vc&的中点(mp)。 P2.vc
  3. 平分线=连接P1.vc&线的直线。 P2.vc通过mp