Hello!
I need some help with this code with which I have been making loop-d-loop lines of ellipses. I am having a lot of trouble getting them to draw without overlapping. Any help would be appreciated!
Warmly,
Druppa
ArrayList<Circle> circles;
Circle circle;
float noiseScale;
float noiseStrength;
// Let's make sure we don't get stuck in an infinite loop
int protection = 0;
// Does it overlap any previous circles?
boolean overlapping = false;
void setup() {
size(2000, 1300);
noiseScale = 6765;
noiseStrength = 2;
noiseDetail(3, 0.8);
circles = new ArrayList<Circle>();
circle = new Circle();
// Try to get to 500
while (circles.size() < 500) {
overlapping = false;
circle.update(); // move the circle
//circle = new Circle();
for (Circle other : circles) {
float d = dist(circle.x, circle.y, other.x, other.y);
if (d < circle.r + other.r) {
overlapping = true;
break;
}
}
// If not, keep it!
if (!overlapping) {
circles.add(circle);
}
// Are we stuck?
protection++;
if (protection > 5000) {
break;
}
}
// Draw all the circles
for (Circle c : circles) {
c.display(c.x, c.y, c.r);
}
}
class Circle {
float x, y, z, r;
float speed, n, angle;
Circle() {
x = random(144, width-144);
y = random(144, height-144);
z = 0.08;
r = 55;
}
void display(float x, float y, float r) {
fill(255, 0, 175, 100);
noStroke();
circle(x, y, r);
}
void update() {
angle = noise(x/noiseScale, y/noiseScale, z)* noiseStrength;
x += cos (angle) * speed;
y += sin (angle) * speed;
//z += 0.008;
n+=0.08;
//size = 5+noise(n)*55;
speed = r;
speed = speed - noise(n) * speed/144;
noiseStrength = noiseStrength + noise(n) * sin(0.01)*21;
}
}