1
of
39
KSL
Bresenham
Circle Drawing Algorithm,
2
of
39 Contents
KSL
In today’s lecture we’ll have a look at:
– Bresenham’s Circle drawing algorithm
– Exercise using Bresenham’s algorithm
3
of
39 CIRCLE
KSL
The set of points that are all at a given
distance ‘r’ from a center position (Xc,Yc).
4
of
39 A Simple Circle Drawing Algorithm
KSL
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
5
of A Simple Circle Drawing Algorithm
39
KSL
(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
6
of A Simple Circle Drawing Algorithm
39
KSL
(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
7
of
39 Eight-Way Symmetry
KSL
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)
R
2
(-y, -x) (y, -x)
(-x, -y) (x, -y)
8
of
39 Mid-Point Circle Algorithm
KSL
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
The mid-point circle
only ever calculate the points algorithm was
for the top right eighth of a developed by Jack
Bresenham, who we
circle, and then use symmetry heard about earlier.
to get the rest of the points
9
of
39 Mid-Point Circle Algorithm (cont…)
KSL
Assume that we have
(xk+1, yk)
just plotted point (xk, yk) (xk, yk)
The next point is a
choice between (xk+1, yk) (xk+1, yk-1)
and (xk+1, yk-1)
We would like to choose
the point that is nearest to
the actual circle
So how do we make this choice?
10
of
39 Mid-Point Circle Algorithm (cont…)
KSL
Let’s re-jig the equation of the circle slightly to give
us:
f circ ( x, y ) x 2 y 2 r 2 …(1)
The equation evaluates as follows:
0, if ( x, y ) is inside the circle boundary
f circ ( x, y ) 0, if ( x, y ) is on the circle boundary
0, if ( x, y ) is outside the circle boundary
By evaluating this function at the midpoint between
the candidate pixels we can make our decision
11
of
39 Mid-Point Circle Algorithm (cont…)
KSL
Assuming we have just plotted the pixel at (xk,yk) so
we need to choose between (xk+1,yk) and (xk+1,yk-1)
Our decision variable can be defined as: mid point b/w
2 points (xk+1,Yk) and (Xk+1, Yk-1) is [xk+1, yk-1/2]
pk f circ ( xk 1, yk 1 )
2
( xk 1) 2 ( yk 1 ) 2 r 2 ...2
2
If pk < 0 the midpoint is inside the circle and the
pixel at yk is closer to the circle
Otherwise the midpoint is outside and yk-1 is closer
12
of
39 Mid-Point Circle Algorithm (cont…)
KSL
To ensure things are as efficient as possible
we can do all of our calculations incrementally
First consider: ( since X +1 = X )
k k+1
pk 1 f circ xk 1 1, yk 1 1
2
or: 2
[( xk 1) 1] yk 1 1
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
13
of
39
KSL
the initial value of Pk is given by the circle
function at the position (0,r) as,
pk f circ ( xk 1, yk 1 )
2
( xk 1) 2 ( yk 1 ) 2 r 2
2
Substituting k=0,Xk=0,Yk=r in the above
function results in,
14
of
39 Mid-Point Circle Algorithm (cont…)
KSL
The first decision variable is given as:
p0 f circ (1, r 1 )
2
1 (r 1 ) 2 r 2
2
5 r
4
if r is an integer, then Po can be rounded to P0= 1 – r.
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:
pk 1 pk 2 xk 1 1 2 yk 1
15
of
39 The Mid-Point Circle Algorithm
KSL
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
• Perform the test, Starting with k = 0 at each position xk,
perform the following test.
(i) If pk < 0, the next point along the circle centred on (0, 0)
is (xk+1, yk) and: pk 1 pk 2 xk 1 1
16
of
39 The Mid-Point Circle Algorithm (cont…)
KSL
(ii) If Pk >0 then the next point along the circle is (xk+1,
yk-1) and:
pk 1 pk 2 xk 1 1 2 yk 1
where 2 xk 1 = 2Xk+2 and 2 yk 1 = 2Yk – 2
• Identify the symmetry points in the other seven
octants
• Move (x, y) according to:
x x xc y y yc
• Repeat steps 3 to 5 until x >= y
17
of
39 Mid-Point Circle Algorithm Example
KSL
To see the mid-point circle algorithm in action lets
use it to draw a circle centred at (0,0) with radius
10
Determine the positions along the circle octant in
the first quadrant from x=0 to x=y.
The intial value of the decision parameter is
P0 = 1-r = 1-10 = -9
For circle centred on the coordinate origin, the
initial point is (X0,Y0)=(0,10) and initial increment
terms for calculating the decision parameters are
2X0 =0 and 2Y0 = 20
18
of
39
KSL
K=0 and P0 = -9 (1,10)
pk 1 pk 2 xk 1 1 (pk<0)
K=1, P1=P0+2Xk+1 => -9+2(1)+1 =-9+3=-6 (2,10)
K=2, P2= P1 +2(2)+1 = -6+4+1 = -1 (3,10)
K=3 P3=P2+2(3)+1 = -1+7= 6 (4,9)
K=4 pk 1 pk 2 xk 1 1 2 yk 1 (Pk>0)
P4= P3+2(4)+1-2(9) => 6+8+1-18 = -3 (5,9)
K=5 p5= p4+2(5)+1 => -3+10+1 = 8 (6,8)
K=6 p6=8+2(6)+1-2(8) => 8+12+1-16 = 5 (7,7)
K=7 p7= 6 (8,6)
K=8 p8=11 (9,5)
K=9 p9 =20 (10,4)
19
of Mid-Point Circle Algorithm Example
39
KSL
(cont…)
10 pk
k (xk+1,yk+1) 2xk+1 2yk+1
9
8 0 -9 (1,10) 2 20
7 1 -6 (2,10) 4 20
6
5 2 -1 (3,10) 6 20
4 3 6 (4,9) 8 18
3
2 4 -3 (5,9) 10 18
1
5 8 (6,8) 12 16
0
6 5 (7,7) 14 14
0 1 2 3 4 5 6 7 8 9 10
20
of
39 Mid-Point Circle Algorithm Exercise
KSL
Use the mid-point circle algorithm to draw
the circle centred at (0,0) with radius 15
21
of Mid-Point Circle Algorithm Example
39
KSL
(cont…)
16
k pk (xk+1,yk+1) 2xk+1 2yk+1
15
14
0
13
12 1
11 2
10 3
9
4
8
7 5
6 6
5 7
4
8
3
2 9
1 10
0 11
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12
22
of
39 Mid-Point Circle Algorithm Summary
KSL
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
23
of
39 Mid-Point Circle Algorithm (cont…)
KSL
1 2 3 4
24
of
39 Mid-Point Circle Algorithm (cont…)
KSL
1 2 3 4
25
of
39 Mid-Point Circle Algorithm (cont…)
KSL
M
5
1 2 3 4
26
of
39 Mid-Point Circle Algorithm (cont…)
KSL
6
M
5
1 2 3 4
27
of
39 Mid-Point Circle Algorithm (cont…)
KSL
6
M
5
3
28
of
39 Blank Grid
KSL
29
of
39 Blank Grid
KSL
30
of
39 Blank Grid
KSL
10
9
8
7
6
5
4
3
2
1
0
0 1 2 3 4 5 6 7 8 9 10
31
of
39 Blank Grid
KSL