Árboles fractales en Python

| | | | | |

Introducción Un árbol fractal se conoce como un árbol que se puede crear mediante la ramificación recursivamente simétrica.

Un tronco de longitud 1 se divide en dos ramas de longitud r, cada una de que forma un ángulo q con la dirección del barril. Ambas ramas se dividen en dos ramas de longitud r * r, cada una de las cuales forma un ángulo q con la dirección de su rama principal. Continuando así con una infinidad de ramas, un árbol es una colección de ramas junto con sus puntos limitantes, llamados puntas de rama.

Basta de teoría, ahora probemos la implementación en Python. Para esto, necesitamos dos bibliotecas de Python Pygame para la GUI o GUI y math, que es una biblioteca integrada en Python y se usará para ajustes matemáticos.

Para instalar Pygame

pip install pygame 

Entonces, cómo proceder, es muy recomendable que sepas un poco sobre pigmeos y fractales.

Primero cree el tronco y luego comience a crear ramas para cada tronco, asumiendo que el tamaño de la rama es 0.9 * (longitud del tallo) y luego trate las ramas como un tallo nuevamente, repitiendo el proceso.

# Importación de bibliotecas de python

importar pygame, matemáticas


# Inicializar cue todos los módulos de Pygame importados
pygame. init ()


# Crea una nueva superficie y ventana.

altura_superficie, ancho_de_superficie = 800 , 600 # Variables de superficie

superficie_principal = pygame.display.set_mode ((superficie_altura, superficie_ancho))


# Título de la ventana

pygame.display.set_caption ( "Fractal_Tree_pythonengineering" )


def dibujar_árbol (orden, theta, sz, pos n, encabezado, color = < /código> ( 0 , 0 , 0 ), profundidad = < /código> 0 ):


El relativo proporción del tronco a todo el árbol

trunk_ratio = 0,29


# Longitud del barril

tronco = sz * trunk_rati o

delta_x = tronco * math.cos (encabezado)

delta_y = tronco * math.sin (encabezado)

< clase de código = "espacios indefinidos" > (u, v) = posn

newpos = (u + delta_x, v + delta_y)

pygame.draw.line (main_surface, color , posn, newpos)


si orden > 0 : # Dibujar otra capa de subárboles


# Siguientes seis líneas - truco simple

# las dos mitades principales de la recursividad son diferentes

# colores. Juega aquí para cambiar los colores a otra

# profundidades, o cuando la profundidad es par o impar, etc.

si profundidad = = < /código> 0 :

< código clase ="simple "> color1 = ( 255 , 0 , 0 < /código> )

color2 = < código clase = "simple"> ( 0 , 0 , 255 )

else :

color1 = color

color2 = color


# hacer llamadas recursivas para dibujar dos subárboles

newsz = sz * ( 1 - trunk_ratio)

draw_tree (order - 1 , theta, newsz, newpos, encabezado - theta, color1, profundidad + 1 )

draw_tree (orden - 1 , theta, newsz, newpos, encabezado + theta, color2, profundidad + 1 )



def principal ():

theta = 0

while True :


# Actualizar esquina

theta + = 0.01

# Esta pequeña parte nos permite dibujar cosas

# todo en pantalla

main_surface.fill (( 255 , 255 , 0 ))

draw_tree ( 9 , theta, surface_height * 0.9 < clase de código = "simple">, (surface_width / / 2 < /código> , ancho_superficie - 50 ), - < /código> math.pi / 2 )

pygame.display.flip()


# Llamando a la función principal
main()
pygame.quit()

Salir:

% 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