Thông tin tài liệu:
Tham khảo tài liệu 'thảo luận môn đồ họa máy tính', công nghệ thông tin, đồ họa - thiết kế - flash phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Thảo luận Môn Đồ họa máy tính
y
R
2
x
O R
2
Begin
P = 5/4 - R
x = R / 2 & y =R / 2
P8P(x, y, c)
x < round ( R / 2 ) No
Yes
PTương tự thuật toán vẽ đường tròn, sử dụng thuật toán Bresenham để vẽ, ta chỉ cần vẽ
1/4 ellipse, sau đó lấy đối xứng qua các trục tọa độ sẽ vẽ được toàn bộ ellipse.
Xét ellipse có tâm O, các bán kính là a và b, phương trình là :
x2 y2
+ 2 =1
2
a b
Chọn tọa độ pixel đầu tiên cần hiển thị là (Xi ,Yi) = (0,b).
Cần xác định pixel tiếp theo là (Xi+1, Yi+1).
y
b
x
a
O
yi
d1
d2
yi − 1
xi xi + 1
x i +1 = x i + 1
yi − 1
Co :
y=
i +1 yi
d1 = (y i ) 2 - y 2
d 2 = y 2 - (y i - 1) 2
Pi = d1 - d 2 = (yi ) 2 - y 2 - y 2 + (y i - 1) 2
2b 2
⇒ Pi +1 - Pi = 2((yi +1 )2 - (y i )2 ) - 2(y i +1 - y i ) + 2 (2x i + 3)
a
2b 2
⇒ Pi +1 = Pi + 2((yi +1 )2 - (y i )2 ) - 2(yi +1 - y i ) + 2 (2x i + 3)
a
2b 2
- Neu Pi < 0 : Ta chon y i +1 = y i . Khi do Pi +1 = Pi + 2 (2x i + 3)
a
2b 2
- Neu Pi >= 0 : Ta chon y i +1 = y i - 1. Khi do Pi +1 = Pi + 2 (2x i + 3) + 4(1 - y i )
a
2b 2
- Pi ( x 0 , y 0 ) = (0, b) ⇒ P0 = 2 - 2b + 1
a
Begin
P = 2(b*b)/(a*a)-2b+1
C1 = 2[(b*b)/(a*a)](2x+3)
C2 = 2[(b*b)/(a*a)](2x+3) + 4(1-y)
x=0&y=b
P4P(x, y, c)
b2 x
×≤ 1 No
2
a y
Yes
P P = 2(b*b)/(a*a)-2b+1
C1 = 2[(b*b)/(a*a)](2x+3)
C2 = 2[(b*b)/(a*a)](2x+3) + 4(1-y)
C3 = 2[(a*a)/(b*b)](2x+3)
C4 = 2[(a*a)/(b*b)](2x+3) + 4(1-y)
x=a&y=0
x=0&y=b
P4P(x, y, c)
P4P(x, y, c)
b2 x a2 y
×≤ 1 No ×< 1 No
2
a y b2 x
Yes
Yes
P