所以你有一个给定尺寸的工作表/区域,并且在这个区域内有孔(它们的中心点(x,y)和半径是给定的)。问题是你需要用补丁覆盖这些漏洞。这些圆形补丁具有固定的半径(即:半径为 5)并且不允许彼此重叠(但可以接触)。您可以使用任意多个,目标不是找到最佳数量,而是查看是否有可能覆盖每个孔。
我已经用 KD 树解决了一个类似的问题,但由于这个问题中洞的 3D 维度性质,我不确定如何处理它。只是寻找正确方向的指针,而不是编码解决方案:)
最佳答案
根据补丁和孔的大小,可能没有解决方案。
具有最紧凑补丁数组的解决方案:
没有解决方案,因为洞比补丁大,这允许未覆盖的区域:
没有解决方案,因为孔太近了:
对于一般结构,您从以孔为中心的补丁开始。然后根据需要平移和旋转(围绕连续补丁的中心)补丁:
关于algorithm - 如何用不相交的恒定半径圆覆盖平面中的一组圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56054781/