Programming Training Main Points: - Python Turtle - Fractals.

30
Programming Training Main Points: - Python Turtle - Fractals

Transcript of Programming Training Main Points: - Python Turtle - Fractals.

Programming Training

Main Points:

- Python Turtle

- Fractals

Arrays / ListsPython lists represent sequence of [similar] elements

- between [ ]

- separated by ,

- which are indexed.

[ ] represents lists / arrays.

Examples:

x = [1, 2, 3, 1, 0] list of 5 int numbers

name = [‘s’, ’a’, ’b’, ’i’, ’n’] list of 5 string elements

list = [1, 2, ‘sabin’, [0, 1, 3]] list with elements of different nature

Arrays / Lists IndexingPython lists elements can be indexed using indices 0, 1, 2, ….

A list l with n elements has the elements l[0], l[1], l[2],…, l[n-1].

l represents the list while l[i] is an element of the list.

the first element of the list is indexed with 0.

it is possible to have negative indexing.

For a list l, the number of elements is given by the function len

len(l) number of elements in l.

ANY COMPUTATION WITH ARRAYS MUST USE THE LOOP FOR.

ScreenThe 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 Turtleturtle – 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)

dir

(x,y)

Python Turtleturtle – 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

circle(radius)

dir

(x,y)

Python Turtleturtle – 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.

dir

(x,y)

Python Turtleturtle – 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

dir

(x,y)

Python Turtle

How to work with:

1. Make a pen object

pen = Pen()

2. Set the pen features like color, width, etc

pen.color(‘red’)

pen.width(3)

3. Make you drawing using the move/draw functions

pen.forward(100)

pen.left(90)

Python Turtle

1. What is the outcome of

pen.forward(100)

pen.left(90)

pen.forward(100)

pen.left(90)

pen.forward(100)

pen.left(90)

pen.forward(100)

pen.left(90)

1. Can be re written as

for i in range(4) :

pen.forward(100)

pen.left(90)

Python Turtle – Draw a Triangle

1. Make a pen and set some features

2. 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

1. 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)

2. Drawing a random circle

- get a random radius

- get a random color

- get a random width

- draw the circle

Turtle Random Art

1. Develop methods to draw random shapes

2. Drawing few similar random shapes in your

screen

3. 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

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.

Recursive / Turtle Graphics

17

The Binary Tree T(n,l)n is the order or age l is the length

The Binary Tree

T(0,l)= T(1,l)= T(3, l)= T(1,l)=

18

The Binary Tree T(n,l)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)- construct T(n-1,l/2)- left 45 (PI/4)

- go back at the root

The Binary Tree

T(n-1,l/2)

T(n,l) =

T(n-1,l/2)

19

The Binary Tree

20

The Fern Tree F(n,l)- n - the order or the age- l – the length of the curve

The Fern F(n,l)

21

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)

F(n-1,l/2) F(n-1,0.8*l) F(n,l) = F(n-1,l/2)

22

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)

F(n-1,l/2) F(n-1,0.8*l) F(n,l) = F(n-1,l/2)

23

def fern(n,l):if n==0 or l<2:

return# endifpen.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 Fern F(n,l)2

51

24

The Koch Curve K(n,l)- n - the order or the age- l – the length of the curve

The Koch Curve

25

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)- left 60 (PI/3); construct K(n-1,l/3)

The Koch Curve2

51

K(n,l) K(n,l)

K(n,l) K(n,l)

26

The snow flake F(n,k) - construct K(n,l); left 120 (2PI/3); - construct K(n,l); left 120 (2PI/3); - construct K(n,l); left 120 (2PI/3);

F(n,k) is an infinite curve bounding a finite area.

The Koch Curve

K(n,l)

K(n,l) K(n,l)

27

def koch(n, l): if l<2 or n==0:

t.forward(l)return

#endif koch(n-1,l/3) pen.left(60) koch(n-1,l/3) pen.right(120) koch(n-1,l/3) pen.left(60) koch(n-1,l/3);

# end koch

The Koch Curve

def flake(n, l):for in range(3):

koch(n,l,g)t.left(120)

# endfor

# end flake

28

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)

The Sierpinski Curve

S(n,l)= S(n-1,l) S(n-1,l) S(n-1,l) S(n-1,l)

29

S(0,l) is nothingS(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;- Construct S(n-1,l);- Right 45; Forward d; Right 45;- Construct S(n-1,l);

The Sierpinski Curve

S(n,l)= S(n-1,l) S(n-1,l) S(n-1,l) S(n-1,l)

To do List

1. Solve the HW problems.2. Read more about the turtle module