Java:在区域内随机绘制非重叠形状

Java:在区域内随机绘制非重叠形状,java,random,draw,Java,Random,Draw,我需要在JApplet中的JPanel上绘制一些图形对象,它们是Graphics2D对象 1) 我想在面板边界附近以随机坐标绘制圆圈,这样每次启动小程序时,它看起来都不一样。 我想在某种程度上说,排除这一部分,不要在那个里画——图片中的蓝色圆圈 2) 如果我能将它们均匀分布,这样如果有4个圆,那么圆之间的距离几乎相同,但仍然是随机的 3) 如果绘制了前3或4个圆,则在未使用的面板上绘制其他较小且随机大小的圆 这似乎是一个奇怪的想法,但有没有可能根据一些约束条件,比如 (x-100)^2+(y-

我需要在JApplet中的JPanel上绘制一些图形对象,它们是Graphics2D对象

1) 我想在面板边界附近以随机坐标绘制圆圈,这样每次启动小程序时,它看起来都不一样。 我想在某种程度上说,排除这一部分,不要在那个里画——图片中的蓝色圆圈

2) 如果我能将它们均匀分布,这样如果有4个圆,那么圆之间的距离几乎相同,但仍然是随机的

3) 如果绘制了前3或4个圆,则在未使用的面板上绘制其他较小且随机大小的圆

这似乎是一个奇怪的想法,但有没有可能根据一些约束条件,比如
(x-100)^2+(y-100)^2>200&&0 所以,您可以继续生成随机坐标(固定半径或随机半径),然后检查是否有重叠。如果是,要么重新开始,要么扔掉重叠的部分继续

如果没有太多的圆,这个简单的算法就足够了。如果开始花费太长时间,您可能会考虑使用一些空间数据结构,因此您只需检查新点附近的圆

您可能希望创建要绘制的圆列表,而不是在paintComponent方法内部,而是在
init()
start()
方法(或从那里调用的某个线程)中,这样绘制不会花费太长时间,并且圆不会因每次(甚至可能是部分)重新绘制而更改