Fractal bomen in Python

| | | | | |

Inleiding Een fractale boom staat bekend als een boom die kan worden gecreëerd door recursief symmetrische vertakking.

Een stam met lengte 1 splitst zich in twee takken met lengte r, elk van die een hoek q vormt met de richting van de loop. Deze beide takken zijn verdeeld in twee takken van lengte r * r, die elk een hoek q maken met de richting van zijn moedertak. Op deze manier doorgaand met een oneindig aantal takken, is een boom een verzameling takken samen met hun limieten, vertakkingstips genoemd.

Genoeg theorie, laten we nu de implementatie in Python proberen. Hiervoor hebben we twee Python-bibliotheken Pygame nodig voor de GUI of GUI en math, wat een ingebouwde bibliotheek is in Python en zal worden gebruikt voor wiskundige aanpassingen.

Pygame installeren

pip install pygame 

Dus hoe verder te gaan, het wordt ten zeerste aanbevolen dat je een beetje weet over pygmeeën en fractals.

Maak eerst een stam en begin dan met het maken van takken voor elke stam, ervan uitgaande dat de takgrootte 0,9 * is (steellengte) en behandel de takken dan opnieuw als een stengel, waarbij het proces wordt herhaald.

# Python-bibliotheken importeren

import pygame, wiskunde


# Initialiseer alle geïmporteerde Pygame-modules
pygame. init ()


# Maak een nieuw oppervlak en venster.

surface_height, surface_width = 800 , 600 # Surface Variables

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


# Window title

pygame.display.set_caption ( "Fractal_Tree_pythonengineering" )


def draw_tree (volgorde, theta, sz, pos n, kop, kleur = ( 0 , 0 , 0 ), depth = 0 ):


De relatieve verhouding van de stam tot de hele boom

trunk_ratio = 0.29


# Looplengte

trunk = sz * trunk_rati o

delta_x = trunk * math.cos (kop)

delta_y = trunk * math.sin (kop)

(u, v) = posn

newpos = (u + delta_x, v + delta_y)

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


if bestel > 0 : # Teken nog een laag met subbomen


# Volgende zes regels - eenvoudige hack

# de twee belangrijkste helften van de recursie zijn verschillend

# kleuren. Speel hier om de kleuren naar een andere te veranderen

# depths, of wanneer de diepte even of oneven is, enz.

if depth = = 0 :

kleur1 = ( 255 , 0 , 0 )

color2 = ( 0 , 0 , 255 )

else :

kleur1 = kleur

color2 = kleur


# maak recursieve aanroepen om twee subbomen te tekenen

newsz = sz * ( 1 - trunk_ratio)

draw_tree (bestel - 1 , theta, newsz, newpos, kop - theta, kleur1, diepte + 1 )

draw_tree (bestel - 1 , theta, newsz, newpos, kop + theta, kleur2, diepte + 1 )



def main ():

theta = 0

while True :


# Update hoek

theta + = 0,01

# Dit kleine onderdeel laat ons dingen tekenen

# alles op het scherm

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

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

pygame.display.flip ()


# De hoofdfunctie aanroepen
main ()
pygame.quit ()

Afsluiten:

% 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