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
- La finestra grafica è quadrata
- La lancetta è una freccia gialla arrotondata e assottigliata
- La lancetta ha 2 attributi aggiuntivi: angolo, asse
- La variabile angolo vale s 60-esimi di 2 pi greco (l’angolo corrispondente ai secondi attuali)
- Il vettore asse viene ruotato, intorno all’asse z, a partire dalla posizione verticale
- Il vettore asse ruota in senso orario (perché c’è il segno meno)
- 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)