ArrayList<Bubble> bubbles = new ArrayList<Bubble>();
void setup() {
size(500, 500);
background(210);
for (int i = 0; i < 100; i++) {
Bubble bubble = new Bubble();
for (Bubble b : bubbles) {
float d = dist(b.pos.x, b.pos.y, bubble.pos.x, bubble.pos.y);
while (d < 40) { // which means 2 * r (radius of bubble)
bubble.ChangePos();
d = dist(b.pos.x, b.pos.y, bubble.pos.x, bubble.pos.y);
}
}
bubbles.add(bubble);
}
for (Bubble b : bubbles) {
fill(255, 0, 90, 50);
b.Display();
}
}
class Bubble {
PVector pos = new PVector(random(width), random(height));
float r = 20;
void Display() {
ellipse(pos.x, pos.y, r * 2, r * 2);
}
void ChangePos() {
pos.set(random(width), random(height));
}
}
我試圖讓如果一個氣泡重疊另一個氣泡它的位置變化,直到它不重疊一個氣泡 - 所以當我創建一個新氣泡和氣泡數組中的現有氣泡之間的距離,新泡沫的位置發生變化。嘗試產生不重疊的氣泡。爲什麼這不起作用?
你能描述你做了什麼錯? – Brick
氣泡彼此產卵:( –
我想這是導致問題的集合(隨機(寬度),隨機(高度))。比方說你比較了2個氣泡,並且位置改變了,以避免重疊。另一個泡泡,隨機函數可能會再次將泡泡的位置設置爲與之前比較過的泡泡的位置重合。 –