randRange( 1, 12 ) randRange( 0, 3 ) * 15 MINUTE > 5 ? MINUTE : "0" + "" + MINUTE randFromArray([ "a.m.", "p.m." ])

What time is it?

init({ range: [ [-4, 4 ], [ -4, 4] ], scale: 25 }); PIECH = new analogClock( HOUR, MINUTE, 3.5, false ); PIECH.drawLabels(); PIECH.draw();
init({ range: [ [-5, 5], [-3, 3] ], scale: 25 });

The time is HOUR : NICE_MINUTE AM_PM

a 12-hour time in hours and minutes

path([ [-3, -1], [3, -1], [3, 1], [-3, 1], [-3, -1] ]); graph.time = label( [0, -0.1], "\\Huge{\\phantom{00}:\\phantom{00}}", "center" );

The small hand is for the hour, and the big hand is for the minutes.

The hour hand is pointing at `HOUR`, so the hour is `HOUR`.

The hour hand is between `HOUR` and `HOUR + 1 === 13 ? 1 : HOUR + 1`, so the hour is `HOUR`.

The hour hand is close to but hasn't passed `HOUR + 1 === 13 ? 1 : HOUR + 1`, so the hour is still `HOUR`.

graph.time.remove(); var padding = HOUR < 10 ? "\\phantom{0}" : ""; graph.time = label([0, -0.1], "\\Huge{" + padding + HOUR + ":\\phantom{00}}", "center" );

The minute hand starts pointing straight up for `0` minutes, and makes a complete circle in `1` hour.

For each quarter of the circle that the minute hand passes, add `15` minutes.

The minute hand has passed plural( MINUTE / 15, "fourth" ) of a circle, which represents `0``MINUTE` minutes.

graph.time.remove(); var padding = MINUTE < 10 ? "0" : ""; graph.time = label([0, -0.1], "\\Huge{" + HOUR + ":" + padding + MINUTE + "}", "center" );

The time is `HOUR`:`NICE_MINUTE`.