Orologio analogico – 1

La lancetta dei secondi

from datetime import datetime
from vpython  import *

TAU_60 = tau/60
ASSE_Y = vector(0, 1, 0)
ASSE_Z = vector(0, 0, 1)
 
canvas(height = 500, width = 500)
 
a_sec = arrow(color = color.yellow, round = True, shaftwidth = 0.05)

while(True):
    rate(5)
 
    adesso     = datetime.now()
    secondi    = adesso.second
    angolo     = -secondi*TAU_60
    a_sec.axis = rotate(ASSE_Y, angle = angolo, axis = ASSE_Z)

Osserva

  1. La finestra grafica è quadrata
  2. La lancetta è una freccia gialla arrotondata e assottigliata
  3. La lancetta ha 2 attributi aggiuntivi: angolo, asse
  4. La variabile angolo vale s 60-esimi di 2 pi greco (l’angolo corrispondente ai secondi attuali)
  5. Il vettore asse viene ruotato, intorno all’asse z, a partire dalla posizione verticale
  6. Il vettore asse ruota in senso orario (perché c’è il segno meno)
  7. All’attributo axis della lancetta viene assegnato il vettore asse appena ruotato

Le 3 lancette corrispondenti a ore, minuti e secondi attuali

from datetime import datetime
from vpython  import *

TAU_12 = tau/12
TAU_60 = tau/60
ASSE_Y = vector(0, 1, 0)
ASSE_Z = vector(0, 0, 1)
 
canvas(height = 500, width = 500)

a_ore = arrow(angolo = 0, color = color.red   , round = True, shaftwidth = 0.05)
a_min = arrow(angolo = 0, color = color.green , round = True, shaftwidth = 0.05)
a_sec = arrow(angolo = 0, color = color.yellow, round = True, shaftwidth = 0.05)
 
while(True):
    rate(5)
 
    adesso  = datetime.now()
    ore     = adesso.hour
    minuti  = adesso.minute
    secondi = adesso.second
 
    a_ore.angolo = -ore    *TAU_12
    a_min.angolo = -minuti *TAU_60
    a_sec.angolo = -secondi*TAU_60
     
    a_ore.axis = rotate(ASSE_Y, angle = a_ore.angolo, axis = ASSE_Z)
    a_min.axis = rotate(ASSE_Y, angle = a_min.angolo, axis = ASSE_Z)
    a_sec.axis = rotate(ASSE_Y, angle = a_sec.angolo, axis = ASSE_Z)

Continua…

Lascia un commento