// Simple analog clock - Jim Bumgardner void setup() { size(500,500); smooth(); frameRate(2); } void draw() { background(0); float as = map(second(),0,60,0,TWO_PI); // angle of second hand, from 12 float am = map(minute()+second()/60.0,0,60,0,TWO_PI); // angle of minute hand, from 12 float ah = map(hour()+minute()/60.0,0,24,0,TWO_PI*2); // angle of hour hand, from 12 float mLen = height*.4; // length of hands (m,s,h) float sLen = height*.4; float hLen = height*.25; pushMatrix(); translate(width/2,height/2); // Much simpler if we translate to the center of the screen fill(255); ellipse(0,0,width*.9, height*.9); fill(0); // draw hour markers strokeWeight(5); for (int i = 0; i < 12; ++i) { pushMatrix(); rotate(radians(i*30)); line(width*.38,0,width*.42,0); popMatrix(); } strokeWeight(1); // draw second hand pushMatrix(); rotate(as); stroke(255,0,0); line(0,10,0,-sLen); // draw as if it's at noon, rotation takes care of the rest stroke(0); popMatrix(); // draw minute hand pushMatrix(); rotate(am); triangle(-5,10,0,-mLen,5,10); // draw as if it's at noon, rotation takes care of the rest popMatrix(); // draw hour hand pushMatrix(); rotate(ah); triangle(-5,10,0,-hLen,5,10); // draw as if it's at noon, rotation takes care of the rest popMatrix(); popMatrix(); }