Introduzione Un albero frattale è noto come un albero che può essere creato da ramificazioni ricorsivamente simmetriche.
Un tronco di lunghezza 1 si divide in due rami di lunghezza r, ciascuno di che forma un angolo q con la direzione della canna. Entrambi questi rami sono divisi in due rami di lunghezza r * r, ciascuno dei quali forma un angolo q con la direzione del suo ramo genitore. Proseguendo in questo modo un numero infinito di rami, un albero è un insieme di rami insieme ai loro punti limite, chiamati branch tips.
Basta teoria, ora proviamo l`implementazione in Python. Per questo abbiamo bisogno di due librerie Python Pygame per la GUI o GUI e math, che è una libreria incorporata in Python e verrà utilizzata per modifiche matematiche.
Per installare Pygame
pip install pygame
Quindi, come procedere, si consiglia vivamente di conoscere un po` di pigmei e frattali.
Per prima cosa crea il tronco, quindi inizia a creare rami per ciascun tronco, assumendo che la dimensione del ramo sia 0,9 * (lunghezza dello stelo) e quindi trattando di nuovo i rami come uno stelo, ripetendo il processo.
# Importazione di librerie Python
import
pygame, matematica
# Inizializza cue tutti i moduli Pygame importati
pygame. init()
# Crea una nuova superficie e finestra.
surface_height, surface_width
=
800
,
600
# Variabili di superficie
main_surface
=
pygame.display.set_mode ((surface_height, surface_width))
# Titolo della finestra
pygame.display.set_caption (
"Fractal_Tree_pythonengineering"
)
def
draw_tree (ordine, theta, sz, pos n, intestazione, colore
=
0
), profondità
=
0
):
Il relativo rapporto tra il tronco e l`intero albero
trunk_ratio
=
0,29
# Lunghezza della canna
trunk
=
sz
*
trunk_rati o
delta_x
=
trunk
*
math.cos (intestazione)
delta_y
=
*
math.sin (intestazione)
(u, v)
=
posn
newpos
=
(u
code> +
delta_x, v
+
delta_y)
pygame.draw.line (main_surface, color , posn, newpos)
if
ordina >
0
:
# Disegna un altro livello di sottoalberi
# Prossime sei righe - hack semplice
# le due metà principali della ricorsione sono diversi
# colori. Gioca qui per cambiare i colori in un altro
# profondità, o quando la profondità è pari o dispari, ecc.
if
0
:
color1
=
(
255
else
:
color1
=
color
color2
=
color
# effettua chiamate ricorsive per disegnare due sottoalberi
newsz
=
sz
trunk_ratio)
draw_tree (ordine
-
theta, color1, depth
+
1
)
draw_tree (ordine
-
1
, theta, newsz, newpos, header
+
theta, color2, depth
+
1
)
def
main ():
theta
=
0
mentre
True
:
# Angolo di aggiornamento
theta
+
=
0.01
# Questa piccola parte ci permette di disegnare cose
# tutto sullo schermo
main_surface.fill ((
255
,
draw_tree (
9
, theta, surface_height
*
0.9
, (larghezza_superficie
/
/
2
pygame.display.flip ()
# Richiamo della funzione principale
main()
pygame.quit()
Esci:
% MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%