我正在Java中進行一個簡單的遊戲,一切都很好,除了我有一種情況需要在圓周上均勻分佈節點。Java:在圓周上均勻分佈節點
例如,如果正好有4個節點,那麼一個會直接向北,一個向南,一個向東,一個向西。當然,可能有一個「偏移」,即第一個節點稍微離開北部,但是必須保持兩個相鄰節點之間的90度角和圓心。
以下是我到目前爲止得到的代碼。
private void randomizePositions(Set<Node> 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);
}
}
是的,對於該集合中的節點的位置是隨機的,如圖測試輸出:
================= ===============================
〜/桌面/小程序$ javac的Graph.java
〜 /桌面/小程序$ appletviewer Graph.java
節點:Bird_Food X = 200.97455004134613 Y = 205.08056219463253
節點:食品雜貨X = 204.4727596409387 Y = 206.26252504672223
節點:Fish_Food X = 203.22828002758823 Y = 202.30400672172576
節點:Pet_Food X = 208.8749664329499 Y = 203.43454377979435
節點:Dog_Food X = 207.72724954244495 Y = 202.9273879239392
節點:Cat_Food X = 209.55574149936908 Y = 209.61827066724257
=============================== =================
所以我想知道如何才能正確計算位置,只給定一個集合中的節點總數?任何想法?
非常感謝提前的建議。
emmm ......這絕對是一個工科數學方法:)這個思想,但我只是不知道是否會有一個更好的辦法... .. – 2010-10-23 02:52:05
或每節點之間360/n度。 – 2010-10-23 02:58:38