Utilizza
- Mouse: attiva la finestra grafica
- LEFT – RIGHT: rotazione dell’asse y
- UP – DOWN: rotazione dell’asse x
- A – Z: rotazione dell’asse z
- SPACE: ritorna alla posizione standard.
- Applicazione Java
float dimA=PI/100, PI6=PI/6, Xc, Yc, angoloX=0, angoloY=0,angoloZ=0, raggio, diametro; color blu, verde, rosso, grigio, grigio1, grigio2; Lancetta LS, LM, LH; float S, M, H; Ora[] LeOre=new Ora[12]; void setup() { size(500, 500, P3D); frameRate(30); noStroke(); smooth(); Xc=width/2; Yc=height/2; diametro=0.8*min(width, height); raggio=diametro/2; blu =color( 0, 0, 255); verde =color( 0, 255, 0); rosso =color(255, 0, 0); grigio1=color( 0, 0, 0); grigio2=color(127, 127, 127); for(int i=0; i < 12; i++) LeOre[i]=new Ora(i); LH = new Lancetta(diametro*0.3, diametro*0.06, blu , -5); LM = new Lancetta(diametro*0.4, diametro*0.04, verde, 0); LS = new Lancetta(diametro*0.5, diametro*0.02, rosso, +5); } void keyPressed() { if(keyCode==RIGHT) angoloY += dimA; else if(keyCode==LEFT) angoloY -= dimA; else if(keyCode==UP) angoloX += dimA; else if(keyCode==DOWN) angoloX -= dimA; else if(keyCode=='a' || keyCode == 'A') angoloZ -= dimA; else if(keyCode=='z' || keyCode == 'Z') angoloZ += dimA; else { angoloX=0; angoloY=0; angoloZ=0; } } void draw() { background(255); lights(); translate(Xc, Yc, 0); rotateX(angoloX); rotateY(angoloY); rotateZ(angoloZ); for(int i=0; i < 12; i++) LeOre[i].disegna(); S=second(); M=minute()+S/60; H=hour()+M/60; LH.aggiorna((TWO_PI/12)*H-HALF_PI); LM.aggiorna((TWO_PI/60)*M-HALF_PI); LS.aggiorna((TWO_PI/60)*S-HALF_PI); } class Ora { int h; Ora(int cheOra) { h = cheOra; } void disegna() { if(h==0) fill(grigio1); else fill(grigio2); pushMatrix(); rotateZ(h*PI6-HALF_PI); translate(raggio, 0, 0); box(20,12,4); popMatrix(); } } class Lancetta { float lunga, alta, livello; color colore; Lancetta(float lun, float alt, color col, float liv) { lunga=lun; alta=alt; colore=col; livello=liv; } void aggiorna(float angolo) { fill(colore); pushMatrix(); rotateZ(angolo); translate(lunga/2-alta, 0, livello); box(lunga, alta, 4); popMatrix(); } }