Professional Documents
Culture Documents
x y r
2 2 2
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…)
(-x, y) (x, y)
(-y, x) (y, x)
R
2
(-y, -x) (y, -x)
• …(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) ( yk21 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
• 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
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