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%