Here's an example of how a simple recipe can produce hypnotic, animated visuals.
You can control this interaction using the keyboard:
float AngleStart = 0; // where outer ring starts float AngleBump = 0; // added rotation of each ring float RingThickness = 30; // how thick each ring is float Speed = 1; // how fast everything spins color OrangeColor = color(180, 95, 10); color BlueColor = color(0, 80, 110); void setup() { size(400, 400); // make a graphics window smooth(); // draw everything nicely noStroke(); // don't draw outlines of shapes } void draw() { background(BlueColor); // background is blue float diam = width; // starting diameter float angle = AngleStart; // starting angle while (diam > 0) { // work our way inwards fill(OrangeColor); // select orange color ellipse(200, 200, diam, diam); // draw a disk fill(BlueColor); // select blue color // now draw half a disk in blue arc(200, 200, diam, diam, angle, angle+PI); diam -= RingThickness; // next circle is smaller angle += Speed*AngleBump; // rotate a little more } AngleStart += Speed*.01; // next frame, start here AngleBump += Speed*.005; // and change the speed of rotation } void keyTyped() { if (key == 'r') RingThickness = max(RingThickness-10, 10); if (key == 'R') RingThickness += 10; if (key == 's') Speed = max(Speed-.1, .1); if (key == 'S') Speed += .1; }