Unit 1 Algorithms Circle, Ellipse
Unit 1 Algorithms Circle, Ellipse
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…)
(-y, x) (y, x)
R
2
(-y, -x) (y, -x)
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) ( yk21 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.
( 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 thecircle
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