You are on page 1of 31

Bresenham

Circle Drawing Algorithm,

SRI LAXMI
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:


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
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: 
 [( xk  1)  1]  yk 1
2
1
2
 r
2
2

pk 1  pk  2( xk  1)  ( yk21  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
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
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

You might also like