java 均匀分布_Java:在圆的周长上均匀分布节点

我正在用Java开发一个简单的游戏,一切都很好,除了我有一个情况,我需要在一个圆的圆周上均匀地分布节点。

例如,如果正好有4个节点,那么一个将直接指向北方,一个指向南方,一个指向东方,一个指向西方。当然,也可能存在“偏移”,即第一个节点会稍微偏离北方,但两个相邻节点与圆心之间的90度角必须保持不变。

下面是我得到的代码。

private void randomizePositions(Set set)

{

Random rand = new Random();

for(Node n : set)

{

n.x = XCENTER + rand.nextDouble() * MINRADIUS;

n.y = YCENTER + rand.nextDouble() * MINRADIUS;

System.out.println("for node : " + n.lbl + " x = " + n.x + " y = " +n.y);

}

}

是,集合中节点的位置是随机的,如测试输出所示:

~/Desktop/applet$javac Graph.java

图形.java

节点:Bird_Food x=

200.97455004134613 y=205.0805621943253

204.4727596409387 y=206.26252504672223

对于节点:鱼食x=

203.22828002758823 y=202.30400672172576

208.8749664329499 y=203.43454377979435

207.72724954244495 y=202.9273879239392

节点:猫食x=

209.55574149936908 y=209.61827066724257

================================================

所以我想知道,如果只给定一个集合中的节点总数,如何才能正确计算位置?知道吗?

非常感谢提前提出的建议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值