La matematica degli alberi frattali

PREMESSE
I rami del nostro albero sono parallelogrammi che "spuntano" dai precedenti.
Il tronco iniziale è un semplice rettangolo.
triangolo rettangolo Richiamiamo, inizialmente, le note relazioni presentate in figura per "risolvere" un triangolo rettangolo nel caso in cui si conoscano la misura dell'ipotenusa e dell'angolo T.
Riferiamoci ora al parallelogramma ABCD. Supponiamo di conoscere:
  • le coordinate del punto A(xA,yA)
  • la misura del lato AB=DC
  • La misura del lato BC=AD
  • L'ampiezza dell'angolo T
  • L'ampiezza dell'angolo T1
Le coordinate degli altri punti del parallelogramma sono date da:
parallelogramma
  • xB=xA+ABcos(T1)
    yB=yA+ABsen(T1)
  • xC=xB+BCcos(T)
    yC=yB+BCsen(T)
  • xD=xC-CDcos(T1)
    yD=yC+CDsen(T1)


A questo punto è possibile scrivere il programma, in linguaggio di progetto, che consente di relizzare l'albero frattale:

Passo zero

Costruire un rettangolo con il lato AB di 20 pixel ed il lato BC di 100 pixel (o di altra misura a piacere).

passo zero

Passo uno: calcoliamo l'origine dei nuovi rami

passo uno Traslare il punto A e trasformarlo nel punto A': il punto A' si trova nel punto medio fra C e D.

Risulta

xA'= xC+0.5*(xC-xD)
yA'= xD+0.5*(yC-yD)

Passo due: contrarre la figura di partenza.

Visto che i rami mano a mano si rimpiccoliscono, possiamo porre:

A'B'=0.67*AB; C'D'=0.67*CD

In questo modo, la lunghezza di ogni ramo diventa circa i due terzi del ramo precedente.
E' ovvio che è possibile scegliere un'altra contrazione a piacere.

Passo tre: costruire il ramo di destra.

Con facili calcoli si trova:

xB'= xA'+A'B'cosT1
yB'= yA'-A'B'senT1
xC'= xB'+B'C'cosT
yC'= yB'+B'C'senT
xD'= xC'-A'B'cosT1
yD'= yC'+A'B'senT1

Scegliere gli angoli T e T1 a piacere.
Nell'esempio l'angolo T è di circa 45° che corrisponde a circa 0.785 radianti, mentre T1 è di circa 30° che corrisponde a circa 0.524 radianti.

Passo quattro: costruire il ramo di sinistra.

Con facili calcoli si trova:

xB''= xA''-A''B''cosT4
yB''= yA''-A''B''senT4
xC''= xB''-B''C''cosT3
yC''= yB''+B''C'senT3
xD''= xA''-A''D''cosT3
yD''= yA''+A''D'senT3

Passi successivi: iterare il procedimento.

Ripetere i passi da 1 a 4, riferendoli però ai nuovi rami. Basterà applicare le formule sopra scritte alle nuove coordinate.

    


Indice Home Scrivi

©2002 www.webfract.it