【发布时间】:2021-07-26 12:57:14
【问题描述】:
我正在尝试解决问题“在凸多边形中内切两个圆,半径之和最大”。 我可以在最大半径的凸多边形中内接一个圆,但是两个圆呢?有没有什么算法可以解决我的问题。
分析算法优于数值算法。
【问题讨论】:
-
除了使用所有可能的组合之外,您如何测试结果是否有效?我认为非蛮力算法取决于形状......我会首先使用OBB或PCA来获得大约在中心的最长内切线,然后使用任何approximation search尝试沿着它的所有最大圆圈......但是不知道如何检查结果是否正确(没有蛮力)。圆圈是否必须相互接触?假设它们不相交...
-
是的,他们必须触摸。我搜索多边形的任意三个边,然后找到它们的交点(必要时扩展它们)。我得到两个角。我用它们建立平分线。平分线的交点将是圆的中心。我找到从中心到任何选定边的距离——这将是半径。然后我检查从中心到所有边的距离是否不小于半径(这检查圆是否在多边形内)。在所有这些圆中,我选择了半径最大的那个。