This is a self-running program with no interaction.
We draw a little flower garden in the DePatie-Freleng style of animation. Each garden is unique and will never be seen again. It's grown using random numbers that determine everything from the number of flowers to the number of petals on each one, their color, and even the angle of their stalks.
The garden automatically updates about twice per second, producing a unique image each time.
void setup() {
size(600, 500); // make a graphics window
smooth(); // draw everything nicely
}
// draw a little garden of flowers
void draw() {
background(165, 240, 225); // clear the screen
int numFlowers = (int)random(10, 30); // pick a number of flowers
for (int i=0; i<numFlowers; i++) {
drawOneDaisy(); // draw the flowers one by one
}
frameRate(.5); // draw a new frame every 2 seconds
}
void drawOneDaisy() {
float cx = width * random(0, 1); // choose the flower's center
float cy = height * random(.2, .8);
float r = (width/2.0) * random(.1, .2); // the outer radius of the petals
float innerR = r * 0.2; // radius of the central bud
int numPetals = (int)random(4, 20); // draw this many petals
// Pick a couple of bright colors. Using HSB, we can keep the
// saturation and brightness high, while choosing a random hue.
colorMode(HSB);
color insideColor = color(random(0, 255), random(100, 255), random(100, 200));
color petalsColor = color(random(0, 255), random(100, 255), random(100, 200));
colorMode(RGB);
// Draw a slanted stalk from the center of the bud to the ground.
noFill();
stroke(0);
line(cx, cy, cx+random(-50, 50), height);
// draw each petal
noStroke();
fill(petalsColor);
// pick a random starting angle for the petals
float angleStart = random(TWO_PI);
// find the maximum angle spanned by each petal
float angleSize = TWO_PI/numPetals;
for (int i=0; i<numPetals; i++) {
// make the range of angles spanned by this petal
float angle1 = angleStart + (angleSize * (i+random(.1, .4)));
float angle2 = angleStart + (angleSize * (i+random(.6, .9)));
// make the outermost radius of this petal
float thisR = r * random(.9, 1.1);
// draw the petal as a filled-in arc radiating from the bud
arc(cx, cy, thisR*2, thisR*2, angle1, angle2);
}
// draw the central bud
fill(insideColor);
noStroke();
ellipse(cx, cy, innerR*2, innerR*2);
// finally, draw the grassy ground
fill(75, 155, 75);
rect(0, 700, width, 100);
}