0% found this document useful (0 votes)
18 views31 pages

Unit 1 Algorithms Circle, Ellipse

Algorithm for circle and ellipse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views31 pages

Unit 1 Algorithms Circle, Ellipse

Algorithm for circle and ellipse
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 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
2 2 2
x  y r
• The equation for a circle is:

• where r is the radius of the circle


• So, we can write a simple circle drawing
algorithm by solving the
2 equation
2 for y at
y  r  x
unit x intervals using:
A Simple Circle Drawing
Algorithm (cont…)2 2
y0  20  0 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
(-x, y) eight-way
(x, y) symmetry

(-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 mid-point
the top right eighth of a circle, and circle algorithm
was developed by
then use symmetry to get the rest
Jack Bresenham,
of the points who we heard
about earlier.
Mid-Point Circle Algorithm
(cont…)
• Assume that we have
just plotted point (xk, yk)
• The next point is a
choice between (xk+1, yk)
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:
2 2 2
• f circ ( x, y )  x  y  r …(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
• Assuming we have just plotted the pixel at (x ,y ) so
we need to choose(cont…)
k k
between (x +1,y ) and (x +1,y -1)
k k k k

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


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)  ( yk21  yk2 )  ( yk 1  yk )  1
• where yk+1 is either yk or yk-1 depending on the
sign of pk
• 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
The first decision variable is given as:
(cont…) 1
p0  f circ (1, r  )
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
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 nextpk point
 p along
 2 x thecircle
1 centred
1 k k 1
on (0, 0) is (xk+1, yk) and:
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
2 xk 1 2 yk 1
• where = 2Xk+2 and = 2Yk – 2
• Identify the symmetry points in the other
seven octants
• Move (x, y)x 
according
x  xc y to:
 y  yc
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)
• K=4pk 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)
Mid-Point Circle Algorithm
10 Example (cont…)
k p (x ,y ) 2x k+1 k+1 k+1 2yk+1
k
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
16
Example (cont…)
k p (x ,y ) 2xk+1 2yk+1
k k+1 k+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 111213141516 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…) 6

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

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

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
10
Blank Grid
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