找到闭合折线的最大内切弦的算法

时间:2017-07-05 08:29:00

标签: algorithm geometry computational-geometry mathematical-optimization

我正在寻找一种算法来找到闭合折线的最长弦(“直径”)。不幸的是,折线不必是凸的,但是弦应该完全位于曲线内。这是一个例子:

enter image description here

我正在寻找的解决方案是红色虚线段。

你能为此建议一个有效的算法吗?到目前为止我们能够实现的最好的是N²算法,它尝试所有顶点对,但即使这看起来也不正确,因为和弦不一定通过两个顶点(或者它是什么?)。

我也对相关问题感兴趣,我们正在寻找连接两个顶点的最大段(如果未完全刻录的段,则该段中位于曲线内的最长部分)。在这种情况下,N²算法可以工作,但对于大量的点来说速度很慢。

1 个答案:

答案 0 :(得分:1)

我认为解决方案总是包含至少两个顶点。因此,计算列表所有顶点之间的所有线段,包括延伸到触摸多边形线段的另一个的线段将完成。

要计算转换为光线的任何线段是否与另一个线段相交,请参阅答案: How do you check for intersection between a line segment and a line ray emanating from a point at an angle from horizontal?

之后检查我们的线段列表是否完全在多边形内。以下答案将允许您检查,消除超出界限的那些。 determine if line segment is inside polygon

现在剩下的最长的应该是答案。