Tải bản đầy đủ (.ppt) (8 trang)

Thảo luận Môn Đồ họa máy tính pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (88.36 KB, 8 trang )

2
R
2
R
O
y
x
Begin
P = 5/4 - R
x = & y =
P8P(x, y, c)
Yes
P < 0
Yes
P = P + 2x + 3
No
P = P + 2(x - y) + 5
y = y - 1
x = x + 1
P8P(x, y, c)
End
No
)2/(Rroundx <
2/R 2/R
Tươ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à :
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).
1


2
2
2
2
=+
b
y
a
x
a
b
y
O
x
1

i
y
i
x
1+
i
x
i
y
1
d
2
d
1 2b -

a
2b
P b)(0, )y , x(P -
)y -4(1 3)(2x
a
2b
P P do Khi 1. -y ychon Ta : 0 PNeu -
3) + (2x
a
2b
P P do Khi .y ychon Ta : 0 PNeu -
3) + (2x
a
2b
+ )y - 2(y - ) )2(y - )22((y +P P
3) + (2x
a
2b
+ )y - 2(y - ) )2(y - )22((y P -P
1) -(y y-y -)(yd - d P
1) -(y -y d
y -)(y d
1y
y
1 xx
:
2
2
0 0 0 i
i i

2
2
i 1i i 1i i
i
2
2
i 1ii 1i i
i
2
2
i1+ii1+i i1i
i
2
2
i1+ii1+ii 1i
2
i
22 2
i21 i
2
i
2
2
2 2
i1
i
1i
i1i
+=⇒=
+++==>=

+==<
=⇒
=⇒
+==
=
=









=
+=
++
++
+
+
+
+
i
y
Co
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)
1
2
2
≤×
y
x
a
b
Yes
P < 0
Yes
P = P + C1
No
P = P + C2
y = y - 1
x = x + 1
P4P(x, y, c)
End
No
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)
1
2
2
≤×

y
x
a
b
1
2
2

x
y
b
a
Yes
P < 0
Yes
P = P + C1
No
P = P + C2
y = y - 1
x = x + 1
P4P(x, y, c)
x = 0 & y = b
P4P(x, y, c)
Yes
P < 0
Yes
P = P + C3
No
P = P + C4
y = y - 1

x = x + 1
P4P(x, y, c)
End
No
No
x = a & y = 0
P4P(x, y, c)

×