Árvores Fractais em Python

| | | | | |

Introdução Uma árvore fractal é conhecida como uma árvore que pode ser criada por ramificação recursivamente simétrica.

Um tronco de comprimento 1 se divide em dois ramos de comprimento r, cada um deles que forma um ângulo q com a direção do cano. Ambos os ramos são divididos em dois ramos de comprimento r * r, cada um dos quais faz um ângulo q com a direção de seu ramo pai. Continuando dessa forma um número infinito de ramificações, uma árvore é uma coleção de ramificações juntamente com seus pontos limites, chamados de dicas de ramificações.

Chega de teoria, agora vamos tentar a implementação em Python. Para isso, precisamos de duas bibliotecas Python Pygame para a GUI ou GUI e matemática, que é uma biblioteca integrada em Python e será usada para ajustes matemáticos.

Para instalar o Pygame

pip instale o pygame 

Então, como proceder, é altamente recomendável que você conheça um pouco sobre pigmeus e fractais.

Primeiro, crie o tronco e, em seguida, comece a criar galhos para cada tronco, assumindo que o tamanho do ramal seja 0,9 * (comprimento do caule) e, em seguida, trate os galhos como um caule novamente, repetindo o processo.

# Importando bibliotecas python

import pygame, math


# Inicializa cue todos os módulos Pygame importados
pygame. init()


# Cria uma nova superfície e janela.

surface_height, surface_width = 800 , 600 # Variáveis de superfície

main_surface = pygame.display.set_mode ((surface_height, surface_width))


# título da janela

pygame.display.set_caption ( "Fractal_Tree_pythonengineering" )


def draw_tree (ordem, theta, sz, pos n, cabeçalho, cor = ( 0 , 0 , 0 ), depth = 0 ):


O relativo proporção do tronco para a árvore inteira

trunk_ratio = 0,29


# Comprimento do barril

trunk = sz * trunk_rati o

delta_x = trunk * math.cos (heading)

delta_y = trunk * math.sin (heading)

(u, v) = posn

newpos = (u + delta_x, v + delta_y)

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


if ordem > 0 : # Desenha outra camada de subárvores


# Próximas seis linhas - hack simples

# as duas metades principais da recursão são diferentes

# cores. Mexa aqui para mudar as cores para outro

# profundidades, ou quando a profundidade é par ou ímpar, etc.

if profundidade = = 0 :

color1 = ( 255 , 0 , 0 )

color2 = ( 0 , 0 , 255 )

else :

color1 = color

color2 = color


# faz chamadas recursivas para desenhar duas subárvores

newsz = sz * ( 1 - trunk_ratio)

draw_tree (order - 1 , theta, newsz, newpos, cabeçalho - theta, color1, depth + 1 )

draw_tree (ordem - 1 , theta, newsz, newpos, cabeçalho + theta, color2, depth + 1 )



def main():

theta = 0

while Verdadeiro :


# Atualizar canto

theta + = 0,01

# Esta pequena parte nos permite desenhar coisas

# tudo na tela

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

draw_tree ( 9 , theta, surface_height * 0,9 , (surface_width / / 2 , surface_width - 50 ), - math.pi / 2 )

pygame.display.flip()


# Chamando a função principal
main ()
pygame.quit()

Sair:

% 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


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