Fractal trees in Python

Python Methods and Functions

Introduction A fractal tree is known as a tree that can be created by recursively symmetric branching.

A trunk of length 1 splits into two branches of length r, each of which forms an angle q with the direction of the barrel. Both of these branches are divided into two branches of length r * r, each of which makes an angle q with the direction of its parent branch. Continuing in this way an infinite number of branches, a tree is a collection of branches together with their limiting points, called branch tips.

Enough theory, now let's try the implementation in Python. For this we need two Python libraries Pygame for the GUI or GUI and math, which is a built-in library in Python and will be used for math tweaks.

To install Pygame

 pip install pygame 

So how to proceed, it is highly recommended that you know a little about pygmies and fractals.

First create trunk, and then start creating branches for each trunk, assuming the branch size to be 0.9 * (stem length) and then treating the branches as a stem again, repeating the process.

# Importing python libraries

import pygame, math

 
# Initialize cue all imported Pygame modules
pygame.init ()

 
# Create a new surface and window.

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 (order, theta, sz, pos n, heading, color = ( 0 , 0 , 0 ), depth = 0 ) :

 

The relative ratio of the trunk to the entire tree

  trunk_ratio = 0.29  

 

# Barrel length

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 order & gt;  0 # Draw another layer of subtrees

 

# Next six lines - simple hack

# the two main halves of the recursion are different

# colors. Fiddle here to change colors to another

# depths, or when the depth is even or odd , etc.

if depth = = 0 :

  color1 = ( 255 , 0 , 0 )

color2 = ( 0 , 0 ,  255 )

else :

color1 = color

color2 = color

 

# make recursive calls to draw two subtrees

newsz = sz * ( 1 - trunk_ratio)

draw_tree (order - 1 , theta, newsz, newpos, heading - theta, color1, depth + 1 )

draw_tree (order - 1 , theta, newsz, newpos, heading + theta, color2, depth + 1 )

 

 

def main ():

theta = 0

  

while True :

 

  # Update corner

theta + = 0.01

  

  # This little part lets us draw things

# everything on screen

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 ()

 
# Calling the main function
main ()
pygame.quit ()

Exit:

 % MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%      




Tutorials