Alberi frattali in Python

| | | | | |

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 , 0 , 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 = trunk * 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 profondità = = 0 :

color1 = ( 255 , 0 , 0 )

color2 = < classe codice = "normale"> ( 0 , 0 , 255 )

else :

color1 = color

color2 = color


# effettua chiamate ricorsive per disegnare due sottoalberi

newsz = sz * ( 1 - trunk_ratio)

draw_tree (ordine - 1 , theta, newsz, newpos, intestazione - 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 , 255 , 0 ))

draw_tree ( 9 , theta, surface_height * 0.9 , (larghezza_superficie / / 2 , larghezza_superficie - 50 ), - math.pi / 2 )

pygame.display.flip ()


# Richiamo della funzione principale
main()
pygame.quit()

Esci:

% MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%      

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method