我想在画布上创建一个有限制的随机圆.即,任何圆都不应该相交.到目前为止,我已经提出了一项检查,以检查圆是否相交,如果相交,它会生成一个新的圆.这是我的推理以及代码:
for(int i=0;i
{
xPosRBC[i]=random.nextInt(xSize);
yPosRBC[i]=random.nextInt(ySize);
}
在这里,我为每个RBC生成一个随机的x和y位置(在xSize x ySize的画布内)(为演示起见,总量为RBC,假设为5).这些x和y位置分别存储在数组xPosRBC []和yPosRBC []中.
for(int i=0;i
{
for(int j=0;j
{
while(Math.sqrt(Math.pow(Math.abs(xPosRBC[j]-xPosRBC[i]),2)+Math.pow(Math.abs(yPosRBC[j]-yPosRBC[i]), 2))
{
xPosRBC[i]=random.nextInt(xSize); //random starting position of bacterium
yPosRBC[i]=random.nextInt(ySize);
j=0;
}
}
}
然后我检查每个点是否都小于圆的2 *半径(使用此sqrt((| xpos1-xpos2 |)^ 2(| ypos1-ypos2 |)^ 2)公式),如果有,生成新的位置,并重置“检查” for循环(j = 0).对每个圈(从i = 0到amountRBC)重复此过程.在我的推理中,这应该以5个随机放置的圆结束,所有圆之间的距离至少应为2 *半径,这意味着它们不应相交.
但是,该程序似乎无限期地陷入了while循环中,我似乎找不到原因.
[注意]:在大画布上只有少量的圆圈,半径很小.这意味着没有足够的屏幕填充圆圈的情况不会成为问题.
任何帮助将不胜感激!