
Python Polar Clock, ovvero come complicarsi la vita con calcoli inutili e rendere il risultato inutilizzabile usamdo funzioni matematiche.
Nell’articolo di ieri abbiamo imparato a riconoscere l’Informatico dai propri capolavori di complicazione inutile, con l’orologio binario.
Ma se un Informatico sa complicare bene le cose, occorre talvolta un matematico per renderle astruse.
Se l’idea di un orologio a codice binario vi ha lasciato sorpresi, immaginate un orologio in coordinate polari. No, non così facile… E’ vero che le lancette di un orologio possono essere viste come spostamenti angolari, ma nel nostro caso le cose si complicano (e come non potrebbero?).
Ciò che vogliamo ottenere è la rappresentazione percentuale del tempo trascorso in 360mi di grado, a partire da α = 0° e in senso antiorario, relativamente a 12 ore, 60 minuti e 60 secondi…
Il programma (ovvero la rivincita del Matematico)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import datetime as dt import numpy as np import matplotlib.pyplot as plt now = dt.datetime.now() h, m, s = now.hour % 12, now.minute, now.second fig = plt.figure(figsize=(5,5)) ax = plt.subplot(111,polar=True) ax.barh(3, 2*np.pi*(h/12), color="red") ax.barh(2, 2*np.pi*(m/60), color="green") ax.barh(1, 2*np.pi*(s/60), color="blue") ax.set_yticks([]) ax.set_xticks([]) ax.set_title(now.strftime("%H:%M:%S"), fontsize=16) plt.show() |
La prima parte del listato è quasi identica a quella di ieri.
Il “succo” del programma si trova alle righe 10, 11 e 12. In tali righe viene effettuata la conversione in gradi della percentuale di spazio totale rappresentato dal valore della variabile.
Esempio: La circonferenza è rappresentata dalla costante 2*np.pi o due pi greco. Se l’ora attuale fosse 9:45:37 avremmo rispettivamente un’ampiezza di 9/12, 45/60 e 37/60 di angolo giro,
A questo punto scegliamo i colori che più ci piacciono, aggiungiamo qualcjhe ammennicolo per la grafica e diamo il run al programma. Avremo un effetto simile a quello dell’immagine di copertina.
A cosa serve il nostro polar clock in Python? Assolutamente a nulla! Nessuno si sognerebbe mai di utilizzare un orologio basato su tale sistema di coordinate! E tuttavia…
Proviamo a cambiare prospettiva: dobbiamo configurare / monitorare un meccanismo basato su un percorso circolare… A questo punto possiamo fissare al secondo la posizione dell’albero centrale del movimento del nostro attuatore semplicemente usando quattro righe di Python!
Chi l’avrebbe mai immaginato…
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Raspberry PI 5
- Raspberry PI 400
- Raspberry PI Pico
- Programmiamo il Pico