ppt - Multimedia at UCC
Download
Report
Transcript ppt - Multimedia at UCC
Programming Training
Main Points:
- Python Turtle
- Fractals
Arrays / Lists
Python 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 Indexing
Python 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.
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)
dir
(x,y)
Python Turtle
turtle – a Python module / library for drawing.
dir
(x,y)
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.
dir
(x,y)
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
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)
1. Can be re written as
for i in range(4) :
pen.left(90)
pen.forward(100)
pen.forward(100)
pen.left(90)
pen.left(90)
pen.forward(100)
pen.left(90)
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
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
T(0,l)=
T(1,l)=
T(1,l)=
17
T(3, l)=
The Binary Tree
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)
T(n,l) =
- right 90 (PI/2)
- construct T(n-1,l/2)
- left 45 (PI/4)
- go back at the root
18
T(n-1,l/2)
T(n-1,l/2)
The Binary Tree
19
The Fern F(n,l)
The Fern Tree F(n,l)
- n - the order or the age
- l – the length of the curve
20
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
F(n-1,l/2)
F(n,l) =
21
F(n-1,l/2)
F(n-1,0.8*l)
The Fern F(n,l)
F(n-1,l/2)
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:
22
-
F(n-1,l/2)
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
F(n-1,0.8*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);
23
}
The Koch Curve
The Koch Curve K(n,l)
- n - the order or the age
- l – the length of the curve
24
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)
- left 60 (PI/3); construct K(n-1,l/3)
K(n,l)
K(n,l)
25
K(n,l)
K(n,l)
The Koch Curve
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.
K(n,l)
K(n,l)
26
K(n,l)
The Koch Curve
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
27
def flake(n, l):
for in range(3):
koch(n,l,g)
t.left(120)
# endfor
# end flake
The Sierpinski Curve
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)=
S(n-1,l)
S(n-1,l)
S(n-1,l)
28
S(n-1,l)
S(n,l)=
The Sierpinski Curve
S(n-1,l)
S(n-1,l)
S(n-1,l)
S(0,l) is nothing
S(n,l) is recursively defined by
29
-
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);
S(n-1,l)
To do List
1.
2.
Solve the HW problems.
Read more about the turtle module