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