class Ring { float ringRed; float ringGreen; float ringBlue; int size; Ring(float ringRed, float ringGreen, float ringBlue) { this.ringRed = ringRed; this.ringGreen = ringGreen; this.ringBlue = ringBlue; size = 4; } void draw() { stroke(color(ringRed, ringGreen, ringBlue, 400 - size)); strokeWeight(4); noFill(); ellipse(159, 119, size(), size()); } int size() { return size; } void step() { size += 4; } } void setup() { size(320, 240); smooth(); framerate(12); rings = new ArrayList(); t = 1; } ArrayList rings; int t; void draw() { background(255); stroke(192); strokeWeight(1); noFill(); line(159, 0, 159, 240); line(0, 119, 320, 119); ellipse(159, 119, 100, 100); ellipse(159, 119, 200, 200); ellipse(159, 119, 300, 300); float n = noise(t); if (t / 4 * 4 == t && n > 0.63) { rings.add(new Ring(192, 192, 255)); } for (int i = rings.size() - 1; i >= 0; i--) { Ring each = (Ring)rings.get(i); if (each.size() > 400) rings.remove(each); } for (int i = 0; i < rings.size(); i++) { Ring each = (Ring)rings.get(i); each.draw(); } for (int i = 0; i < rings.size(); i++) { Ring each = (Ring)rings.get(i); each.step(); } t++; }