{"id":7027,"date":"2025-06-03T19:30:13","date_gmt":"2025-06-03T17:30:13","guid":{"rendered":"https:\/\/liceocuneo.it\/oddenino\/?p=7027"},"modified":"2025-06-06T12:17:18","modified_gmt":"2025-06-06T10:17:18","slug":"ipercubo","status":"publish","type":"post","link":"https:\/\/liceocuneo.it\/oddenino\/ipercubo\/","title":{"rendered":"Ipercubo"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Animazione HTML5+Javascript di un ipercubo &gt;&gt;&gt; <a href=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/ipercubo.html\"><strong>ipercubo.html<\/strong><\/a><\/p>\n\n\n\n<iframe loading=\"lazy\" src=\"https:\/\/liceocuneo.it\/oddenino\/wp-content\/uploads\/sites\/2\/ipercubo.html\" title=\"Ipercubo\" width=\"640\" height=\"640\"><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\">Animazione Python+Tkinter di un ipercubo &gt;&gt;&gt; <strong>ipercubo.py<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import tkinter as tk<br>from math import sin, cos<br><br>class Ipercubo:<br>    def __init__(self, master):<br>        self.master = master<br>        self.canvas = tk.Canvas(master, width=600, height=600, bg='white')<br>        self.canvas.pack()<br>        <br>        self.angolo = 0.0<br>        self.punti = self.genera_vertici()<br>        self.spigoli = self.genera_spigoli()<br>        self.disegna()<br><br>        self.anima()<br><br>    def genera_vertici(self):<br>        # Vertici di un ipercubo in 4D<br>        return [(-1, -1, -1, -1), (-1, -1, -1, 1), (-1, -1, 1, -1), (-1, -1, 1, 1),<br>                (-1, 1, -1, -1), (-1, 1, -1, 1), (-1, 1, 1, -1), (-1, 1, 1, 1),<br>                (1, -1, -1, -1), (1, -1, -1, 1), (1, -1, 1, -1), (1, -1, 1, 1),<br>                (1, 1, -1, -1), (1, 1, -1, 1), (1, 1, 1, -1), (1, 1, 1, 1)]<br><br>    def genera_spigoli(self):<br>        # Genera gli spigoli tra i vertici<br>        spigoli = []<br>        for i in range(16):<br>            for j in range(i + 1, 16):<br>                if bin(i ^ j).count('1') == 1:  # Collega i punti che differiscono in un solo bit<br>                    spigoli.append((i, j))<br>        return spigoli<br><br>    def proietta(self, punto):<br>        # Proietta il punto 4D in 2D<br>        z = punto[2]<br>        k = 300 \/ (3 + z)  # Fattore di prospettiva<br>        x = punto[0] * k<br>        y = punto[1] * k<br>        return (x + 300, y + 300)  # Trasla al centro del canvas<br><br>    def disegna(self):<br>        self.canvas.delete(\"all\")  # Pulisce il canvas<br>        punti_proiettati = [self.proietta(self.ruota(punto)) for punto in self.punti]<br><br>        # Disegna gli spigoli tra i vertici<br>        for spigolo in self.spigoli:<br>            self.canvas.create_line(punti_proiettati[spigolo[0]], punti_proiettati[spigolo[1]], fill='black')<br><br>    def ruota(self, punto):<br>        x = punto[0]<br>        y = punto[1]<br>        z = punto[2] <br>        t = punto[3]<br><br>        # Ruota l'ipercubo attorno agli assi<br>        angolo_x = self.angolo * 0.1<br>        angolo_y = self.angolo * 0.2<br>        angolo_z = self.angolo * 0.3<br>        angolo_t = self.angolo * 0.4<br><br>        x, y = x * cos(angolo_x) - y * sin(angolo_x), x * sin(angolo_x) + y * cos(angolo_x)<br>        y, z = y * cos(angolo_y) - z * sin(angolo_y), y * sin(angolo_y) + z * cos(angolo_y)<br>        z, t = z * cos(angolo_z) - t * sin(angolo_z), z * sin(angolo_z) + t * cos(angolo_z)<br>        t, x = t * cos(angolo_t) - x * sin(angolo_t), t * sin(angolo_t) + x * cos(angolo_t)<br> <br>        return (x, y, z, t)<br><br>    def anima(self):<br>        self.angolo += 0.05  # Incrementa l'angolo<br>        self.disegna()<br>        self.master.after(50, self.anima)  # Richiama nuovamente anima dopo 50 ms<br><br>if __name__ == \"__main__\":<br>    root = tk.Tk()<br>    root.title(\"Ipercubo\")<br>    Ipercubo(root)<br>    root.mainloop()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per provare la versione Python \u00e8 necessario disporre di un ambiente di sviluppo per Python, come <strong>Thonny &#8211; Python IDE for beginners<\/strong> scaricabile gratuitamente all&#8217;indirizzo <a href=\"https:\/\/thonny.org\/\">https:\/\/thonny.org\/<\/a><br>Dopo l&#8217;installazione di Thonny \u00e8 sufficiente copiare e incollare il listato precedente nell&#8217;ambiente di sviluppo ed eseguirlo con il Run &#x25b6;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Animazione HTML5+Javascript di un ipercubo &gt;&gt;&gt; ipercubo.html Animazione Python+Tkinter di un ipercubo &gt;&gt;&gt; ipercubo.py import tkinter as tkfrom math import sin, cosclass Ipercubo: def __init__(self, master): self.master = master self.canvas = tk.Canvas(master, width=600, height=600, bg=&#8217;white&#8217;) self.canvas.pack() self.angolo = 0.0 self.punti = self.genera_vertici() self.spigoli = self.genera_spigoli() self.disegna() self.anima() def genera_vertici(self): # Vertici di un ipercubo in &hellip; <a href=\"https:\/\/liceocuneo.it\/oddenino\/ipercubo\/\" class=\"more-link\">Continua a leggere <span class=\"screen-reader-text\">Ipercubo<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-7027","post","type-post","status-publish","format-standard","hentry","category-matematica"],"_links":{"self":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/posts\/7027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/comments?post=7027"}],"version-history":[{"count":0,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/posts\/7027\/revisions"}],"wp:attachment":[{"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/media?parent=7027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/categories?post=7027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liceocuneo.it\/oddenino\/wp-json\/wp\/v2\/tags?post=7027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}