0% found this document useful (0 votes)
450 views

Lecture#4 Midpoint Ellipse Drawing Algorithm

1. The document describes the algorithm for drawing an ellipse by dividing it into 8 octants and determining the next point in each octant. 2. Decision parameters (pk) are derived to select between two possible next points in octants 1 and 2. 3. In octant 1, pk+1 - pk is derived to choose between yk and yk-1 as the next y-value. In octant 2, a similar process chooses between xk and xk+1.

Uploaded by

fuxail
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
450 views

Lecture#4 Midpoint Ellipse Drawing Algorithm

1. The document describes the algorithm for drawing an ellipse by dividing it into 8 octants and determining the next point in each octant. 2. Decision parameters (pk) are derived to select between two possible next points in octants 1 and 2. 3. In octant 1, pk+1 - pk is derived to choose between yk and yk-1 as the next y-value. In octant 2, a similar process chooses between xk and xk+1.

Uploaded by

fuxail
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Computer Graphics 2k17BSCS CE-311

Lecture 4
(0,ry)
 Ellipse =1 O8 O1

• Major Axis (2ry)


• Minor Axis (2rx) O7 O2

(-rx,0) (rx,0)

O6 O3

O5 O4

(0,-ry)
(0,ry)

Ellipse drawing algorithm O8 O1

• 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

to select yk or yk-1 – Octet-1 O8 O1

• If the starting point is (xk,yk)


O7 O2
then next point on ellipse
(moving downward in the first
octet) will be either of the two (-rx,0) (rx,0)
• (xk+1 , yk) OR (xk+1 , yk-1)
O3
• Mid point : (xk+1 , yk – ½) O6

• Decision Parameter (pk) to


select either (xk+1 , yk) OR O5 O4
(xk+1,yk-1) ?
(0,-ry)
(0,ry)
Finding Decision Parameter 2xry2 ≥ 2yrx2

to select yk or yk-1 – Octet-1 O8 O1

• Substituting mid-point in ellipse function to


get the decision parameter O7 O2

p1k= (xk+1)2ry2 + (yk- ½ )2rx2 – rx2ry2


(-rx,0) (rx,0)
p1k+1= (xk+1+1)2ry2 + (yk+1- ½ )2rx2 – rx2ry2
p1k+1= ((xk+1)+1)2ry2 + (yk+1- ½ )2rx2 – rx2ry2 O6 O3

p1k+1= (xk+1)2 ry2 + ry2 + 2(xk+1) ry2


+ yk+12 rx2 + ¼ rx2 - yk+1 rx2 – rx2ry2 O5 O4

(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

to select xk or xk+1 Octet-2 O8 O1

• If the starting point is (xk,yk) then next


point on ellipse (moving downward in O7 O2
the second octet) will be either of the
two (-rx,0) (rx,0)
• (xk+1 , yk-1) OR (xk , yk-1)
• Mid point : (xk+ ½ , yk – 1) O6 O3

• Decision Parameter (p2k) to select either


(xk+1 , yk) OR (xk+1,yk-1) ? O5 O4

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

• p2k= (xk+ ½ )2ry2 + (yk- 1)2rx2 – rx2ry2 O6 O3


• p2k+1= (xk+1+ ½ )2ry2 + (yk+1- 1)2rx2 – rx2ry2
O4
• p2k+1= (xk+1+ ½ ) ry + ((yk-1)- 1) rx – rx ry
2 2 2 2 2 2 O 5

• p2k+1= (xk+12+ ¼ + xk+1)ry2 + ((yk-1)2- 2(yk-1)+1)rx2 – rx2ry2 (0,-ry)

• p2k+1= xk+12ry2+ ¼ry2 + xk+1ry2 + (yk-1)2rx2- 2(yk-1) rx2+rx2 – rx2ry2


Finding Decision Parameter
to select xk or xk+1 Octet-2
• p2k+1 – p2k= xk+12ry2+ ¼ry2 + xk+1ry2 + (yk-1)2rx2- 2(yk-1) rx2+rx2 – rx2ry2
- [(xk+ ½ )2ry2 + (yk- 1)2rx2 – rx2ry2]
• p2k+1 – p2k= xk+12ry2+ ¼ry2 + xk+1ry2 + (yk-1)2rx2- 2(yk-1) rx2+rx2 – rx2ry2
- [xk2ry2+ ¼ry2 + xkry2 + (yk- 1)2rx2 – rx2ry2]
• p2k+1 – p2k= xk+12ry2+ ¼ry2 + xk+1ry2 + (yk-1)2rx2 - 2(yk-1) rx2+rx2 – rx2ry2
- xk2ry2 - ¼ry2 - xkry2 - (yk- 1)2rx2 + rx2ry2
• p2k+1 – p2k= rx2 - 2rx2(yk-1) + xk+12ry2 – xk2ry2 + xk+1ry2 - xkry2
• p2k+1 = p2k+ rx2 - 2rx2(yk-1) + ry2(xk+12 – xk2) + ry2(xk+1 - xk)
(0,ry) 2xry2 ≥ 2yrx2
Finding Decision Parameter O8 O1
to select xk or xk+1 Octet-2
• p2k= (xk+ ½ )2ry2 + (yk- 1)2rx2 – rx2ry2
O7 O2
• p2k+1 = p2k+ rx2 - 2rx2(yk-1) + ry2(xk+12 – xk2) + ry2(xk+1 - xk)

(-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

4 4 5 -108 5 5 360 640 288 so next so next


point will be point will be
5 5 5 288 6 4 432 512 244 (xk+1, yk–1) (xk+1, yk)
6 6 4 244 7 3 504 384
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)
+ 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 )

You might also like