Main Points: - Python Turtle - Fractals Programming Training Main Points: - Python Turtle - Fractals
Functions Python function = code to solve a problem - problem’s inputs are function’s arguments - problem’s outputs are calculated and returned - function philosophy write one and use multiple times () represents function.
Screen The screen is a rectangle of pixels on which we can draw. The screen origin is usually in the centre. Each pixel will have two coordinates which are float numbers.
Python Turtle turtle – a Python module / library for drawing. What can turtles (as animals) do? Move forward or backward. Turn left or right. Retreat the head into the shell. Turtle-like Graphics Pens have: x, y give the turtle pen coordinates. dir the direction to go in radians. pen the pen’s status (pen=1 draws line)
Python Turtle turtle – a Python module / library for drawing. Function to Move and Draw forward(d) – pen moves forward for distance d on the direction to go backward(d) – pen moves backward for distance on the direction to go right(angle) – pen turns right with angle (degrees) left(angle) – pen turns left with angle (degrees) goto(x, y) – pen moves to the point (x,y) drawing a line dot(size, color) – pen draws a dot of specified size with the given color circle(radius) – pen draws a circle with the specified radius
Python Turtle turtle – a Python module / library for drawing. Function to Control the pen penup() – pen moves up so no drawing pendown() – pen goes down so it can draw width(w) – sets the thickness of the line color(colorname) – pen color is set as colorname color(r, g, b) – the color is set based on the r, g, b values.
Python Turtle turtle – a Python module / library for drawing. Function to Control the Screen bgcolor(color) – the screen background color is set to color. clear() – the screen is cleared. screensize() – it returns the width and the height of the screen
Python Turtle How to work with: Make a pen object pen = Pen() Set the pen features like color, width, etc pen.color(‘red’) pen.width(3) Make you drawing using the move/draw functions pen.forward(100) pen.left(90)
Python Turtle What is the outcome of Can be re written as pen.forward(100) pen.left(90) Can be re written as for i in range(4) : pen.forward(100) pen.left(90)
Python Turtle – Draw a Triangle Make a pen and set some features Draw the triangle A(x1, y1)B(x2, y2)C(x3,y3) - move the pen to A(x1, y1) - Draw AB using goto(x2, y2) - Draw BC using goto(x3, y3) - Draw CA using goto(x1, y1)
Python Turtle – Draw a Random Circle random a new module to generate random numbers random.randint(a,b) generate a random integer between a and b random.random() generate a random float between [0, 1) Drawing a random circle - get a random radius - get a random color - get a random width - draw the circle
Turtle Random Art Develop methods to draw random shapes Drawing few similar random shapes in your screen Draw 30 random circles + 20 random triangles
Python Recursive Functions A Python function can call any known / seen function from the imported modules or from the file. A function is recursive when it calls itself. Important Rule: A recursive method must have - a termination step that solves directly the problem - a recursion step.
Python Recursive Functions Fibonacci sequence: 1, 1, 2, 3, 5, 8, 13, 21, … fib(0) = fib(1) = 1 and fib(n) = fib(n-1)+ fib(n-2) def fib(n): # termination if n== 0 or n==1 : return 1 # endif return fib(n-1) + fib(n-2) # end fib
Recursive / Turtle Graphics 1. Define Recursively the figure Fn. - Termination: give the shape of F0 (point, line, etc) - Recursion: define Fn based on Fn-1. 2. Use a Turtle object to draw the figure. - The direction of the Turtle object must be preserved. Turtle Geometry represents the simplest way to construct geometrical fractals. Important Fractals: Trees, Koch’s curves, Sierpinski’s curves etc.
The Binary Tree The Binary Tree T(n,l) n is the order or age l is the length
The Binary Tree The Binary Tree T(n,l) T(0,l)= nothing n is the order or age l is the length T(0,l)= nothing T(n,l) is defined as follows: - construct the trunk - left 45 (PI/4) - construct T(n-1,l/2) - right 90 (PI/2) - go back at the root
The Binary Tree
The Fern F(n,l) The Fern Tree F(n,l) n - the order or the age l – the length of the curve
The Fern F(n,l) The Fern F(n,l) n - the order or the age l – the length of the curve The Fern F(n,l) is a tree with 3 asymmetric branches. The Fern depends the braches angles and the branches trunks
The Fern F(n,l) The Fern F(n,l) is defined by: F(0,l) is a dot or nothing. F(n,l) is recursively defined by: Forward (0.3*l) Left 55; Construct F(n-1, l/2);Right 55 Forward (0.7*l) Right 40; Construct F(n-1, l/2); Left 40 Forward l Left 5; Construct F(n-1, 0.8*l); Right 5 Backward 2*l
The Fern F(n,l) def fern(n,l): } if n==0 or l<2: return # endif pen.forward (0.3*l); pen.left(55); fern(n-1, l/2);pen.right(55); pen.forward (0.7*l); pen.right(40); fern(n-1, l/2); pen.left(40); pen.forward(l); pen.left(5); fern(n-1, 0.8*l); pen.right(5); pen.backward(2*l); }
The Koch Curve The Koch Curve K(n,l) n - the order or the age l – the length of the curve
The Koch Curve The Koch Curve K(n,l) n - the order or the age l – the length of the curve K(n,l) is defined as follows: The Koch Curve K(n,l) is defined by - construct K(n-1,l/3); - left 60 (PI/3); construct K(n-1,l/3) - right 120 (2PI/3); construct K(n-1,l/3)
The Koch Curve The snow flake F(n,k) - construct K(n,l); left 120 (2PI/3); F(n,k) is an infinite curve bounding a finite area.
The Koch Curve def koch(n, l): if l<2 or n==0: def flake(n, l): t.forward(l) return #endif koch(n-1,l/3) pen.left(60) pen.right(120) koch(n-1,l/3); # end koch def flake(n, l): for in range(3): koch(n,l,g) t.left(120) # endfor # end flake
The Sierpinski Curve S(n,l) n - the order or the age l – the length of the curve S(n,l) is formed with 4 S(n-1,l)
S(n,l) is recursively defined by The Sierpinski Curve S(0,l) is nothing S(n,l) is recursively defined by Construct S(n-1,l) Right 45; Forward d; Right 45; Construct S(n-1,l); Left 90;Forward l; Left 90;
To do List Solve the HW problems. Read more about the turtle module