Programming Training Main Points: - Python Turtle - Fractals.
-
Upload
bryce-nash -
Category
Documents
-
view
244 -
download
2
Transcript of 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)
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
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)