Professional Documents
Culture Documents
CH3 GRAP Lecture
CH3 GRAP Lecture
DEPARTMENT OF COMPUTER
SCIENCE
COMPUTER GRAPHICS
By: Getaneh T.
E-Mail: fitse31@gmail.com
1
CHAPTER 3:
GEOMETRY AND DRAWING ALGORITHMS
2
DRAWING DIFFERENT OBJECTS
Geometric Representation of objects: is a representation
or creating of an objects in two 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 between two
points
Problem Statement
Given two points P and Q in the XY plane, both with integer
coordinates, determine which pixels on a screen should be
drawn in order to best approximate a unit-width line segment
starting at P and ending at Q
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 maps them to
pixels on screen
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 it uses only
integer calculations
Created by Jack Bresenham worked for 27 years at
IBM before entering academia.
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 the
yk+1
vertical separations from the dupper
mathematical line are labelled y
dlower
dupper and dlower yk
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
2y xk 2x yk c
DERIVING THE BRESENHAM LINE
ALGORITHM (CONT…)
of dlower – dupper
p 2y x
Subtracting pkkfrom
1 k 1
this we get:
2x yk 1 c
pk 1 pk 2y ( xk 1 xk ) 2x( yk 1 yk )
26
DERIVING THE BRESENHAM LINE
ALGORITHM (CONT…)
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:
x y r
2 2 2
y r 2 x2
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!
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)
f circ ( x, y ) x 2 y 2 r 2
The equation evaluates as follows:
First consider:
pk 1 f circ xk 1 1, yk 1 1
2
or:
[( xk 1) 1] yk 1 1
2
2 r
2
2
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:
( x0 , y0 ) (0, r )
Calculate the initial value of the decision parameter as:
p0 5 r
4
Starting with k = 0 at each position xk, perform the
following test. If pk < 0, the next point along the circle
centred on (0, 0) is (xk+1, yk) and:
44
pk 1 pk 2 xk 1 1
THE MID-POINT CIRCLE ALGORITHM
(CONT…)
Otherwise the next point along the circle is (xk+1, yk-1) and:
pk 1 pk 2 xk 1 1 2 yk 1
4. Determine symmetry points in the other seven octants
5. Move each calculated pixel position (x, y) onto the circular
path centred at (xc, yc) to plot the coordinate values:
45
MID-POINT CIRCLE ALGORITHM
EXAMPLE
To see the mid-point circle algorithm in action lets use it to
draw a circle centred at (0,0) with radius 10
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