{"id":33234,"date":"2026-07-29T17:16:07","date_gmt":"2026-07-29T15:16:07","guid":{"rendered":"https:\/\/www.valcon.it\/vpython\/?p=33234"},"modified":"2026-09-13T12:01:08","modified_gmt":"2026-09-13T10:01:08","slug":"2d-tre-lancette","status":"publish","type":"post","link":"https:\/\/www.valcon.it\/vpython\/2d-tre-lancette\/","title":{"rendered":"Tre lancette"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Visualizza ore, minuti e secondi, dell&#8217;orologio di sistema del computer, come tre lancette in movimento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Versione 1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Riprende il codice della <a href=\"https:\/\/www.valcon.it\/vpython\/2d-secondi\/\" data-type=\"post\" data-id=\"33210\">lancetta dei secondi<\/a> aggiungendo due sezioni per i <strong>minuti<\/strong> e le <strong>ore<\/strong>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nWeb VPython 3.2\n\nRAGGIO = 10.0           # Arbitrario\nSPAZIO = 1.1*RAGGIO\n#---------------------------------------------------------\ng     = graph(width=480, height=480,\n              xmin=-SPAZIO, ymin= -SPAZIO,\n              xmax=+SPAZIO, ymax= +SPAZIO)\ng_ore = gcurve(color=color.red  , width=20)\ng_min = gcurve(color=color.green, width=15)\ng_sec = gcurve(color=color.blue , width=10)\n#---------------------------------------------------------\nRAGGIO_ORE = 0.50*RAGGIO\nRAGGIO_MIN = 0.75*RAGGIO\nRAGGIO_SEC = 1.00*RAGGIO\n\nPI_2   =   pi\/ 2\nTAU_12 = 2*pi\/12\nTAU_60 = 2*pi\/60\n#---------------------------------------------------------\nwhile(True):\n    rate(10)\n    adesso     = Date()\n    millesimi  = adesso.getMilliseconds()    \n    secondi    = adesso.getSeconds() + millesimi\/1000    \n    angolo_sec = PI_2 - secondi*TAU_60\n    x_sec      = RAGGIO_SEC*cos(angolo_sec)\n    y_sec      = RAGGIO_SEC*sin(angolo_sec)\n    g_sec.data = &#x5B;]\n    g_sec.plot(0, 0)\n    g_sec.plot(x_sec, y_sec)\n    #------------------------------------------------\n    minuti     = adesso.getMinutes() + secondi\/60\n    angolo_min = PI_2 - minuti*TAU_60\n    x_min      = RAGGIO_MIN*cos(angolo_min)\n    y_min      = RAGGIO_MIN*sin(angolo_min)\n    g_min.data = &#x5B;]\n    g_min.plot(0, 0)\n    g_min.plot(x_min, y_min)\n    #------------------------------------------------\n    ore        = adesso.getHours() + minuti\/60    \n    angolo_ore = PI_2 - ore*TAU_12\n    x_ore      = RAGGIO_ORE*cos(angolo_ore)\n    y_ore      = RAGGIO_ORE*sin(angolo_ore)\n    g_ore.data = &#x5B;]\n    g_ore.plot(0, 0)\n    g_ore.plot(x_ore, y_ore)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Versione 2<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per migliorare la leggibilit\u00e0 del codice le istruzioni simili sono scritte vicine e\/o in colonne.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nWeb VPython 3.2\n\nRAGGIO = 10.0           # Arbitrario\nSPAZIO = 1.1*RAGGIO\n#---------------------------------------------------------\ng     = graph(width=480, height=480,\n              xmin=-SPAZIO, ymin= -SPAZIO,\n              xmax=+SPAZIO, ymax= +SPAZIO)\ng_ore = gcurve(color=color.red  , width=20)\ng_min = gcurve(color=color.green, width=15)\ng_sec = gcurve(color=color.blue , width=10)\n#---------------------------------------------------------\nRAGGIO_ORE = 0.50*RAGGIO\nRAGGIO_MIN = 0.75*RAGGIO\nRAGGIO_SEC = 1.00*RAGGIO\n\nPI_2   =   pi \/  2\nTAU_12 = 2*pi \/ 12\nTAU_60 = 2*pi \/ 60\n#---------------------------------------------------------\nwhile(True):\n    rate(10)\n    adesso    = Date()\n    millesimi = adesso.getMilliseconds()\n    secondi   = adesso.getSeconds()+millesimi\/1000    \n    minuti    = adesso.getMinutes()+secondi  \/  60\n    ore       = adesso.getHours()  +minuti   \/  60    \n    \n    angolo_ore = PI_2 - ore    *TAU_12\n    angolo_min = PI_2 - minuti *TAU_60\n    angolo_sec = PI_2 - secondi*TAU_60\n    \n    x_ore = RAGGIO_ORE*cos(angolo_ore); y_ore = RAGGIO_ORE*sin(angolo_ore)    \n    x_min = RAGGIO_MIN*cos(angolo_min); y_min = RAGGIO_MIN*sin(angolo_min)    \n    x_sec = RAGGIO_SEC*cos(angolo_sec); y_sec = RAGGIO_SEC*sin(angolo_sec)\n\n    g_ore.data = &#x5B;]; g_ore.plot(0, 0); g_ore.plot(x_ore, y_ore)        \n    g_min.data = &#x5B;]; g_min.plot(0, 0); g_min.plot(x_min, y_min)    \n    g_sec.data = &#x5B;]; g_sec.plot(0, 0); g_sec.plot(x_sec, y_sec)\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Versione 3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aggiungi le tacche&#8230;<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"100%\" height=\"600\" src=\"https:\/\/www.glowscript.org\/#\/user\/ValCon\/folder\/time\/program\/time-3-3\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\">Versione 4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando alcune variabili si comportano come <em>oggetti<\/em> con <em>dati in parallelo<\/em> e <em>comportamenti<\/em> in comune&#8230; \u00e8 il momento di passare alla programmazione a oggetti!<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nWeb VPython 3.2\n#---------------------------------------------------------\nRAGGIO = 10.0        # Arbitrario\nSPAZIO = 1.1*RAGGIO\n#---------------------------------------------------------\ng = graph(width = 480, height=480,\n          xmin = -SPAZIO, ymin = -SPAZIO,\n          xmax = +SPAZIO, ymax = +SPAZIO)\n#---------------------------------------------------------\nclass Lancetta:\n    PI_2   = pi\/2   # COSTANTI\n    TAU_12 = 2*pi\/12\n    TAU_60 = 2*pi\/60\n    \n    def __init__(self, tipo, colore, spessore, lunghezza):\n        self.tipo          = tipo\n        self.grafico       = gcurve()        \n        self.grafico.color = colore\n        self.grafico.width = spessore\n        self.lunghezza     = lunghezza\n    \n    def aggiorna(self, valore):\n        self.valore = valore\n        if(self.tipo == &quot;h&quot;):\n            self.angolo = self.PI_2 - self.valore * self.TAU_12\n        elif(self.tipo in (&quot;m&quot;, &quot;s&quot;)):\n            self.angolo = self.PI_2 - self.valore * self.TAU_60\n\n        self.x = self.lunghezza * cos(self.angolo)\n        self.y = self.lunghezza * sin(self.angolo)\n\n    def disegna(self):\n        self.grafico.data = &#x5B;]\n        self.grafico.plot(0, 0)\n        self.grafico.plot(self.x, self.y)\n#---------------------------------------------------------\nlancetta_ore = Lancetta(&quot;h&quot;, color.red  , 15, 0.50*RAGGIO)\nlancetta_min = Lancetta(&quot;m&quot;, color.green, 10, 0.75*RAGGIO)\nlancetta_sec = Lancetta(&quot;s&quot;, color.blue ,  5, 1.00*RAGGIO)\n#---------------------------------------------------------\n#---------------------------------------------------------\nwhile(True):\n    rate(10)\n    adesso    = Date()\n    millesimi = adesso.getMilliseconds()\n    secondi   = adesso.getSeconds() + millesimi\/1000\n    minuti    = adesso.getMinutes() + secondi  \/  60\n    ore       = adesso.getHours()   + minuti   \/  60\n\n    lancetta_ore.aggiorna(ore)\n    lancetta_min.aggiorna(minuti)\n    lancetta_sec.aggiorna(secondi)   \n\n    lancetta_ore.disegna()\n    lancetta_min.disegna()\n    lancetta_sec.disegna()\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Una <strong>Lancetta<\/strong> ha gli attributi<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>tipo<\/strong>, per distinguere le ore in un giro (12) dai minuti e secondi (60)<\/li>\n\n\n\n<li><strong>colore<\/strong> (red, green, blue)<\/li>\n\n\n\n<li><strong>spessore<\/strong> (15, 10, 5)<\/li>\n\n\n\n<li><strong>lunghezza<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">e due metodi<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>aggiorna<\/strong>, riceve il <strong>valore<\/strong> attuale e lo utilizza per calcolare l&#8217;<strong>angolo<\/strong> e quindi le coordinate <strong>x<\/strong>, <strong>y<\/strong><\/li>\n\n\n\n<li><strong>disegna<\/strong>, cancella il disegno precedente e disegna un tratto dal <strong>centro<\/strong> all&#8217;estremo <strong>x<\/strong>, <strong>y<\/strong><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Visualizza ore, minuti e secondi, dell&#8217;orologio di sistema del computer, come tre lancette in movimento. Versione 1 Riprende il codice della lancetta dei secondi aggiungendo due sezioni per i minuti e le ore. Versione 2 Per migliorare la leggibilit\u00e0 del codice le istruzioni simili sono scritte vicine e\/o in colonne. Versione 3 Aggiungi le tacche&#8230; &#8230; <a title=\"Tre lancette\" class=\"read-more\" href=\"https:\/\/www.valcon.it\/vpython\/2d-tre-lancette\/\" aria-label=\"Per saperne di pi\u00f9 su Tre lancette\">Leggi tutto<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[18],"class_list":["post-33234","post","type-post","status-publish","format-standard","hentry","category-appl-2d","tag-web"],"_links":{"self":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/33234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/comments?post=33234"}],"version-history":[{"count":16,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/33234\/revisions"}],"predecessor-version":[{"id":33292,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/posts\/33234\/revisions\/33292"}],"wp:attachment":[{"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/media?parent=33234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/categories?post=33234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.valcon.it\/vpython\/wp-json\/wp\/v2\/tags?post=33234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}