Orologio analogico 2

Per semplificare il codice introduco la classe Lancetta e il metodo aggiornaDati()

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;

void setup()
{
  size(500, 500);
  frameRate(5);
  smooth();
  xc=width/2;
  yc=height/2;
  dimensione=0.9*width;  
  lunghezzaS=0.8*xc;
  lunghezzaM=0.65*xc;
  lunghezzaH=0.5*xc;

  iSfondo=loadImage("sfondo500.png"); 

  lancettaS=new Lancetta(coloreS, passoS, spessoreS, lunghezzaS);
  lancettaM=new Lancetta(coloreM, passoM, spessoreM, lunghezzaM);
  lancettaH=new Lancetta(coloreH, passoH, spessoreH, lunghezzaH);
}

void aggiornaDati()
{
  secondi=second();             
  minuti=minute()+secondi/60.0; 
  ore=hour()+minuti/60;         

  secondi=passoS*secondi-HALF_PI;
  minuti =passoM*minuti -HALF_PI;
  ore    =passoH*ore    -HALF_PI;
}

void draw()
{
  background(iSfondo);

  aggiornaDati();

  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);
  }
}