algorithm - 如何用不相交的恒定半径圆覆盖平面中的一组圆?

标签 algorithm geometry language-agnostic mathematical-optimization computational-geometry

所以你有一个给定尺寸的工作表/区域,并且在这个区域内有孔(它们的中心点(x,y)和半径是给定的)。问题是你需要用补丁覆盖这些漏洞。这些圆形补丁具有固定的半径(即:半径为 5)并且不允许彼此重叠(但可以接触)。您可以使用任意多个,目标不是找到最佳数量,而是查看是否有可能覆盖每个孔。

我已经用 KD 树解决了一个类似的问题,但由于这个问题中洞的 3D 维度性质,我不确定如何处理它。只是寻找正确方向的指针,而不是编码解决方案:)

最佳答案

根据补丁和孔的大小,可能没有解决方案。

具有最紧凑补丁数组的解决方案:

enter image description here


没有解决方案,因为洞比补丁大,这允许未覆盖的区域:

enter image description here


没有解决方案,因为孔太近了:

enter image description here


对于一般结构,您从以孔为中心的补丁开始。然后根据需要平移和旋转(围绕连续补丁的中心)补丁:

enter image description here

关于algorithm - 如何用不相交的恒定半径圆覆盖平面中的一组圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56054781/

相关文章:

ruby - 这种排序算法的名称是什么?

math - 霍夫变换过滤线

java - 计算移动的球与移动的线/多边形(2D)碰撞的时间

math - 使四元数在两个向量之间旋转

algorithm - 约束最长递增子序列

algorithm - 涉及任意两个节点的三角形数

java - 到达数组末尾所需的最少跳转 - 获取索引位置

language-agnostic - 在设计像 SO 这样的在线社区代表系统时要考虑什么?

language-agnostic - 是否有任何开源军事/ war 策略模拟引擎/框架?

language-agnostic - 冗余与依赖关系 : which is worse?