# 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%      `