Ch4 Grap Lecture
Ch4 Grap Lecture
DEPARTMENT OF COMPUTER
SCIENCE
COMPUTER GRAPHICS
By: Getaneh T.
E-Mail: [email protected]
1
CHAPTER 4:
GEOMETRY AND DRAWING
ALGORITHMS
2
DRAWING DIFFERENT OBJECTS
Geometric Representation of objects: is a
representation or creating of an objects in
two or three dimensional space.
Different techniques used to draw an object
3
…
The graphics.h header file
Will demonstrate in lab session….....
4
SCAN CONVERTING LINES
Line Drawing
First problem statement: Draw a line on a screen
5
WHAT IS SCAN CONVERSION?
Final step of rasterization (the process of taking
geometric shapes and converting them into an
array of pixels stored in the framebuffer to be
displayed) – converting from “random scan”
specification to a raster scan where we specify
which pixels are drawn based on a stored array of
primitives.
Takes triangles (or higher-order primitives) and
6
SCAN-CONVERTING A LINE: FINDING THE
NEXT PIXEL
Special cases:
Horizontal Line:
Draw pixel P and increment x coordinate value by 1 to
get next pixel.
Vertical Line:
Draw pixel P and increment y coordinate value by 1 to
get next pixel.
Diagonal Line:
Draw pixel P and increment both x and y coordinate
by 1 to get next pixel.
7
VERTICAL DISTANCE
8
STRATEGY 1 – INCREMENTAL
ALGORITHM
9
STRATEGY 1 – INCREMENTAL ALGORITHM
10
STRATEGY 2 – MIDPOINT LINE
ALGORITHM
11
STRATEGY 2 – MIDPOINT LINE
ALGORITHM
NE pixel
Previous pixel Q
Midpoint M
E pixel
12
STRATEGY 2- MIDPOINT LINE
ALGORITHM
NE pixel
E pixel
13
GENERAL LINE EQUATION IN IMPLICIT
FORM
14
DECISION VARIABLE
15
INCREMENTING DECISION VARIABLE
IF E WAS CHOSEN:
16
IF NE WAS CHOSEN:
17
SUMMARY
18
EXAMPLE CODE
19
THE BRESENHAM LINE ALGORITHM
The Bresenham algorithm is another
incremental scan conversion algorithm
The big advantage of this algorithm is that
20
THE BIG IDEA
Move across the x axis in unit intervals and at each
step choose between two different y coordinates
2 3 4 5
the original line
DERIVING THE BRESENHAM LINE
ALGORITHM
At sample position xk+1
yk+1
the vertical separations dupper
from the mathematical line y
dlower
are labelled dupper and yk
dlower xk+1
The y coordinate on the mathematical line at
xk+1 is:
y m( xk 1) b 22
DERIVING THE BRESENHAM LINE
ALGORITHM (CONT…)
So, dupper and dlower are given as follows:
d lower y yk
m( xk 1) b yk
and:
d upper ( yk 1) y
yk 1 m( xk 1) b
We can use these to make a simple decision about
which pixel is closer to the mathematical line
23
DERIVING THE BRESENHAM LINE
ALGORITHM (CONT…)
This simple decision is based on the difference
between the two pixel positions:
y
x(d lower d upper ) x(2 ( xk 1) 2 yk 2b 1)
x
2y xk 2x yk 2y x(2b 1)
24
29
BRESENHAM EXAMPLE
Let’s have a go at this
Let’s plot the line from (20, 10) to (30, 18)
First off calculate all of the constants:
Δx: 10
Δy: 8
2Δy: 16
2Δy - 2Δx: -4
Calculate the initial decision parameter p0:
p0 = 2Δy – Δx = 6
30
BRESENHAM EXAMPLE (CONT…)
18 k pk (xk+1,yk+1)
17 0
16 1
15 2
3
14
4
13
5
12
6
11
7
10 31
8
20 21 22 23 24 25 26 27 28 29 30 9
BRESENHAM EXERCISE
Go through the steps of the Bresenham line
drawing algorithm for a line going from (21,12)
to (29,16)
32
BRESENHAM LINE ALGORITHM
SUMMARY
The Bresenham line algorithm has the
following advantages:
An fast incremental algorithm
Uses only integer calculations
33
A SIMPLE CIRCLE DRAWING
ALGORITHM
The equation for a circle is:
2 2 2
x y r
where r is the radius of the circle
So, we can write a simple circle drawing
algorithm by solving the equation for y at unit
x intervals using:
y r 2 x 2
34
A SIMPLE CIRCLE DRAWING
ALGORITHM (CONT…)
y0 20 2 0 2 20
y1 20 2 12 20
y2 20 2 2 2 20
y19 20 2 19 2 6
y20 20 2 20 2 0
35
A SIMPLE CIRCLE DRAWING
ALGORITHM (CONT…)
However, unsurprisingly this is not a brilliant
solution!
Firstly, the resulting circle has large gaps
where the slope approaches the vertical
Secondly, the calculations are not very efficient
The square (multiply) operations
The square root operation – try really hard to
avoid these!
We need a more efficient, more accurate
solution
36
EIGHT-WAY SYMMETRY
The first thing we can notice to make our circle
drawing algorithm more efficient is that circles centred
at (0, 0) have eight-way symmetry
(-x, y) (x, y)
(-y, x) (y, x)
37
(-x, -y) (x, -y)
MID-POINT CIRCLE ALGORITHM
Similarly to the case with lines, there is an
incremental algorithm for drawing circles – the
mid-point circle algorithm
In the mid-point circle algorithm we use eight-
way symmetry so only ever calculate the
points for the top right eighth of a circle, and
then use symmetry to get the rest of the points
38
MID-POINT CIRCLE ALGORITHM
(CONT…)
Assume that we have
just plotted point (xk, yk) (xk, yk) (xk+1, yk)
Ifpk < 0 the midpoint is inside the circle and and the
pixel at yk is closer to the circle
pk 1 pk 2( xk 1) ( yk21 yk2 ) ( yk 1 yk ) 1
where yk+1 is either yk or yk-1 depending on
the sign of pk
42
MID-POINT CIRCLE ALGORITHM
(CONT…)
The first decision variable is given as:
p0 f circ (1, r 1 )
2
1 (r 1 ) 2 r 2
2
5 r
4
Then if pk < 0 then the next decision variable
is given as:
pk 1 pk 2 xk 1 1
If pk > 0 then the decision variable is:
43
pk 1 pk 2 xk 1 1 2 yk 1
THE MID-POINT CIRCLE ALGORITHM
MID-POINT CIRCLE ALGORITHM
Input radius r and circle centre (xc, yc), then set
the coordinates for the first point on the
circumference of a circle centred on the origin
as: ( x , y ) (0, r )
0 0
46
MID-POINT CIRCLE ALGORITHM
EXAMPLE (CONT…)
10 pk
k (xk+1,yk+1) 2xk+1 2yk+1
9
8 0
7 1
6
5 2
4 3
3
2 4
1 5
0
47
6
0 1 2 3 4 5 6 7 8 9 10
MID-POINT CIRCLE ALGORITHM
EXERCISE
Use the mid-point circle algorithm to draw the
circle centred at (0,0) with radius 15
48
MID-POINT CIRCLE ALGORITHM
SUMMARY
The key insights in the mid-point circle
algorithm are:
Eight-way symmetry can hugely reduce the work
in drawing a circle
Moving in unit steps along the x axis at each
point along the circle’s edge we need to choose
between two possible y coordinates
49