Trasformazione di una figura in una figura simile.

Il nostro obbiettivo è scrivere un programma per generare figure autosimili F, a partire da una descrizione della lista  [Graphics:../Images/index_gr_9.gif], ..., [Graphics:../Images/index_gr_10.gif] di copie di F stesso di cui F è composto. Abbiamo quindi bisogno di un modo per descrivere un rapporto di somiglianza tra due figure F, G.  

Rappresentazioni di sistemi Cartesiani ortogonali. Fissiamo un sistema di cartesiano ortogonale O nel piano. Indichiamo con O' = {x0,y0,alpha0,U0,sign0} un secondo sistema cartesiano ortogonale, ottenuto da O applicando, in quest'ordine:
- una traslazione orizzontale di x0;
- una traslazione verticale di y0;
- una rotazione di alpha gradi in senso antiorario;
- un ingrandimento (oppure una contrazione) di un fattore U0 > 0 sulle unità di misura di entrambi gli assi;
- un ribaltamento intorno all'asse delle y se  sign0=-1, nessuna operazione se sign0=+1.
Il centro di O' è (x0,y0).

Rappresentazioni di rapporti di somiglianza. Possiamo rappresentare la successione delle cinque operazioni indicate sopra (traslazione orizzontale, verticale, rotazione, ingrandimento e eventuale ribaltamento) con il sistema cartesiano ortogonale O' che essi producono. Ogni rapporto di somiglianza tra due figure F, G si può ottenere con queste cinque operazioni in quest'ordine, ed indicare con un opportuna cinquina {x0,y0,alpha0,U0,sign0} di numeri. Per esempio, per ruotare di alpha gradi e ribaltare orizzontalmente una figura e' sufficiente ruotare di (180+alpha) gradi, quindi ribaltare verticalmente.

Il sistema cartesiano O originario si ottiene traslando di 0 unità in orizzontale e in verticale, ruotando di 0 gradi, e ingrandendo di un fattore 1 (cioè non ingrandendo affatto), e non ribaltando (quindi con sign=1). Di conseguenza O si indica con la cinquina:

[Graphics:../Images/index_gr_11.gif]

  Spostamento di un punto. Definiamo, usando formule prese a prestito dalla geometria cartesiana, un'operazione Move[O', Punto], che prende un punto e lo sposta insieme nel Sistema Cartesiano O'.

[Graphics:../Images/index_gr_12.gif]

Spostamento di un sistema di riferimento. Definiamo una seconda operazione Comp[O1, O2], che prende un sistema cartesiano O1, descritto rispetto ad O, un secondo sistema O2, descritto relativamente ad O1, e calcola la cinquina che descrive O2 rispetto ad O. Di nuovo, usiamo formule prese a prestito dalla geometria cartesiana.

[Graphics:../Images/index_gr_13.gif]

Esempi di traslazioni, rotazioni, ingrandimenti e ribaltamenti. Definiamo, per punti, il perimetro di un triangolo T di lati 3, 4, 5. Quindi utilizziamo il comando Move per definire un programma che sposta T in un sistema di riferimento f. Sperimentiamo su T traslazioni, rotazioni, ingrandimenti e ribaltamenti.

[Graphics:../Images/index_gr_14.gif]

Ecco un esempio di traslazione orizzontale di 8 unità. Indichiamo la figura originaria in nero ed il risultato in rosso.

[Graphics:../Images/index_gr_15.gif]

[Graphics:../Images/index_gr_16.gif]

[Graphics:../Images/index_gr_17.gif]

Un'ulteriore traslazione verticale di 6 unità.

[Graphics:../Images/index_gr_18.gif]

[Graphics:../Images/index_gr_19.gif]

[Graphics:../Images/index_gr_20.gif]

Un'ulteriore rotazione di 60 gradi.

[Graphics:../Images/index_gr_21.gif]

[Graphics:../Images/index_gr_22.gif]

[Graphics:../Images/index_gr_23.gif]

Un'ulteriore ingradimento di 2 volte.

[Graphics:../Images/index_gr_24.gif]

[Graphics:../Images/index_gr_25.gif]

[Graphics:../Images/index_gr_26.gif]

Infine, aggiungiamo un ribaltamento verticale.

[Graphics:../Images/index_gr_27.gif]

[Graphics:../Images/index_gr_28.gif]

[Graphics:../Images/index_gr_29.gif]


Converted by Mathematica      February 28, 2003