【发布时间】:2017-07-26 16:13:10
【问题描述】:
我正在寻找一种算法来找到闭合多段线的最长弦(“直径”)。不幸的是,折线不必是凸的,但弦应该完全位于曲线内。这是一个例子:
我正在寻找的解决方案是红色虚线部分。
您能否为此建议一种有效的算法?到目前为止,我们能够实现的最好结果是尝试所有顶点对的 N² 算法,但即使这样似乎也不正确,因为和弦不一定要通过两个顶点(或者是这样吗?)。
我也对相关问题感兴趣,我们正在寻找连接两个顶点的最大线段(如果线段未完全内接,则该线段位于曲线内的最长部分)。在这种情况下,N² 算法可以工作,但对于大量点来说速度很慢。
【问题讨论】:
-
你考虑过可见性多边形算法吗? stackoverflow.com/questions/13429856/… 不确定这里是否有用。
-
如果我是对的,两条线段上的点之间的最长距离必然连接端点(最短距离并非如此)。如果距离被其他多边形边“阻挡”,则阻挡是由顶点完成的。所以在所有情况下,最长的线段都应该经过两个顶点。
-
@YvesDaoust:我同意,这似乎是真的。
-
令人惊讶的是,这里或Mathematics 都没有提出这个问题,尽管这两个地方都有类似的问题。
-
只是一个愚蠢的评论,但直径必须穿过曲率中心,这对于像您的示例中那样内切凹多边形是不可能的......所以你想要最大的弦而不是直径。
标签: algorithm geometry computational-geometry mathematical-optimization