随机将N个圆放置在矩形中而没有重叠

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机将N个圆放置在矩形中而没有重叠相关的知识,希望对你有一定的参考价值。

我想在给定大小的矩形中放置N个具有给定公共半径的圆,以使圆形在Python中不重叠。我当前的解决方案是:

1)创建空间中每个点的集合,并从中删除将在生成下一个圆之前引起重叠的点(但是,矩形较大时,它很慢)。

2)从一组不重叠的点(例如,每2r + const)绘制球的中心(但此处的位置不够随机)。

您还有其他更有效的想法吗?

答案

所以2D封装中最有效的填充是六角形填充,您只需对程序进行硬编码即可将其填充为圆形

在此处了解更多信息:https://en.wikipedia.org/wiki/Circle_packing

另一答案

您可以将生成的圆的坐标存储在集合中,然后在生成新的随机坐标后,您可以检查生成的圆是否会与其他圆重叠为此,您需要检查条件:-SET中i的距离(i,P)> = 2R我在SET中的位置R是圆半径P是随机生成的点

以上是关于随机将N个圆放置在矩形中而没有重叠的主要内容,如果未能解决你的问题,请参考以下文章

什么是找到重叠矩形区域的有效算法

随机放置的 div 没有重叠

数据结构与算法之深入解析“非重叠矩形中的随机点”的求解思路与算法示例

矩形重叠(矩形相交,dp)

矩形重叠

模拟赛 矩形框 题解