算法如何工作覆盖半径相等的圆的任意区域?
圆的半径和区域的大小和形状是任意给出的。该区域应尽可能少地覆盖。圆圈可能重叠。
是否有可以处理此问题的算法?
答案 0 :(得分:8)
希望我理解你的问题......
可以证明球体的六边形密堆积(HCP)使用球体覆盖最大体积。因此,我假设用圆圈做HCP也会用圆圈覆盖最大区域。使用三角形对您的区域进行细分,并在三角形的每个顶点放置一个圆心,其中心半径为三角形边长的一半。有关我正在讨论的算法的图像,请参阅this。
注意:这类似于close packing of atoms in a unit cell。
编辑:我之前的方法涵盖了尽可能多的区域,没有重叠。如果允许重叠,那么(我相信)以下方法将覆盖整个区域,并且重叠最小。
正如您可能知道的那样,只有3个带有正多边形的2D空间镶嵌 - 使用正方形,三角形或六边形。策略是使用这些多边形中的一个进行镶嵌,然后将圆圈限定为每个多边形。使用这种方法六边形会浪费最小面积。
因此,从给定圆的半径计算所需六边形的大小,使用六边形对该区域进行细分,然后在每个六边形上划一个圆。
NB: Eric Bainville提出了类似的方法。
-- Flaviu Cipcigan
答案 1 :(得分:2)
我知道这个问题可能有点过时,但最近我遇到了类似的问题,用六角网格覆盖相同圆圈的地理区域,这就是我解决它的方法:
我知道这不是最好的选择,但对我来说效果很好。
我希望这是可以理解的,并会帮助任何人。
答案 2 :(得分:0)
在不了解您的约束的情况下,我建议定期覆盖飞机,磁盘对应于六边形拼接的正六边形。然后保持所有圆盘与形状相交。
答案 3 :(得分:0)
我知道问题正在寻找一种算法,但是我也遇到了类似的问题,想用圈子来掩盖美国,因此我很快就找到了使用this free online tool的解决方案。因此,我谦虚地建议,如果面积和半径不变,则可以在3分钟内将其视线。显然,这个答案不能一概而论,但通常问题也不是。