当前位置: 首页 > 面试题库 >

放置无重叠的随机圆(并且不使用蛮力)?

燕实
2023-03-14
问题内容

我刚刚提交了Java作业,需要在其中作为游戏的一部分在屏幕上随机绘制一些圆圈。给我们的挑战之一是确保所有圈子都不重叠。我最终采用了一种奇怪的方法(因为我想:D),该方法基本上只是使用trig从屏幕中央创建了一个图案,这很有趣。尽管此方法中的圆永远不会重叠,但这并不是理想的方法…圆的分布在屏幕中间相当密集,在角落的空间很小。

我还创建了一种(注释掉的)蛮力方法,如果拟议的圆的x,y坐标与已经创建的圆相交,则该方法可以简单地重新滚动新的坐标,虽然理论上可以循环到无限,但很可能不会超过十个相交。

在与朋友讨论解决方案之后(经过一番谷歌搜索之后),我们实际上非常有兴趣地看到没有暴力就可以做到这一点。要求:

  • 在640x480窗口上绘制半径为10个单位的20个圆
  • 绝对没有重叠的圆圈
  • 否则在整个屏幕上随机分布

可以,使用标准库吗?


问题答案:
  1. 列出640x480的条目,并在其中输入从1到307.200(640x480)的连续数字。每个条目代表屏幕上的一个像素。
  2. 随机选择一个1到307.200之间的数字,该数字表示屏幕上的一个像素。在那里画圈。
  3. 计算落入该圆10像素半径以内的所有像素。从列表中删除代表这些像素的所有条目。

重复十次。



 类似资料:
  • 我知道如何检查其中两个圆是否重叠(它们中心之间的距离小于直径)。我可以对每对圆执行此检查,但我想知道是否有更好的算法(比)更快)。 编辑 圆圈的数目通常是100个左右,重叠不会经常发生。

  • 我有一个非常大的矩形(100,000x100,000),我试图在上面随机放置许多不同大小的圆。我目前的解决方案是将以前使用的所有坐标对存储在一个地图中,然后随机生成一个新的对,并检查它是否存在于地图中。 因为我生成了很多坐标,所以这个方法会变得有点慢。有没有一个更好,最重要的是更快的方法来得到矩形上的随机坐标,也许也有一个方法来得到它们而不是圆重叠?

  • 问题内容: 好的,我需要能够在页面上放置一堆随机大小的绝对定位的单词,但是我不希望任何元素重叠。 最终目标是拥有一个能够响应用户交互的流畅词云(还记得Google BallsDoodle吗?)。我真的很想从头开始构建它,以加深我对这种类型的开发的理解。在这个部门的任何帮助也将不胜感激:) 问题答案: 我不确定您是否还想将这些单词随机放置在容器中,但是我写了一个小提琴来做到这一点。如果需要,您可以修

  • 我一直在做一个学校作业,老师想让我们在JPanel上出现7个圆圈,然后向下移动。一旦一个圆到达底部,就应该创建一个新的圆来替换到达JPanel底部的圆。我决定用一个数组继续做随机圈,但我不能让它正常工作。我使用for循环用半径和颜色随机的圆填充数组。代码可以编译,但当我运行它时,我得到一个异常。我很难让阵列正常工作。我不确定的另一件事是如何绘制圆圈,以便它们在JPanel中有空间。

  • 问题内容: 和之间有什么区别? 我已经阅读了文档页面,但是当我只想随机地对数组元素进行随机排列时,我不明白两者之间是否有任何区别。 确切地说,假设我有一个数组。 如果我想生成x的随机排列,那么和之间有什么区别? 问题答案: 与以下内容有两个区别: 如果传递了数组,它将返回该数组的改组后的 副本 ;将数组改组到位 如果传递一个整数,它将返回一个改组范围,即 如果x是整数,则随机置换np.arange

  • 我正在尝试优化我的火花应用工作。 我试图理解这个问题的要点:如何在唯一键上连接数据帧时避免混乱? > 我已经确保必须发生加入操作的键分布在同一分区中(使用我的自定义分区程序)。 我也不能做广播加入,因为我的数据可能会根据情况变大。 在上面提到的问题的答案中,重新分区只优化了连接,但我需要的是无需切换即可连接。在分区内的键的帮助下,我对连接操作很满意。 有可能吗?如果不存在类似的功能,我想实现像jo