Lancetta dei secondi

Visualizza i secondi, dell’orologio di sistema del computer, come una lancetta in movimento.
La lancetta viene disegnata 10 volte al secondo ma lo scatto in avanti si verifica solo una volta al secondo.

Web VPython 3.2

RAGGIO = 10.0        # Arbitrario
SPAZIO = 1.1*RAGGIO
#---------------------------------------------------------
g = graph(width = 480, height=480,
          xmin = -SPAZIO, ymin = -SPAZIO,
          xmax = +SPAZIO, ymax = +SPAZIO)
#---------------------------------------------------------
g_sec = gcurve(color = color.blue, width=10)
#---------------------------------------------------------
RAGGIO_SEC = 1.00 * RAGGIO
PI_2       = pi/2
TAU_60     = 2*pi/60
#---------------------------------------------------------
while(True):
    rate(10)
    #--------------------------------
    adesso     = Date()
    secondi    = adesso.getSeconds()
    angolo_sec = PI_2 - secondi * TAU_60
    x_sec      = RAGGIO_SEC * cos(angolo_sec)
    y_sec      = RAGGIO_SEC * sin(angolo_sec)
    
    g_sec.data = []
    g_sec.plot(0, 0)
    g_sec.plot(x_sec, y_sec)

Estrae il numero di secondi dall’oggetto Date.
Calcola l’angolo della lancetta dei secondi (rispetto all’asse verticale) quindi… la variabile angolo_sec vale pi greco mezzi meno secondi x un 60-esimo di 2 pi greco.

La finestra viene aggiornata 10 volte al secondo ma il movimento è a scatti perché non tiene conto dei centesimi (millesimi) di secondo.

Movimento continuo

Il metodo getMilliseconds() restituisce i millesimi di secondo che contribuiscono, per un millesimo, al valore istantaneo dei secondi.
Porta il rate a 30 per rendere il movimento continuo.

Web VPython 3.2

RAGGIO = 10.0        # Arbitrario
SPAZIO = 1.1*RAGGIO
#---------------------------------------------------------
g = graph(width = 480, height=480,
          xmin = -SPAZIO, ymin = -SPAZIO,
          xmax = +SPAZIO, ymax = +SPAZIO)
#---------------------------------------------------------
g_sec = gcurve(color = color.blue, width=10)
#---------------------------------------------------------
RAGGIO_SEC = 1.00 * RAGGIO
PI_2       = pi/2
TAU_60     = 2*pi/60
#---------------------------------------------------------
while(True):
    rate(30)
    #--------------------------------
    adesso     = Date()
    millesimi  = adesso.getMilliseconds()
    secondi    = adesso.getSeconds() + millesimi/1000    
    angolo_sec = PI_2 - secondi * TAU_60
    x_sec      = RAGGIO_SEC * cos(angolo_sec)
    y_sec      = RAGGIO_SEC * sin(angolo_sec)
    
    g_sec.data = []
    g_sec.plot(0, 0)
    g_sec.plot(x_sec, y_sec)

Lascia un commento