«

»

Dic 29

Stampa Articolo

Il dodecaedro rombico con GeoGebra (e Mathematica)

Come è noto GeoGebra è un programma di geometria dinamica che lavora in due dimensioni. E’ in fase di sviluppo una versione 3D, ma con un po’ di lavoro e un po’ di teoria è possibile realizzare disegni di figure tridimensionali anche con la versione classica. In questo post vedremo come combinare le informazioni fornite dal programma Mathematica (o anche semplicemente con il motore di ricerca WolframAlpha), un po’ di nozioni di geometria dello spazio e le funzioni di Geogebra per costruire un dodecaedro rombico.

Innanzitutto, diciamo che un dodecaedro rombico (o rombododecaedro): è un poliedro le cui facce sono tutti rombi uguali tra loro. Una caratteristica interessante di questo poliedro è che con esso è possibile tassellare lo spazio.

Come prima cosa ho utilizzato il programma Mathematica per ricavare le coordinate di un dodecaedro rombico centrato nell’origine degli assi e di lato uguale a 1. La stessa informazione è reperibile nel motore di ricerca WolframAlpha, digitando “rhombic dodecahedron coordinates” nel campo di ricerca. Il risultato di WolframAlpha si può vedere qui, mentre nella figura sottostante mostro l’output generato da Mathematica

Coordinate del dodecaedro rombico

Si noti che Mathemathica fornisce anche la composizione delle facce del dodecaedro, elencando i vertici dei poligoni che le formano.

Ottenuta questa informazione, bisogna mettersi al lavoro per realizzare la costruzione con GeoGebra, ma come prima cosa è necessario impostare il foglio dinamico per disegnare oggetti tridimensionali in un piano. L’idea è di costruire le immagini nel piano bidimensionale R2 dei versori della base canonica di R3. Iniziamo quindi col definire i tre punti
E_1={{1},{0},{0}}
E_2={{0},{1},{0}}
E_3={{0},{0},{1}}

Stiamo definendo questi punti come vettori colonna (scritti in questo modo GeoGebra li considererà come matrici 3×1… ricordiamoci che in GeoGebra 2D i punti hanno due sole coordinate!)
Ora creiamo quattro slider: a,b,c determineranno gli angoli di rotazione attorno agli assi x, y e z e variano da 0° a 360°; d ci servirà per dilatare il dodecaedro e varia nell’intervallo [0.5,5]. Ora definiamo le rotazioni fondamentali attorno agli assi cartesiani; queste sono definite dalle matrici

R_x= \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos a & -\sin a \\  0 & \sin a & \cos a\end{pmatrix}
R_y= \begin{pmatrix} \cos b & 0 & -\sin b \\ 0 & 1 & 0 \\  \sin b & 0 & \cos b\end{pmatrix}
R_z= \begin{pmatrix} \cos c & -\sin c & 0 \\ \sin c & \cos c & 0 \\  0 & 0 & 1\end{pmatrix}

Inserisco nel campo di inserimento i comandi
R_x = {{1,0,0},{0,cos(a),-sin(a)},{0,sin(a),cos(a)}}
R_y = {{cos(b),0,-sin(b)},{0,1,0},{sin(b),0,cos(b)}}
R_z = {{cos(c),-sin(c),0},{sin(c),cos(c),0},{0,0,1}}

quindi costruiamo la generica rotazione attorno all’origine moltiplicando tra loro le tre matrici:
R=R_x*R_y*R_z

La matrice R ci servirà per simulare una rotazione del dodecaedro attorno all’origine, agendo sugli slider a, b e c. Ora applichiamo questa rotazione ai tre punti base del piano, che avevamo chiamato E1, E2 e E3. Per fare questo basta moltiplicare la matrice R per i vettori colonna:
V_1=R*E_1
V_2=R*E_2
V_3=R*E_3

I punti (anzi, i vettori colonna) V1, V2 e V3 sono i punti ottenuti da E1, E2 e E3 con una rotazione R. Se consideriamo i tre angoli di rotazione uguali a 45°, l’effetto della rotazione porterà il punto E1=(1,0,0) sul punto V1=(0.5,0.15,0.85). In figura vediamo i valori per le matrici e gli altri punti:

La finestra algebra

Ora dobbiamo trasformare un punto di R3 in un punto di R2. L’operazione è semplicissima: basta togliere una delle tre coordinate; decido di togliere la prima, in questo modo vedremo le figure proiettate sul piano yz. Bisogna insomma fare in modo che il vettore colonna
V_1=\begin{pmatrix} x \\ y \\ z \end{pmatrix}
diventi il punto W_1 (y,z) così che possa finalmente essere disegnato sul piano. Per fare ciò si utilizza il comando

Elemento[ls,n]

che estrae l’elemento n dalla lista ls.  Dalla lista {{x},{y},{z}} dobbiamo dapprima estrarre il secondo e terzo elemento, ma poiché anche questi sono liste e non numeri, dobbiamo estrarne l’unico elemento presente (cioè il primo). Tutto questo è realizzato dai comandi
W_1=(Elemento[Elemento[V_1, 2], 1], Elemento[Elemento[V_1, 3], 1])
W_2=(Elemento[Elemento[V_2, 2], 1], Elemento[Elemento[V_2, 3], 1])
W_3=(Elemento[Elemento[V_3, 2], 1], Elemento[Elemento[V_3, 3], 1])

Ogni punto dello spazio P, di coordinate (P_x,P_y,P_z) può essere rappresentato come combinazione lineare dei tre vettori colonna E1, E2 e E3:
P=P_x\cdot E_1+P_y\cdot E_2+P_z\cdot E_3
dopo aver applicato la rotazione R, P avrà coordinate
P=P_x\cdot V_1+P_y\cdot V_2+P_z\cdot V_3
e la sua rappresentazione sul piano avrà coordinate
P=P_x\cdot W_1+P_y\cdot W_2+P_z\cdot W_3

Ora non resta che inserire le coordinate dei vertici del dodecaedro rombico come liste in GeoGebra (si potrebbero – e forse dovrebbero – continuare ad usare vettori colonna ma per semplificare le successive operazioni ho evitato di farlo). Mostro le operazioni per il primo punto (P1 è il punto in R3, Q1 è la sua rappresentazione sul piano, quello che effettivamente visualizziamo in GeoGebra:

P_1={-sqrt(2/3),-sqrt(2/3),0}*d
Q_1=Elemento[P_1, 1] V_1 + Elemento[P_1, 2] V_2 + Elemento[P_1, 3] V_3

Ho moltiplicato le coordinate del punto P1 per lo slider d, per poter realizzare la dilatazione del dodecaedro.
Le stesse operazioni vanno ripetute per i punti P2…P14.

Abbiamo costruito i vertici, ma mancano le facce. Ruotando il tetraedro dovrebbe apparire evidente come costruirle, in ogni caso possiamo riferirci all’output di Mathematica e inserire dalla linea di comando le istruzioni per definire i 12 poligoni:
Poligono[Q_2, Q_1, Q_3, Q_4]
Poligono[Q_1, Q_2, Q_7, Q_5]
Poligono[Q_6, Q_8, Q_3, Q_1]
Poligono[Q_2, Q_4, Q_9, Q_7]
Poligono[Q_8, Q_{10}, Q_4, Q_3]
Poligono[Q_5, Q_{11}, Q_6, Q_1]
Poligono[Q_9, Q_4, Q_{10}, Q_{14}]
Poligono[Q_5, Q_7, Q_{12}, Q_{11}]
Poligono[Q_8, Q_6, Q_{11}, Q_{13}]
Poligono[Q_7, Q_9, Q_{14}, Q_{12}]
Poligono[Q_8, Q_{13}, Q_{14}, Q_{10}]
Poligono[Q_{14}, Q_{13}, Q_{11}, Q_{12}]

Ora il lavoro è davvero finito; muovendo gli slider a, b e c si vedrà il dodecaedro ruotare, spostando d si modifica la lunghezza del lato. In figura si vede il risultato finale (arricchito con la rappresentazione dei tre assi), per vedere la figura dinamica, clicca qui:

Dodecaedro rombico

{lang: 'it'}

Permalink link a questo articolo: http://www.mateblog.it/il-dodecaedro-rombico-con-geogebra-e-mathematica/

3 comments

2 pings

  1. Andreas Bauer

    Dear Michael,

    thanks a lot for this excellent post. When I reproduced it locally (using copy & paste) I noticed that in the definition of the points W_1 to W_3, the opening brackets “(” are missing. You might want to insert them for lazy people like me O:-)

    Thanks again and best regards,

    Andreas

    1. Michele Passante

      Andreas, thanks a lot, now the code works 🙂

  2. Tom Gettys

    Thank you for this information (and sorry for the English).

    I have implemented your code, and it seems to work correctly when I change the angle for rotation about the z-axis (that is, the entire drawing spins around the apparent z-axis), but that is not true for the x or y-axis.

    I have checked my code 3 times very carefully, so I am suspecting that there may be an error with a sign or trig function in one of the rotation matrices.

    I am sorry to bother you about this, but I would really like to get it working correctly. Any guidance would be appreciated.

  1. Sketch, programma per disegnare solidi « Matematica a scuola

    […] utilizzato per disegnare il dodecaedro rombico, già realizzato con Geogebra, partendo dalle coordinate dei vertici e dalla definizione delle […]

  2. Dreidimensionale Darstellung von Körpern in Geogebra 3.2 « Bildungsbauer

    […] einen Eintrag der Geogebra-Gruppe auf Facebook bin ich heute auf einen sehr interessanten Blogeintrag von Michael Passante aufmerksam geworden. In diesem beschreibt er, wie auch schon in der aktuellen Geogebra-Version 3.2 […]

Rispondi