int startingTime; float d; int n; PFont myFont; float sec; void setup() { size(800,800); background(0); noFill(); stroke(255); smooth(); myFont = createFont("ScalaSans-14.vlw", 14); textFont(myFont); startingTime = second(); } void draw() { background(0); int milliOffset = (millis() + startingTime*1000); sec = map(milliOffset%60000, 0, 60000, 0, TWO_PI) - HALF_PI; // n = 30+abs(minute()%30 - 30); n = minute()+60; d = map(15000-abs((milliOffset%30000)-15000), 0, 15000, 0, n*4); Curlicue (cos(sec) * d + width/2, sin(sec) * d + height/2, d, n); ellipse(750,40,8,8); line(750,40,cos(sec) * 20 + 750, sin(sec) * 20 + 40); text(n + " recursions",50,50); int timeinMillis = millis()%1000+(hour()*3600 + minute()*60 + second())*1000; text(hour() + " hours", 50, 700); text(hour()*60 + minute() + " minutes", 50, 720); text(hour()*3600 + minute()*60 + second() + " seconds", 50, 740); text(timeinMillis + " millis", 50, 760); } void Curlicue(float x, float y, float d, float num) { ellipse(x, y, d, d); if (num > 1) { num = num - 1; float newx = cos(sec) * d + width/2; float newy = sin(sec) * d + height/2; Curlicue (newx, newy, d-4, num); } }