GV : VŨ T T TH NG NHÓM 25
Trêng ®¹i häc ®iÖn lùc hµ néi
B¸o c¸o thuËt ®å häa m¸y nh
Tr×nh bµy thuËt to¸n vÏ Ellipse midpoint,
øng dông x©y dùng vµ cµi ®Æt
ch¬ng tr×nh vÏ ellipse
- 2012-
Gi¸o vn híng dÉn: Vò TÊt Th¾ng
Nhãm thùc hiÖn : Nhãm 25
Líp : D6LT CNTT
GV : VŨ T T TH NG NHÓM 25
A. L I M Đ U
Đ
h a m t trong nhng lĩnh vc phát tri n r t nhanh c a ngành
Công ngh thông tin. được ng d ng r ng rãi trong nhi u lĩnh vc
khoa hc công ngh . Ch ng h n như y h c, ki nế trúc, gi i trí...
Đ
h a máy tính đã giúp chúng ta thay đ i cách cm nh n s d ng máy
tính, đã tr thành nhng công c trc quan quan tr ng không th
thi uế trong đ i s ng hng ngày. vy môn
“K thu t đ
h a” đã tr
thành mt
trong
nhng môn h c chính trong các chuyên ngành Công
ngh thông tin c trưng đ i hc.
Là sinh viên tr ng ĐH Đi n L c, chúng em t hào khi đ c h c t pườ ượ
trong m t môi tr ng h c năng đ ng, sáng t o v i ph ng pháp d y m i ườ ươ
t o đi u ki n cho sinh viên đ c phát huy kh năng c a mình. D i s ượ ướ
h ng d n c a th y ướ T T TH NG, chúng em đã đ c ti p xúc làmượ ế
quen v i m t s k thu t đ h a máy tính thông qua các bài gi ng c a
th y giáo trình cũng nh tham kh o m t s bài t p, h ng gi i quy t ư ướ ế
bài toán th y đã nêu .
Sau khi tìm hi u hoc tâp hêt s c nghiêm túc cùng v i tinh th n O O P
ham h c h i, tìm tòi, nghiên c u c a c nhóm chúng em trong su t th i
gian qua, chúng em đã hoàn thành đ tài “Trình bày thu t toán v ellipse
midpoint, ng d ng xây d ng và cài đ t ch ng trình v ellipse”. M c ươ
đã r t c g ng song do han chê kiên th c va th i gian n thê i O P U P ưP U ơU V
viêt c a chúng em se còn nhiêu thiêu sót nh t đ nh, nên chúng em r tP W U P
mong nh n đ c s góp ý t th y giáo và các b n ượ .
CHÚNG EM XIN CHÂN THÀNH CÁM N!Ơ
GV : VŨ T T TH NG NHÓM 25
B. PH N N I DUNG
1. Gi i thu t Midpoint v elip
Đây là ph ng pháp v elip đ t đ c k t qu t t v s phép tính và đươ ượ ế
ph c t p c a chúng
Do đ c đi m c a elip nên chúng ta ch kh o sát đ ng cong bi u di n ườ
elip trong góc ph n t th nh t. Ta vi t l i ph ng trình c a elip tâm ư ế ươ
g c to đ bán tr c l n là a bán tr c nh là b d i d ng sau: ướ
< 0 n u (x,y) n m bên trong elipế
f(x,y) = b2x2 + a2y2 – a2b2 = 0 n u (x,y) n m trên elipế
> 0 n u (x,y) n m bên ngoài elip.ế
*Ý t ng c a gi i thu t:ưở
Chia elip làm hai ph n t i đi m Q n i đ d c c a ti p tuy n v i elip ơ ế ế
b ng -1 (véc t gradient b ng 1). T i vùng th nh t x bi n thiên nhanh h n ơ ế ơ
y, t i vùng th hai y bi n thiên nhanh h n x. Xin hãy nh l i đ d c c a ế ơ
đ ng cong đ nh nghĩa b i công th c dx/dy = fx/fy ; trong đó fx fy ườ
x
T
S
O
y
xixi+1
yi -1
yi
UV
Q
xjxj+1
yj -1
yj
Part 1
Part 2
b
b
(x/a)2 + (y/b)2 = 1
GV : VŨ T T TH NG NHÓM 25
đ o hàm riêng ph n c a f(x,y) theo x theo y: fx = 2b 2x n fy = 2a2y. T i
m i ph n đ c ch n gi i thu t Midpoint t ng t nh v đ ng tròn đã ượ ươ ư ườ
trình bày:
Trong ph n 1:Gi s đã v đ c đi m (x ượ i,yi) tìm cách c đ nh đi m
ti p theo trên elip. ng c viên cho b c i +1 T ho c S. Bi n c m canhế ướ ế
quy t đ nh ng c viên nào đ c tính theo giá tr c a hàm f(x,y) theo t iế ượ
đi m I là trung đi m c a TS:
di = f(xi + 1, yi – ½) = b2(xi + 1)2 + a2(yi – ½)2 – a2b2 (bi n c m canh).ế
+ N u dếi ≥ 0 trung đi m I n m ngoài đ ng tròn ườ đi m đ c ch n là S ượ
+ N u dếi < 0 trung đi m I n m trong đ ng tròn ườ đi m đ c ch n là T. ượ
Bi n c m canh trong b c ti p theo:ế ướ ế
di+1 = f(xi+1 + 1, yi+1 – ½) = b2(xi+1 +1)2 + a2(yi+1 – ½)2 – a2b2.
Ph n chênh l ch gi a hai bi n c m canh trong hai b c là: ế ướ
di+1 – di = b2[(xi+1 +1)2 – (xi +1)2] +a2[(yi+1 – ½)2 – (yi – ½)2].
Vì xi+1 = xi+1 nên có th rút g n hi u trên nh sau: ư
di+1 – di = 2b2xi+1 + b2 + a2[(yi+1 – ½)2 – (yi½)2]
+ N u đi m đ c ch n là T (dế ượ i < 0) thì yi+1 = yi
di+1 = di + 2b2xi+1 + b2 (= di + fx + b2)
+ N u đi m đ c ch n là S (dế ượ i ≥ 0) thì yi+1 = yi + 1
di+1 = di + 2b2xi+1 + b2 – 2a2yi+1 (= di + fx + b2fy)
Giá tr kh i t o c a bi n c m canh: ế
d1 = f(0,b) = b2 + a2(b – ½)2 – a2b2 = b2 ─ a2b + a2/4
Trong ph n 2: Ta tính toán t ng t nh ph n 1; Gi s ta ph i xácươ ư
đ nh to đ (x j+1,yj+1) trong b c j+1. ng c viên U ho c V. G i K ướ
trung đi m c a UV. Khi đó K n m trong hay n m ngoài elip s quy t đ nh ế
vi c ch n đi m V hay đi m U. Bi n c m canh đ c tính b ng giá tr c a ế ượ
f(x,y) t i đi m K nh sau: ư
ej = f(xj + ½, yj – 1) = b2(xj + ½)2 + a2(yj – 1)2 – a2b2 (Bi n c m canh)ế
+ N u eếj ≥ 0 đi m đ c ch n là U ượ
+ N u eếj < 0 đi m đ c ch n là V ượ
Giá tr c a bi n c m canh trong b c ti p theo: ế ướ ế
ej+1 = f(xj+1 + ½, yj+1 – 1) = b2(xj+1 + ½)2 + a2(yj+1 – 1)2 – a2b2
BEGIN
p=p+8B2x+12B2;
(A2+B2)x2 A4
p = 4B2 – 4A2B + A2
x = 0; y = B;
Put4pixel(x,y,color);
p < 0 p=p+8B2x – 8A2y+8A2+12B2;
y=y – 1;
x = x + 1;
Put4pixel(x,y,color);
p=p+8B2x+8B2 – 8A2y + 12A2;
x = x + 1;
y 0
p < 0 p=p–8A2x + 12A2;
y = y –1;
Put4pixel(x,y,color);
END
N
o
Ye
s
Ye
s
Ye
s
Ye
s
N
o
N
o
N
o
LU Đ ELLIPƯ
GV : VŨ T T TH NG NHÓM 25
Đ l ch gi a hai giá tr bi n c m canh trong hai b c liên ti p là: (chú ý ế ướ ế
yj+1 = yi1)
ej+1 – ej = b2[(xj+1 + ½)2 – (xj + ½)2] + a2[(yj+11)2 – (yj – 1)2]
= b2[(xj+1 + ½)2 – (xj + ½)2] – 2a2yj+1 + a2
+ N u đi m đ c ch n là U t c eế ượ j ≥ 0 thì xj+1 = xj
ej+1 = ej2a2yj+1 + a2 (= ej – fy + a2)
+ N u đi m đ c ch n là V t c eế ượ j < 0 thì xj+1 = xj+1
ej+1 = ej + 2b2xj+1 – 2a2yj+1 + a2 (= ej + fx – fy + a2)
Giá tr kh i t o c a bi n c m canh trong ph n 2 ph thu c vào v t ế
cu i cùng c a ph n 1 (gi s là (x k,yk). Khi đó:
e1 = f(xk + ½, yk – 1) = b2(xk + ½) + a2(yk – 1)2 – a2b2.
Chú ý: Đ bi t khi o k t thúc ph n 1 chuy n qua ph n 2 chúng ta ế ế
theo i đ d c c a ti p tuy n v i elip theo đ o hàm riêng ph n fx, fy nh ế ế ư
đã nói. Nh đã tìm hi u:ư
xi+1 = xi + 1 ho c xi+1 = xi yi+1 = yi ho c yi+1 = yi 1 suy ra đ o hàm
riêng ph n s đ c c p nh t thêm 2b ượ 2 cho fx ho c 2a2 cho fy.
2. L u đư