Lecture#4 Midpoint Ellipse Drawing Algorithm
Lecture#4 Midpoint Ellipse Drawing Algorithm
Lecture 4
(0,ry)
Ellipse =1 O8 O1
(-rx,0) (rx,0)
O6 O3
O5 O4
(0,-ry)
(0,ry)
• Octet 1 O7 O2
• m<1
• x moves in unit intervals (-rx,0) (rx,0)
• yk+1 = yk-1 OR yk
• Next point is (xk+1,yk-1) OR (xk+1,yk) O3
O6
• Octet 2
• m>1
• y moves in unit intervals O5 O4
• xk+1 = xk+1 OR xk
• Next point is (xk+1,yk-1) OR (xk,yk-1) (0,-ry)
(0,ry)
?
Differentiating Octet-1 and Octet 2 O8 O1
• - = f(x,y)
O7 O2
• Differentiation gives slope
f’(x,y) = - 2ry2 x / 2rx2 y
(-rx,0) (rx,0)
-1 = - 2ry2 x / 2rx2 y O3
O6
2rx2 y ≥ 2ry2 x
O5 O4
• is the condition where first octet ends
(0,-ry)
(0,ry)
Finding Decision Parameter 2xry2 ≥ 2yrx2
(0,-ry)
Finding Decision Parameter
to select yk or yk-1 – Octet-1
p1k+1 – p1k = (xk+1)2 ry2 + ry2 + 2(xk+1) ry2 + yk+12 rx2 + ¼ rx2 - yk+1 rx2 – rx2ry2
– ((xk+1)2ry2 + yk2rx2+ ¼rx2 - ykrx2 – rx2ry2)
p1k+1 – p1k = (xk+1)2 ry2 + ry2 + 2(xk+1) ry2 + yk+12 rx2 + ¼ rx2 - yk+1 rx2 – rx2ry2
– (xk+1)2ry2 - yk2rx2- ¼rx2 + ykrx2 + rx2ry2
p1k+1 – p1k = (xk+1)2 ry2 + ry2 + 2(xk+1) ry2 + yk+12 rx2 + ¼ rx2 - yk+1 rx2 – rx2ry2
– (xk+1)2ry2 - yk2rx2 -¼rx2 + ykrx2 + rx2ry2
Finding Decision Parameter
to select yk or yk-1 – Octet-1
p1k+1 – p1k = ry2 + 2(xk+1) ry2 + yk+12 rx2 - yk+1 rx2 - yk2rx2 + ykrx2
p1k+1 – p1k = ry2 + 2(xk+1) ry2 + yk+12 rx2 - yk2rx2 - yk+1 rx2 + ykrx2
p1k+1 – p1k = ry2 + 2(xk+1) ry2 + rx2 (yk+12 – yk2) – rx2(yk+1 – yk)
p1k+1 = p1k + ry2 + 2(xk+1) ry2 + rx2 (yk+12 – yk2) – rx2(yk+1 – yk)
(0,ry) 2xry2 ≥ 2yrx2
Finding Decision Parameter O8 O1
to select yk or yk-1 – Octet-1
• Initial Decision Parameter ? O7 O2
• p1k= (xk+1)2ry2 + (yk- ½ )2rx2 – rx2ry2
• p1k= (0+1)2ry2 + (ry- ½ )2rx2 – rx2ry2 (-rx,0) (rx,0)
• p1k= ry2 + (ry- ½ )2rx2 – rx2ry2
O6 O3
• p1k= ry2 + (ry2 + ¼ - ry )rx2 – rx2ry2
• p1k= ry2 + rx2ry2 + ¼rx2 - ryrx2 – rx2ry2
O5 O4
• p1k= ry2 + ¼rx2 - ryrx2
(0,-ry)
(0,ry) 2xry2 ≥ 2yrx2
Finding Decision Parameter O8 O1
to select yk or yk-1 – Octet-1
• p1k+1 = p1k + ry2 + 2(xk+1) ry2 + rx2 (yk+12 – yk2) – rx2(yk+1 – yk)
• p1k= ry2 + ¼rx2 - ryrx2 O7 O2
• First octet points must be within the limit
• before the condition 2xry2 ≥ 2yrx2 occures, starting from (0,r) (-rx,0) (rx,0)
if p1k≥0 then if p1k<0 then
O6 O3
yk+1 = yk–1 yk+1 = yk
so next point so next point
will be will be O4
O5
(xk+1, yk–1) (xk+1, yk)
(0,-ry)
Finding Decision Parameter (0,ry) 2xry2 ≥ 2yrx2
(0,-ry)
2xry2 ≥ 2yrx2
Finding Decision Parameter (0,ry)
O8 O1
to select xk or xk+1 Octet-2
O7 O2
• Mid point : (xk+ ½ , yk – 1)
• Decision Parameter (p2k) to select either (xk+1 , yk -1) OR (xk,yk-1) ? (-rx,0) (rx,0)
(-rx,0) (rx,0)
if p2k≥0 then if p2k<0 then
O6 O3
xk+1 = xk xk+1 = xk+1
so next point so next point
will be will be O4
O5
(xk, yk–1) (xk+1, yk – 1 )
(0,-ry)
(0,6) 2xry2 ≥ 2yrx2
O8 O1
O7 O2
(-8,0) (8,0)
O6 O3
O5 O4
(0,-6)
Drawing Ellipse (rx = 8 , ry=6 ) – Octet-1
p1k= ry2 + ¼rx2 - ryrx2
k xk yk p1k xk+1 yk+1 2xk+1ry2 2yk+1rx2 p1k+1
p1k+1 = p1k + ry2
0 0 6 -332 1 6 72 768 -224 + 2(xk+1) ry2
+ rx2 (yk+12 – yk2)
– rx2(yk+1 – yk)
if p1k≥0 then if p1k<0 then
yk+1 = yk–1 yk+1 = yk
so next so next
point will be point will be
(xk+1, yk–1) (xk+1, yk)
Drawing Ellipse (rx = 8 , ry=6 ) – Octet-1
p1k= ry2 + ¼rx2 - ryrx2
k xk yk p1k xk+1 yk+1 2xk+1ry2 2yk+1rx2 p1k+1
p1k+1 = p1k + ry2
0 0 6 -332 1 6 72 768 -224 + 2(xk+1) ry2
1 1 6 -224 2 6 144 768 -44 + rx2 (yk+12 – yk2)
2 2 6 -44 3 6 216 768 208
– rx2(yk+1 – yk)
if p1k≥0 then if p1k<0 then
3 3 6 208 4 5 288 640 -108 yk+1 = yk–1 yk+1 = yk
7 7 3 -23 8 2 361
p2k+1 = p2k+ rx2 - 2rx2(yk-1)
+ ry2(xk+12 – xk2)
+ ry2(xk+1 - xk)
if p2k≥0 then if p2k<0 then
xk+1 = xk xk+1 = xk+1
so next point so next point
will be will be
(xk, yk–1) (xk+1, yk – 1 )
Drawing Ellipse (rx = 8 , ry=6 ) – Octet-2
k xk yk p2k xk+1 yk+1 p2k+1 p2k= (xk+ ½ )2ry2 + (yk- 1)2rx2 – rx2ry2
7 7 3 -23 8 2 361
p2k+1 = p2k+ rx2 - 2rx2(yk-1)
8 8 2 361 8 1 297 + ry2(xk+12 – xk2)
9 8 1 297 8 0 + ry2(xk+1 - xk)
if p2k≥0 then if p2k<0 then
xk+1 = xk xk+1 = xk+1
so next point so next point
will be will be
(xk, yk–1) (xk+1, yk – 1 )