java 交叉循环,Java:随机生成不相交的圆(卡在while循环中...

我想在画布上创建一个有限制的随机圆.即,任何圆都不应该相交.到目前为止,我已经提出了一项检查,以检查圆是否相交,如果相交,它会生成一个新的圆.这是我的推理以及代码:

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循环中,我似乎找不到原因.

[注意]:在大画布上只有少量的圆圈,半径很小.这意味着没有足够的屏幕填充圆圈的情况不会成为问题.

任何帮助将不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值