You are on page 1of 31

Bresenham

Circle Drawing Algorithm


Contents

• In today’s lecture we’ll have a look at:


• Bresenham’s Circle drawing algorithm
• Exercise using Bresenham’s algorithm
CIRCLE
• The set of points that are all at a given distance ‘r’ from a center
position (Xc,Yc).
A Simple Circle Drawing Algorithm
• The equation for a circle is:

x y r
2 2 2

• 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  x2
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
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
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)

R
2
(-y, -x) (y, -x)

(-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

The mid-point circle


algorithm was
developed by Jack
Bresenham, who we
heard about earlier.
Mid-Point Circle Algorithm (cont…)
• Assume that we have
just plotted point (xk, yk) (xk, (x
ykk)+1, yk)
• The next point is a (xk+1, yk-1)
(xk+1, yk)
choice between
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?
Mid-Point Circle Algorithm (cont…)

• Let’s re-jig the equation of the circle slightly to give


us:
f circ ( x, y )  x  y  r
2 2 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
Mid-Point Circle Algorithm (cont…)
• 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
Mid-Point Circle Algorithm (cont…)
• 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

• or:

pk 1  f circ xk 1  1, yk 1  1 2

 [( xk  1)  1]  yk 1  1
2
2 2
 r2
• where yk+1 is either yk or yk-1 depending on the sign of pk
pk 1  pk  2( xk  1)  ( yk21  yk2 )  ( yk 1  yk )  1
• 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,
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
• if r is an integer, then Po can4
be rounded to P0= 1 – r.
• Then if pk < 0 then the next decision variable is given as:
• If pk > 0 then the decision variable is:
pk 1  pk  2 xk 1  1

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
• 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
The Mid-Point Circle Algorithm (cont…)

• (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
• where2 xk 1 = 2Xk+2 and 2 yk=12Yk – 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
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
• 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
• 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)
p  p  2 xk 1  1  2 yk 1
• K=4 k 1 k (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)
Mid-Point Circle Algorithm Example
(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
Mid-Point Circle Algorithm Exercise

• Use the mid-point circle algorithm to draw the circle centred at (0,0)
with radius 15
Mid-Point Circle Algorithm Example
(cont…)
16 pk (xk+1,yk+1)
k 2xk+1 2yk+1
15
14 0
13
1
12
11 2
10 3
9 4
8
5
7
6 6
5 7
4 8
3
9
2
1 10
0 11

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12
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
Mid-Point Circle Algorithm (cont…)

1 2 3 4
Mid-Point Circle Algorithm (cont…)

1 2 3 4
Mid-Point Circle Algorithm (cont…)

M
5

1 2 3 4
Mid-Point Circle Algorithm (cont…)

6
M
5

1 2 3 4
Mid-Point Circle Algorithm (cont…)

6
M
5

3
Blank Grid
Blank Grid
Blank Grid

10
9
8
7
6
5
4
3
2
1
0

0 1 2 3 4 5 6 7 8 9 10
Blank Grid

You might also like