Cronometro analogico 1

Il conteggio parte con il caricamento della pagina ma si può azzerare con il clic del mouse

final color coloreS=color(255, 0, 0);
final color coloreM=color(0, 255, 0);
final color coloreH=color(0, 0, 255);
final float passoS=TWO_PI/60.0;
final float passoM=TWO_PI/60.0;
final float passoH=TWO_PI/12.0;
final int   spessoreS=5;
final int   spessoreM=10;
final int   spessoreH=15;

float    dimensione,
         lunghezzaS,
         lunghezzaM,
         lunghezzaH,
         secondi,
         minuti,
         ore;            
float    xc, yc;
PImage   iSfondo;
Lancetta lancettaS,
         lancettaM,
         lancettaH;
float    mm, mmSTART;


void setup()
{
  size(500, 500);
  frameRate(10);
  smooth();
  noStroke();

  xc=width/2;
  yc=height/2;
  dimensione=0.9*width;  
  lunghezzaS=0.8*xc;
  lunghezzaM=0.65*xc;
  lunghezzaH=0.5*xc;

  lancettaS=new Lancetta(coloreS, passoS, spessoreS, lunghezzaS);
  lancettaM=new Lancetta(coloreM, passoM, spessoreM, lunghezzaM);
  lancettaH=new Lancetta(coloreH, passoH, spessoreH, lunghezzaH);
  
  iSfondo=loadImage("sfondo500.png");
  mmSTART=millis(); 
}

void mousePressed()
{
  mmSTART=millis(); 
}
void aggiornaDati()
{
  mm     =millis()-mmSTART;  
  secondi=mm/1000.0;
  minuti =(int)secondi/60;  secondi=secondi%60;
  ore    =(int)minuti/60;   minuti =minuti%60;
  
  secondi=passoS*secondi-HALF_PI;
  minuti =passoM*minuti -HALF_PI;
  ore    =passoH*ore    -HALF_PI;
}

void draw()
{
    aggiornaDati(); 
    background(iSfondo);

    lancettaH.draw(ore);
    lancettaM.draw(minuti);
    lancettaS.draw(secondi);
}

class Lancetta
{
  color colore;
  float passo;
  int   spessore;
  float lunghezza;

  Lancetta(color co, float pa, int sp, float lu)
  {
      colore=co;        
      passo=pa;        
      spessore=sp;        
      lunghezza=lu;
  }
  
  void draw(float angolo)
  {
      stroke(colore);
      strokeWeight(spessore);
      float x=xc+cos(angolo)*lunghezza;
      float y=yc+sin(angolo)*lunghezza;
      line(xc, yc, x, y);
  }
}