logo

Đồ họa máy tính


Đồ họa máy tính D` HOA MAY T´ ˆ -O . ´ INH I Pham Tiˆn So.n . ´ e -a . D` Lat, 2005 2 Muc luc . . L`.i n´i d` u o o ¯ˆ a 7 1 C´c thuˆt to´n v˜ d .`.ng cong trˆn thiˆt bi raster a a . a e ¯u o e ´ e . 9 1.1 - . ˙ ’ Doan thˇng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 9 1.1.1 a . a o ´ Thuˆt to´n sˆ gia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1.2 Thuˆt to´n d iˆ’m gi˜.a . . . . . . . . . . . . . . . . . . . . . . . . . . a . a ¯e ˙ u 13 1.1.3 . ´ ´ e o o a ¯ˆ e ´ ¯e a . a e ¯ . ˙ ’ Mˆt sˆ vˆ n d` liˆn quan dˆn thuˆt to´n v˜ d oan thˇng . . . . . . . . a 18 1.1.4 o ınh ˙ ¯ . ’ ˙ ’ C´c thuˆc t´ cua d oan thˇng . . . . . . . . . . . . . . . . . . . . . a . a 21 1.2 Du.`.ng tr`n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - o o 22 1.2.1 Dˆi x´.ng t´m d iˆ’m . . . . . . . . . . . . . . . . . . . . . . . . . . . . -o u ´ a ¯e ˙ 22 1.2.2 Thuˆt to´n d iˆ’m gi˜.a v˜ d u.`.ng tr`n . . . . . . . . . . . . . . . . . . a . a ¯e ˙ u e ¯ o o 23 1.3 Du.`.ng cong ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - o 28 1.3.1 o . ´ Ellipse c´ dang ch´ tˇc . . . . . . . . . . . . . . . . . . . . . . . . . ınh a 29 1.3.2 Ellipse trong tru.`.ng ho.p tˆ’ng qu´t . . . . . . . . . . . . . . . . . . . o . o ˙ a 34 2 H` hoc cu a c´c d .`.ng cong v` mˇt cong ınh . ˙ ’ a ¯u o a a. 47 2.1 Mo. d` u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˙ ¯a ’ ˆ 47 3 2.2 Du.`.ng cong Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - o 48 2.2.1 Thuˆt to´n de Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . a . a 48 2.2.2 Da th´.c Bernstein v` d u.`.ng cong Bezier . . . . . . . . . . . . . . . . - u a ¯ o 52 2.3 C´c t´ chˆ t cua d u.`.ng cong Bezier . . . . . . . . . . . . . . . . . . . . . . ´ ’ a ınh a ˙ ¯ o 55 2.3.1 Diˆu khiˆ’n d .a phu.o.ng . . . . . . . . . . . . . . . . . . . . . . . . . . - ` e ˙ e ¯i 59 2.4 Da th´.c t`.ng kh´c v` c´c h`m spline . . . . . . . . . . . . . . . . . . . . . . - u u u a a a 60 2.4.1 Su. dung c´c h`m spline nhu. c´c h`m trˆn . . . . . . . . . . . . . . . ˙ . ’ a a a a o . 63 2.4.2 Xˆy du.ng c´c h`m trˆn . . . . . . . . . . . . . . . . . . . . . . . . . a . a a o . 65 2.4.3 Du.`.ng cong spline v` c´c h`m co. so. . . . . . . . . . . . . . . . . . . - o a a a ˙ ’ 66 2.4.4 C´c h`m B-spline co. so. . . . . . . . . . . . . . . . . . . . . . . . . . a a ˙ ’ 66 2.4.5 Su. dung c´c knot bˆi . . . . . . . . . . . . . . . . . . . . . . . . . . . ˙ . ’ a o . 71 2.4.6 Vector knot chuˆ’n . . . . . . . . . . . . . . . . . . . . . . . . . . . . a˙ 73 2.5 C´c t´ chˆ t cua d u.`.ng cong B-spline . . . . . . . . . . . . . . . . . . . . . ´ ’ a ınh a ˙ ¯ o 75 2.6 Nˆi suy c´c d iˆ’m d iˆu khiˆ’n bˇ ng d u.`.ng cong B-spline . . . . . . . . . . . . o . ˙ a ¯ e ¯` e ˙ a e ` ¯ o 77 2.7 ´ ´ Thiˆt kˆ c´c mˇt Bezier v` B-spline . . . . . . . . . . . . . . . . . . . . . . . e e a a . a 80 2.7.1 Patch Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 2.7.2 D´n c´c patch Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . a a 81 2.7.3 Patch spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3 Giao cu a c´c d oi tu.o.ng ˙ ’ a ¯ˆ ´ . 83 3.1 Mo. d` u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˙ ¯a ’ ˆ 83 3.2 ˙ ’ ˙ ’ Giao cua hai d oan thˇng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¯ . a 83 3.2.1 Phˆn t´ a ıch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4 3.2.2 . a a ¯. ¯ . ˙ ’ Thuˆt to´n x´c d inh giao hai d oan thˇng . . . . . . . . . . . . . . . . a a 86 3.3 Doan thˇng v` h` ch˜. nhˆt . . . . . . . . . . . . . . . . . . . . . . . . . . - . ˙ ’ a a ınh u a . 87 3.3.1 T` giao bˇ ng c´ch giai hˆ c´c phu.o.ng tr` . . . . . . . . . . . . . . ım ` a a ˙ e a ’ . ınh 89 3.3.2 Thuˆt to´n chia nhi phˆn . . . . . . . . . . . . . . . . . . . . . . . . a . a . a 89 3.3.3 Thuˆt to´n Cohen-Sutherland . . . . . . . . . . . . . . . . . . . . . . a . a 93 3.3.4 Thuˆt to´n Liang-Barsky a . a . . . . . . . . . . . . . . . . . . . . . . . . 97 3.4 ˙ ¯ . ’ ˙ ’ a ` Giao cua d oan thˇng v` d a gi´c lˆi . . . . . . . . . . . . . . . . . . . . . . . 100 a a ¯ o 3.4.1 Vi tr´ tu.o.ng d ˆi cua mˆt d iˆ’m v´.i d u.`.ng thˇng . . . . . . . . . . . . 100 . ı ´ ’ ¯o ˙ o ¯e . ˙ o ¯ o ˙ ’ a 3.4.2 ˙ ¯ . ’ ˙ ’ a ` Thuˆt to´n t` giao cua d oan thˇng v` d a gi´c lˆi . . . . . . . . . . 102 a . a ım a a ¯ o 3.5 Giao hai d a gi´c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 ¯ a 3.5.1 Thuˆt to´n Sutherland-Hodgman . . . . . . . . . . . . . . . . . . . . 108 a . a 3.5.2 Thuˆt to´n Weiler-Atherton . . . . . . . . . . . . . . . . . . . . . . . 111 a . a 3.5.3 C´c ph´p to´n tˆp ho.p trˆn c´c d a gi´c . . . . . . . . . . . . . . . . 113 a e a a . . e a ¯ a 3.6 ` ˙ ’ ` Ray tracing hai chiˆu: phan xa trong buˆng k´ . . . . . . . . . . . . . . . . 114 e . o ın 3.6.1 ˙ ’ Vector phan xa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 . 3.6.2 Giao cua tia s´ng v` d u.`.ng thˇng ˙ ’ a a ¯ o ˙ ’ a . . . . . . . . . . . . . . . . . . . 117 3.6.3 Giao cua tia s´ng v´.i d u.`.ng tr`n . . . . . . . . . . . . . . . . . . . . 121 ˙ ’ a o ¯ o o 3.6.4 Xˆy du.ng v´ du ray tracing . . . . . . . . . . . . . . . . . . . . . . . 124 a . ı . 3.6.5 ` Buˆng k´ l` ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 o ın a 4 Tˆ m`u v` ng o a u 127 4.1 C´c d inh ngh˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 a ¯. ıa 4.1.1 V`ng d inh ngh˜ bo.i pixel . . . . . . . . . . . . . . . . . . . . . . . . 127 u ¯. ıa ˙ ’ 5 4.1.2 V`ng d inh ngh˜ bo.i d a gi´c . . . . . . . . . . . . . . . . . . . . . . . 129 u ¯. ıa ˙ ¯ ’ a 4.2 e ` ´ a Thuˆt to´n tˆ m`u theo vˆt dˆu loang . . . . . . . . . . . . . . . . . . . . . 129 a . a o a 4.3 Thuˆt to´n tˆ m`u theo con chay . . . . . . . . . . . . . . . . . . . . . . . . 131 a . a o a . 4.4 Thuˆt to´n tˆ m`u theo biˆn . . . . . . . . . . . . . . . . . . . . . . . . . . 134 a . a o a e 4.5 So s´nh c´c thuˆt to´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 a a a . a 4.6 Tˆ m`u c´c h` ch˜. nhˆt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 o a a ınh u a . 4.7 Thuˆt to´n tˆ m`u d a gi´c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 a . a o a ¯ a 4.7.1 C´c d`ng qu´t ngang . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 a o e 4.7.2 ˙ ’ C´c manh vun a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.7.3 ´ Liˆn kˆt canh v` thuˆt to´n tr`n . . . . . . . . . . . . . . . . . . . . 151 e e . a a . a a 4.7.4 o a a ¯ a ` Tˆ m`u c´c d a gi´c chˆng nhau . . . . . . . . . . . . . . . . . . . . . 158 o 4.8 ˜ Tˆ m`u theo mˆ u tˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 o a a o Phˆn phu luc: Thu. viˆn graph2D.h ` a . . e . 163 a e . ˙ ’ T`i liˆu tham kha o 171 6 L`.i n´i d` u o o ¯ˆ a D` hoa m´y t´ l` mˆt l˜ vu.c hˆ p dˆ n cua khoa hoc m´y t´ -ˆ . o a ınh a o ınh . a a ˙ . ´ ˜ ’ . a ınh. Ch´ng ta su. dung d` hoa u ˙ . ’ ¯ˆ . o m´y t´ nhu. mˆt cˆng cu dˆ’ quan s´t thˆng tin trong nhiˆu l˜ vu.c kh´c nhau, bao gˆm a ınh o o . . ¯e˙ a o ` ınh . e a `o ´ u a ˙ ı. a ’ khoa hoc v` cˆng nghˆ, ho´ hoc, kiˆn tr´c v` giai tr´ C´c chu .o.ng tr` d` hoa tu.o.ng t´c . a o e. a . e ınh ¯o . ˆ a cho ph´p ngu.`.i su. dung l`m viˆc theo c´ch tu. nhiˆn nhˆ t: ngu.`.i su. dung cung cˆ p thˆng e o ˙ .’ a e . a . e ´ a o ˙ .’ ´ a o tin cho tr` u ınh ´ .ng dung thˆng qua c´c hoat d ong bˆn ngo`i cua ho v` s˜ nhˆn d u.o.c thˆng o a a ˙’ . . ¯ˆ. e . a e a ¯ . . o tin tro. lai bˇ ng h` anh. D` hoa m´y t´ d ang gi´p con ngu.`.i thay d ˆ’i vˆ quan niˆm v` ˙ . ` ’ a ınh ˙’ -ˆ . o a ınh ¯ u o ˙ e ¯o ` e. a a .c su. dung m´y t´ c´ch th´ ˙ . u ’ a ınh. Gi´o tr` D` hoa m´y t´ I cung cˆ p mˆt sˆ k˜ thuˆt co. ban cua d` hoa m´y t´ a ınh - ˆ . o a ınh ´ a . ´ o o y a . ˙ ’ ˙ ¯ˆ . ’ o a ınh `e -ˆ . hai chiˆu. (D` hoa m´y t´ ba chiˆu, mˆt phˆn quan trong khˆng thˆ’ thiˆu d u . e ¯ . o a ınh `e o `a o e˙ e ¯ ´ .o.c s˜ d u.o.c . . d` cˆp trong mˆt gi´o tr` kh´c). Dˆ’ c´ mˆt khung canh to`n diˆn v` sˆu sˇc vˆ nh˜.ng ¯ˆ a e . o a . ınh a -e o o ˙ . ˙ ’ a e a a a ` . ´ e u nguyˆn l´ v` thu a e y a . .c h`nh cua d` hoa m´y t´ ˙ ¯ˆ . ’ o a ınh, xem c´c t`i liˆu dˆn [9] v` [11]. C´c phu.o.ng a a e a ˜ a a . ph´p phˆn t´ v` thiˆt kˆ c´c thuˆt to´n trong gi´o tr` cho ph´p sinh viˆn c´ thˆ’ viˆt a a ıch a ´ ´ e e a a. a a ınh e e o e e ˙ ´ dˆ d`ng c´c chu.o.ng tr` minh hoa. Gi´o tr` d u.o.c biˆn soan cho c´c d ˆi tu.o.ng l` sinh ˜ a e a ınh . a ınh ¯ . e . a ¯o´ . a viˆn To´n-Tin v` Tin hoc. e a a . Gi´o tr` su. dung ngˆn ng˜. C dˆ’ minh hoa, tuy nhiˆn c´ thˆ’ dˆ d`ng chuyˆ’n d o’i a ınh ˙ . ’ o u ¯e˙ . e o e ˜ a˙ e ˙ e ¯ˆ ˙ sang c´c ngˆn ng˜. kh´c; v` do d o, sinh viˆn cˆn c´ mˆt sˆ kiˆn th´.c vˆ ngˆn ng˜. C. Ngo`i a o u a a ¯´ e ` o o o e a . ´ ´ u ` o e u a ` a e a ´ ra, hˆu hˆt c´c chu .o.ng tr` thao t´c trˆn cˆ u tr´c d˜. liˆu nhu. danh s´ch liˆn kˆt, nˆn d oi ınh a e a ´ u u e a e e ´ e ¯` . hoi sinh viˆn phai c´ nh˜.ng k˜ nˇng lˆp tr` tˆt. ˙ ’ e ˙ o u ’ y a a . ınh o ´ Sinh viˆn c˜ng cˆn c´ co. so. to´n hoc cua nh˜.ng nˇm d` u d ai hoc: hiˆ’u biˆt vˆ d ai sˆ e u ` o a ˙ a . ˙ ’ ’ u a ¯ˆ ¯ . . a e˙ e ` ¯. o ´ e ´ ´ ˙ ıch, e ınh ’ tuyˆn t´ v` h` hoc giai t´ ph´p t´ vi t´ phˆn. e ınh a ınh . ıch a Muc d´ cua gi´o tr` l`, o. m´.c d o n`o d ´, cho thˆ y c´c tr` u.ng dung d` hoa . ¯ıch ˙ ’ a ınh a ˙ u ¯ˆ a ¯o ’ . ´ a a ınh ´ . ¯ˆ . o ¯ .o.c tao ra nhu. thˆ n`o: Ch´ng ta cˆn viˆt v` chay thu. c´c chu.o.ng tr` du . . ´ e a u `a ´ e a . ˙ a ’ ınh. Mˆt trong o. nh˜ u.ng muc d´ ch´ cua gi´o tr` l` gi´p sinh viˆn nˇm v˜.ng c´c phu.o.ng ph´p, tru.´.c ˙ ’ ´ . ¯ıch ınh a ınh a u e a u a a o hˆt to´n hoc ho´ c´c kh´c niˆm h` hoc v` sau d ´ chuyˆ’n tai th`nh c´c d oan m˜ chu e´ a a a a e ınh . a ¯o ˙ ’ e ˙ a a ¯ . a .o.ng . . tr` ınh. 7 Gi´o tr` bao gˆm bˆn chu.o.ng v` mˆt phˆn phu luc v´.i nh˜.ng nˆi dung ch´ nhu. a ınh ` o ´ o a o. ` a . . o u o . ınh sau: • Chu.o.ng th´. nhˆ t d` cˆp dˆn c´c phu.o.ng ph´p v˜ c´c “nguyˆn so.” cua d` hoa m´y u ´ e . a ¯ˆ a ¯e a ´ a e a e ˙ ¯o . ’ ˆ a ınh: d oan thˇng, d u.`.ng tr`n v` ellipse. t´ ¯ . ˙ ’ a ¯ o o a • Phˆn t´ v` thiˆt kˆ bˇ ng h` hoc l` nˆi dung ch´ cua Chu.o.ng 2. Hˆu hˆt c´c a ıch a e e ` ´ ´ a ınh . a o . ınh ˙ ’ ` a e a´ phˆn mˆm d` hoa d` u c´ nh˜ `a ` ¯ˆ . ¯ˆ o u e o e .ng ch´.c nˇng tao ra c´c d u.`.ng cong du.a trˆn c´c d iˆ’m u a a ¯ o e a ¯e ˙ . . m` ngu.`.i su. dung lu.a chon. Chu.o.ng n`y cung cˆ p nh˜.ng nguyˆn l´ v` c´ch tiˆp cˆn a o ˙ . ’ . . a ´ a u e y a a ´ . e a .c h`nh m` c´c tr` u.ng dung d` hoa ´p dung. thu a a a ınh ´ ¯o . a ˆ . . . • Chu.o.ng 3 giai quyˆt b`i to´n x´c d inh giao cua nh˜.ng nguyˆn so. d` hoa: Giao hai ˙ ’ ´ e a a a ¯. ˙ ’ u e ¯ˆ . o d oan thˇng, giao cua d oan thˇng v` d a gi´c lˆi (bao h`m c´c h` ch˜. nhˆt) v` giao ¯ . ˙ ’ a ˙ ¯ . ’ a˙ ’ a ¯ a `o a a ınh u a . a ˙ ’ ´ cua hai d a gi´c. Cuˆi chu ¯ a o .o.ng l` mˆt v´ du cua k˜ thuˆt “ray tracing” hai chiˆu: a o ı . ˙ ’ y a ` e . . Chuyˆ’n d ong cua tia s´ng trong buˆng k´ c´ ch´.a c´c “chu.´.ng ngai vˆt”. ˙ e ¯ˆ . ˙ ’ a ` o ın o u a o . a . • Chu.o.ng 4 d` cˆp dˆn nh˜.ng thuˆt to´n tˆ m`u v`ng bˆ t k`: V`ng d inh ngh˜ bo.i ¯ˆ a ¯e e . ´ u a. a o a u ´ a y u ¯. ıa ˙ ’ ` ˙ ’.i d u.`.ng biˆn v` v`ng l` d a gi´c. phˆn trong, bo ¯ o a e a u a ¯ a • Phˆn phu luc l` thu. viˆn c´c cˆ u tr´c d˜. liˆu v` c´c h`m cˆn thiˆt v` thu.`.ng xuyˆn ` a . . a e a a . ´ u u e a a a ` . a ´ e a o e su. dung trong gi´o tr` ˙ . ’ a ınh. Trong lˆn xuˆ t ban th´. hai n`y, ch´ng tˆi d u.a thˆm c´c v´ du t´ to´n nhˇ m minh `a ´ ’ a ˙ u a u o ¯ e a ı . ınh a ` a ` y ´ hoa cho phˆn l´ thuyˆt c˜ng nhu u a e u . gi´p sinh viˆn nˇm v˜.ng kiˆn th´.c d ˜ hoc. Ngo`i ra, c´c e a ´ u ´ e u ¯a . a a . lˆi trong xuˆ t ban lˆn tru.´.c c˜ng d a d u.o.c chınh l´; mˇc d` vˆy, t´c gia vˆn mong c´ nh˜.ng ˜ o a ˙ ` ´ ’ a o u ¯˜ ¯ . ˙ ’ y a u a a . . ’ ˜ ˙ a o u ¯o o u . ban d oc. d ´ng g´p t` . ¯ . Tˆi xin cam o.n nh˜.ng gi´p d o. d ˜ nhˆn d u.o.c t`. nhiˆu ngu.`.i m` khˆng thˆ’ liˆt kˆ o ˙ ’ u u ¯˜ ¯a a ¯ . u . ` e o a o ˙ . e e e ´ hˆt, d ac biˆt l` c´c ban sinh viˆn, trong qu´ tr` biˆn soan gi´o tr` n`y. e ¯ˇ . e a a . . e a ınh e . a ınh a -a . D` Lat, ng`y 10 th´ng 1 nˇm 2005 a a a PHAM Tiˆn So.n . ´ e 8 Chu.o.ng 1 C´c thuˆt to´n v˜ d .`.ng cong trˆn a a . a e ¯u o e ´ thiˆt bi raster e . Chu.o.ng n`y tr` b`y c´c thuˆt to´n v˜ d oan thˇng, d u.`.ng tr`n v` ellipse trˆn lattice a ınh a a a . a e ¯ . ˙ ’ a ¯ o o a e 2 a a a ˙ ’ nguyˆn Z . C´c thuˆt to´n chı thao t´c trˆn nh˜ e a e u.ng sˆ nguyˆn v` trong c´c v`ng lˇp chı su. ´ o e a a o a ˙ ˙ ’ ’ . . . a o . e a´ e . ˙ ’ dung ph´p to´n cˆng nˆn rˆ t hiˆu qua. e 1.1 - . ˙ ’ Doan thˇ ng a Thuˆt to´n v˜ d oan thˇng x´c d .nh toa d o cua c´c pixel nˇ m trˆn hoˇc gˆn v´.i d oan thˇng a . a e¯ . a˙ ’ a ¯i . ¯ˆ ˙ a . ’ ` a e a ` o ¯ . . a ˙ ’ a thu.c tˆ nhˆ t. Vˆ nguyˆn tˇc, ch´ng ta muˆn chon d˜y c´c pixel gˆn v´.i d oan thˇng thu.c tˆ . e a´ ´ `e e a ´ u ´ o . a a ` o ¯ . a a˙ ’ . e ´ ´ ˙ ’ ´ ˙ ’ .c tˆ d u.o.c xˆ p xı v´.i mˆt d o mˆt pixel; ta cˆn c´ nhˆ t v` thˇng nhˆ t. X´t d oan thˇng thu e ¯ . a ˙ o a a a a e ¯ . a . ´ ´ ’ a ¯ˆ o . . . ` o a nh˜.ng t´ chˆ t g` V´.i c´c d oan thˇng c´ hˆ sˆ g´c thuˆc d oan [−1, 1], c´ d ung mˆt pixel u ´ ınh a ı? o a ¯ . ˙ ’ a . ´ o e o o o ¯ . . o ¯´ o . .o.c v˜ lˆn trˆn mˆ i cˆt; v´.i c´c d oan thˇng m` hˆ sˆ g´c nˇ m ngo`i d oan n`y, c´ d ung du . e e ¯ e ˜ . o o o a ¯ . ˙ ’ a a e o o ` ´ a a ¯ . a o ¯´ . mˆt pixel d u.o.c v˜ trˆn mˆ i h`ng. Tˆ t ca c´c d oan thˇng d u.o.c v˜ v´.i c`ng mˆt d o s´ng, o. ¯ . e e ˜ o a ´ ’ a ˙ a ¯ . ˙ ’ a ¯ . e o u o ¯ˆ a . . khˆng phu thuˆc v`o d ˆ d`i v` hu o o o a ¯o a a .´.ng, v` nhanh nhˆ t c´ thˆ’ d u.o.c. Thuˆt to´n v˜ d oan a ´ a o e ¯ . ˙ a a e ¯ . . . . . ˙ ’ a u ` a u ´ ¯e a ´ o ınh ˙ ¯ . ’ thˇng c˜ng cˆn ch´ y dˆn c´c thuˆc t´ cua d oan thˇng nhu ¯o o ˙ ’ a . d ˆ rˆng, kiˆ’u v˜... Thˆm ch´ ˙ e e a ı . . . . ch´ng ta muˆn cu e u ´ . o .c tiˆ’u ho´ m´.c d o rˇng cu.a do tiˆn tr` r`.i rac ho´ d u.`.ng thˇng thu.c ˙ a u ¯ˆ a ´ e ınh o . a ¯ o ˙ ’ a . . ´ . su. dung k˜ thuˆt antialiasing (xem [9], [11]) bˇ ng c´ch ´p dung kha nˇng d ˇt cu.`.ng tˆ nh` ˙ . e o ’ y a ` a a a ˙ a ¯a ’ o . . . d ˆ cua mˆ i pixel trˆn c´c thiˆt bi hiˆ’n thi m` mˆt pixel tu ¯o ˙ ˜ ´ ˙ .o.ng u.ng nhiˆu bit. ` . ’ o e a e . e . a o . ´ e Tru.´.c hˆt ch´ng ta chı d` cˆp dˆn c´c d oan thˇng d o rˆng mˆt pixel v` c´ d ung mˆt o e ´ u ’ e . ´ ˙ ¯ˆ a ¯e a ¯ . ˙ ’ a ¯ˆ o . . o . a o ¯´ o. pixel trˆn mˆ o e o . a a ´ o ¯o .i c´c d oan thˇng dˆc). Phˆn cuˆi chu.o.ng s˜ d` cˆp ˜i cˆt (hoˇc h`ng d ˆi v´ a ¯ . ˙ ’ a ´ o `a ´ o e ¯ˆ a e . . 9 dˆn d o rˆng c´c nguyˆn so. v` c´c mˆ u v˜. ´ . . ¯e ¯ˆ o a e a a ˜ a e Mˆt c´ch h` hoc, ch´ng ta biˆ’u diˆn mˆt pixel nhu. mˆt chˆ m tr`n v´.i tˆm tai vi o a . ınh . u e˙ ˜ e o . o . ´ a o o a . . .´.i c´c toa d o nguyˆn Z2 . Biˆ’u diˆn n`y l` mˆt xˆ p xı th´ ho.p ˙ ˜ a a o a ˙ ıch . ˙ ’ tr´ (x, y) cua pixel trˆn lu o a . ¯ˆ ı e . e e e . ´ ’ ´ y ˙’ nh´t cˇt ngang trong mˆt chu k` cua ch`m tia electron cua CRT; xˆ p xı n`y phu thuˆc v`o a a o . u ˙ ’ ´ ’ a ˙ a . o a . .a c´c vˆt trˆn m`n h` hiˆ’n thi. Trong mˆt sˆ ˙ ˙ ’ khoang c´ch (tu` thuˆc v`o hˆ thˆng) gi˜ a e a y o a e o . . ´ u ´ e a ınh e . . ´ o o hˆ thˆng, c´c chˆ m kˆ nhau phu lˆ p mˆt phˆn lˆn nhau; v´.i nh˜.ng hˆ thˆng kh´c c´ nh˜.ng . ´ e o a a ` ´ e ’ ´ ˙ a o. ` e a o u . ´ e o a o u ˙ ’ khoang c´ch gi˜ a a u .a c´c pixel d u.ng kˆ nhau; trong hˆu hˆt c´c hˆ thˆng, khoang c´ch theo ¯´ `e ` ´ a e a e o ´ ˙ ’ a . chiˆu ngang nho ho.n theo chiˆu d u.ng. Mˆt kh´c biˆt n˜.a tu` theo hˆ thˆng trong viˆc biˆ’u ` e ˙ ’ ` ¯´ e o. a e u . y . ´ e o e. e˙ diˆn hˆ toa d o, chˇng han Macintosh xem c´c pixel d u.o.c d at tai tˆm cua h` ch˜. nhˆt ˜ e . ¯ˆ e . . a˙ ’ . a ¯ . ¯ˇ . a . ˙ ’ ınh u a . .a c´c d u.`.ng thˇng kˆ nhau cua lu.´.i d iˆu khiˆ’n thay cho nˇ m trˆn c´c d u.`.ng thˇng cua gi˜ a ¯ o u a˙ ’ ` e ˙ ’ o ¯e ` e ˙ ` a e a ¯ o ˙ a’ ˙ ’ .´.i. Theo c´ch n`y, c´c h` ch˜. nhˆt (x´c d inh bo.i hai g´c) gˆm c´c pixel thuˆc phˆn lu o a a a ınh u a a ¯. ˙ ’ o ` o a o ` a . . trong cua n´. D.nh ngh˜ n`y cho ph´p c´c v`ng d ˆ rˆng bˇ ng khˆng: H` ch˜. nhˆt t`. ˙ o -i ’ ıa a e a u ¯o o . . ` a o ınh u a u . ´ (x, y) dˆn (x, y) khˆng ch´ ¯e o u.a pixel n`o, trong khi v´.i nh˜.ng hˆ thˆng kh´c, c´ d ung mˆt a o u e o ´ a o ¯´ o . . pixel tai d iˆ . ¯e ˙m n`y. Du.´.i d ay ch´ng ta s˜ biˆ’u diˆn c´c pixel nhu. c´c h` tr`n r`.i nhau c´ ’ a o ¯ˆ u e e ˙ ˜ a e a ınh o o o a ` tˆm nˇ m trˆn lu o a e .´.i. H` 1.1 l` ph´ng to cua d u.`.ng thˇng thu.c tˆ v` xˆ p xı d o rˆng mˆt pixel cua n´. ınh a o ˙ ¯ o ’ ˙ ’ a ´ ´ ’ . . . e a a ˙ ¯ˆ o o. ˙ ’ o a ¯ .o.c v˜ tu.o.ng u.ng c´c h` tr`n m`u d en v` c´c pixel khˆng d u.o.c v˜ tu.o.ng u.ng C´c pixel d u . e ´ a ınh o a ¯ a a o ¯ . e ´ h` tr`n khˆng tˆ. Trˆn m`n h` thu.c tˆ, d u.`.ng k´ cua h` tr`n biˆ’u diˆn pixel l´.n ınh o o o e a ınh . e ¯ o ´ ınh ˙ ınh o ’ e˙ ˜ e o ho.n khoang c´ch gi˜.a c´c pixel kˆ nhau, bo.i vˆy biˆ’u diˆn bˇ ng k´ hiˆu cua ch´ng ta l` ˙ ’ a u a ` e ˙ a ’ . e˙ ˜ a e ` y e ˙ ’ u a . mˆt ph´ng d ai m´.c d o r`.i rac cua c´c pixel. o . o ¯. u ¯ˆ o . ˙ a . ’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............i ............ . . . i . . . . . . i . . . . . . i . . . . . . . i . . ...................... ...................... ....................................................... . .................................................................................................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . .... . . ..... . . . . . . . . . . . . . . ...... . . . . . . . . . . . . . .... .... .. . . . . . . .... . .... . i. . . . . i . . . . . . i . . . . . . i y . . .. . ... . . .. . ....... . .. . i y . ................................................................................................................. .............................................................................. .................................. . . . . . . . . . . . . . . . . . ..... .... . . . . . . . ..... . . . . . . . . . . ..... .. . . . . . . . . . . . . . . . .. . .... .... . . . . . . . . . . ....... . .... . . . . . . . . . . . .... .. . ....... . . . . . . . . . .... . . . . . . . . ... .. . . . . . . . . . . . .... . .... . . . i. . . i y . . . . .. .. .. i y . i . . i . . ................................................................................................................. ............................................................................... ................................. . . . . . . . .... . ....... . . . . . . . . . . . . . . . . .... ... . . . . . . . . . . . . .. . . . . . . .... . .... . .. . . . . . . . . . . . . . . . .. . .... .... . . . . . . . . . . . . ....... . .... . . . . . . . . . .... . . ....... . . . . . . . . . . . . . .... . . . . . . . . . .... .. . . . . . . . . . . .... . .... . .. .. i y. . . i . . . . . . i . . . . . i . . . . . . i . . ................................................................................................................. .................................. ............................................ ................................. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H` 1.1: Doan thˇng xˆ p xı d u.o.c biˆ’u diˆn bo.i c´c h` tr`n d en. ınh - . ˙ ’ a ´ ’ a ˙ ¯ . e˙ ˜ e ˙ a ınh o ¯ ’ V` c´c nguyˆn so. trong hˆ thˆng ch´ng ta x´c d inh trˆn lu.´.i d iˆu khiˆ’n nguyˆn nˆn ı a e . ´ e o u a ¯. e o ¯` e e˙ e e c´c toa d o d` u cuˆi cua d oan thˇng l` nguyˆn. Thˆt ra, nˆu ch´ng ta cˇt d oan thˇng v´.i a . ¯ˆ ¯ˆ . a ´ ’ o ˙ ¯ . ˙ ’ a a e a . ´ e u ´ a ¯ . ˙ ’ a o h` ch˜ ınh u . nhˆt tru.´.c khi hiˆ’n thi n´ th` toa d ˆ c´c d iˆ’m d` u cuˆi cua d oan thˇng c´ thˆ’ a o e˙ ˙ ´ ’ o ˙ ¯ . ˙ ’ ˙ . . o ı . ¯o a ¯ e ¯ˆ . a a o e khˆng nguyˆn. (Ch´ng ta s˜ thao luˆn c´c giao d iˆ’m khˆng nguyˆn trong Phˆn 1.1.3). Gia o e u e ˙ ’ a a . ¯e˙ o e `a ˙ ’ 10 su. d oan thˇng c´ hˆ sˆ g´c |m| ≤ 1; c´c tru.`.ng ho.p kh´c d u.o.c xu. l´ tu.o.ng tu.. Ho.n n˜.a ˙ ¯ . ’ ˙ ’ a . ´ o e o o a o . a ¯ . ˙ y ’ . u .`.ng ho.p c´c d oan thˇng ngang, d u.ng hoˇc c´ hˆ sˆ g´c ±1 l` tˆm thu.`.ng v` ch´ng chı ˙ ’ tru o . a ¯ . a ¯´ . ´ a o e o o . a `a o ı u ˙ ’ d i qua c´c pixel trˆn lu.´.i. ¯ a e o 1.1.1 a . a o ´ Thuˆt to´n sˆ gia X´t hai pixel A = (xA , yA ) v` B = (xB , yB ) (t´c c´c phˆn tu. cua lattice nguyˆn Z2 ). Phu.o.ng e a u a ` ˙ ˙ a ’ ’ e tr` d u.`.ng thˇng AB c´ dang y = mx + t, trong d o hˆ sˆ g´c m = dy/dx v` t = yA − mxA . ınh ¯ o a˙ ’ o . . ´ ¯´ e o o a C´ch d o a ¯ .n gian nhˆ t dˆ’ v˜ d oan thˇng AB l`: ˙ ’ ´ ˙ a ¯e e ¯ . ˙ ’ a a . ´ 1. T´ hˆ sˆ g´c m; ınh e o o 2. Tˇng x mˆt d o.n vi (kho.i d` u t`. d iˆ’m bˆn tr´i nhˆ t), v´.i mˆ i xi t´ yi = mxi + t v` a o ¯ . . ˙ ¯ˆ u ¯ e ’ a ˙ e a ´ a o o ˜ ınh a sau d ´ v˜ pixel tai (xi , yi + 0.5 )1 . ¯o e . Theo c´ch n`y ta chon pixel tˆt nhˆ t, t´.c l` pixel m` khoang c´ch dˆn d u.`.ng thˇng thu.c a a . ´ o ´ a u a a ˙ ’ ´ a ¯e ¯ o ˙ ’ a . ´ ˙ ’ a ´ tˆ nho nhˆ t. Phu e .o.ng ph´p n`y khˆng hiˆu qua do mˆ i bu.´.c lˇp cˆn t´ mˆt ph´p nhˆn, a a o e ˙ ’ ˜ o o a ` ınh o . . a . e a mˆt ph´p cˆng v` mˆt ph´p to´n l`m tr`n. Ta c´ thˆ’ khu e o e o a o e a a o o e ˙ ˙ ’. ph´p nhˆn bˇ ng c´ch ch´ y rˇ ng a ` a a u´ `a . . . yi+1 = mxi+1 + t = m(xi + ∆x) + t = yi + m∆x, v` nˆu bu.´.c tˇng ∆x = 1 th` yi+1 = yi + m. a e´ o a ı Do d o nˆu x tˇng mˆt d o.n vi th` y tˇng m d o.n vi. V´.i moi d iˆ’m (xi , yi ) trˆn d oan ¯´ e ´ a o ¯ . . ı a ¯ . o . ¯e˙ e ¯ . thˇng ta biˆt rˇ ng nˆu xi+1 = xi + 1 th` yi+1 = yi + m; t´.c l`, c´c gi´ tri x v` y d u.o.c t´ ˙ a’ e ` ´ a ´ e ı u a a a . a ¯ . ınh a a . .´.c d ´ cua n´ (xem H` 1.2). Dˆy ch´ l` “thuˆt to´n sˆ gia”: v´.i mˆi theo c´c gi´ tri tru o ¯o ˙ o ’ ınh -a ınh a a ´ a o o o ˜ . bu.´.c lˇp ta thu.c hiˆn c´c ph´p to´n sˆ gia du.a trˆn bu.´.c tru.´.c. o a . . e a . e a o´ . e o o Kho.i tao ta g´n (x0 , y0 ) l` toa d o nguyˆn cua d iˆ’m xuˆ t ph´t, chˇng han A. Ch´ y ˙ . ’ a a . ¯ˆ . e ˙ ¯e ’ ˙ a´ a ˙ ’ a . u´ rˇ ng trong tru.`.ng ho.p |m| > 1 nˆu x tˇng mˆt d o.n vi th` y tˇng ho.n mˆt d o.n vi. Do d ´ ` a o . ´ e a o ¯ . . ı a o ¯ . . ¯o ` a a ¯ˆ ˙ o ˙ ’ a ` a a a .´.c tˇng mˆt d o.n vi cho y v` tˇng x mˆt cˆn ho´n d o’i vai tr` cua x v` y bˇ ng c´ch g´n bu o a o ¯ a a o . . . .o.ng ∆x = lu . ∆y 1 = m. m 1 K´ hiˆu [x], x v` x tu.o.ng u.ng l` phˆn nguyˆn, l`m tr`n xuˆng v` l`m tr`n lˆn cua x. y e . a ´ a ` a e a o ´ o a a o e ˙ ’ 11 Du.`.ng thˇng - o ˙ ’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . . . . . . . . .c tˆ . ´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . thu e .... .... . . . . . . . . . . .... .... . . . . . . . . ... ... . . . . . . . . . w . . . . . . . . .... ................................................................................................ .................................................... .................... ................................................ ........................ . . . . ...... . . . . . . . . . . . .... . ... . . . . .... . . . . . . . .... . .... . . . . . . . . . . ...... .... . . . . . . . . . . . . .... .... . . . . . ...... (xi + 1, yi + m ) ......... ......... ......... ......... . . . . . .......... . .......... . .. . ....... . . . . . . . . . .... ... . ... . . . ....... . .... .. .... . . . . . . . . . . .............. . . .......... . . .... . .... . . . . . . . . . . w ..... . . . .... . . . ..... .. .. . .. w . . . . . . . ......................................................................... .............................................. ......................................................................................................................... . . . . . . . . . ..... . .. . . . . . . . (xi , yi ) ........... ........... . . . . . . . . . .... . .... . . . . ... .... ... .... ..... . ...... ....... .. . .. . . . . . . . . . . . . . . . . . . . . ........... ........... ........... ........... . . ..... . . ....... . . .. . . .. . . . . . . ............. . .... ............. . ... . . . ... . .. . . . . . . ....... .. . . ....... .... . . .. . . . . . .. . . ................... .................. .. .. . . w ........ ............................................................................................. .. . ... . . . . . . . . .... .. . . . . . . . ...................................................................................................... . . . . . .... .... . .. . . .... . ... . .. . . . . . .. .. . . . . . . . . . . . .... .... . ... . ... . . . .. .. . . . . . . .... .... . .... ... . . . . . . .. .. . . . . . . . .... ... . . . . . . .. . . . . . . ..... ... . . . . . . .. .. . . . . . . ..... ... . . . . . . .. .. . . . . . . . ..... ... . . . . . . .. . .. . . . . . ..... ... . . . . . . . . .. . . . . . ..... ... . . .. . .. . . . .. . ... ... .. .. (xi , yi ) (xi + 1, yi + m) ´ ˙ ’ H` 1.2: T´ to´n sˆ gia cua (xi , yi ). ınh ınh a o V´ du 1.1.1 Gia su. A(2, 0), B(9, 3). Khi d ´ d u.`.ng thˇng qua hai d iˆ’m A v` B c´ hˆ sˆ ı . ˙ ˙ ’ ’ ¯o ¯ o ˙ ’ a ¯e˙ a . ´ o e o g´c m = 3 ∈ (0, 1). Ap dung thuˆt to´n sˆ gia ta d u.o.c d˜y c´c d iˆ’m v˜ tˆt nhˆ t nhu. trong o 7 ´ . a . a o ´ ¯ . a a ¯e ˙ e o´ a´ ˙ ’ .´.i: bang du o i xi yi yi + 0.5 0 2 0 0 3 1 3 7 0 6 2 4 7 1 9 3 5 7 1 12 4 6 7 2 15 5 7 7 2 18 6 8 7 3 21 7 9 7 3 Thu tuc Line() du.´.i d ay minh hoa thuˆt to´n v˜ d oan thˇng t`. (x0 , y0 ) dˆn (x1 , y1 ) ˙ . ’ o ¯ˆ . a . a e ¯ . ˙ ’ a u ´ ¯e v´.i gi´ tri m`u V alue. Diˆ’m kho.i d` u l` d iˆ’m bˆn tr´i nhˆ t. Ngo`i ra ta chı x´t tru.`.ng ho.p o a . a - e˙ ˙ ¯ˆ a ¯ e ’ a ˙ e a ´ a a ˙ e ’ o . −1 ≤ m ≤ 1 v` c´c tru o ı a .`.ng ho.p kh´c c´ thˆ’ thu.c hiˆn do t´ d oi x´.ng. Ho.n n˜.a, ch´ng ta a o e ˙ . e ´ u ınh ¯ˆ u u . . c˜ng bo qua viˆc kiˆ’m tra c´c tru o u ˙ ’ e e˙ a .`.ng ho.p d ac biˆt: d u.`.ng thˇng nˇ m ngang, d u.ng, xiˆn ˙ ’ ` . . ¯ˇ . e ¯ o . a a ¯´ e mˆt g´c ±450 . Ch´ y rˇ ng, trong ngˆn ng˜. C, (int)y bˇ ng y + 0.5 . o o . u´ ` a o u ` a void Line(int x_A, int y_A, int x_B, int y_B, int Value) { 12 int x; int dx, dy; float y, m; dx = x_B - x_A; dy = y_B - y_A; m = dy/(float)dx; y = y0; for (x = x_A; x D w .... .... . .. .... .... .... .... .... (l− ) M ....... ...... .... .... .... . .. .... ... .... .... .... .... .... .... .... ... Q w .... .... . .. .... .... w .... .... ... C .... .... . .. .... .... .... R .... .... .... ... .... .... . .. .... .... .... . .... .... .... .... .... .... .. . .... ... ... (l+ ) l H` 1.3: Lu.´.i c´c pixel v` vi tr´ d iˆ’m C, R, D, Q v` M. ınh o a a . ı ¯e ˙ a hay tu.o.ng d u.o.ng ¯ f (x, y) := ax + by + c = 0, trong d ´ a = dy, b = −dx, v` c = b × dx. K´ hiˆu c´c nu.a mˇt phˇng ngo`i v` nu.a mˇt ¯o a y e a ˙ . ’ a . ˙ ’ a a a ˙ ’ a . phˇ˙ ng trong x´c d .nh bo.i l tu.o.ng u.ng bo.i ’ a a ¯i ˙ ’ ´ ˙ ’ (l+ ) := {(x, y) ∈ R2 | f (x, y) > 0}, (l− ) := {(x, y) ∈ R2 | f (x, y) < 0}. Y tu.o.ng cua thuˆt to´n d iˆ’m gi˜.a l` xˆy du.ng mˆt d˜y c´c d iˆ’m v˜ “tˆt nhˆ t” (xi , yi ) ´ ˙ ’ ˙ ’ a. a ¯e˙ u a a . o a a ¯e . ˙ e o ´ ´ a a ¯ˆ u ˙ ´ a . d iˆ’m (x , y ) = (x , y ). Kh´i niˆm tˆt nhˆ t o. d ˆy l` nh˜.ng d iˆ’m (x , y ) d u.o.c bˇt d` u t` ¯ e a e ´ o ´ ’ a ˙ ¯a a u ¯e ˙ 0 0 A A . i i ¯ . chon gˆn v´.i d u.`.ng thˇng thu.c tˆ (dang liˆn tuc) nhˆ t. Theo gia thiˆt, 0 < m < 1, nˆn khi . ` o ¯ o a a˙ ’ ´ . e . e . ´ a ˙ ’ ´ e e x tˇng mˆt lu . a o .o.ng ∆x th` y tˇng khˆng qu´ ∆y = m∆x d o.n vi. ı a o a ¯ . . V` vˆy nˆu bu.´.c th´. i chon d u.o.c d iˆ’m v˜ tˆt nhˆ t C := (xi , yi ) th` o. bu.´.c th´. i + 1 ı a e . ´ o u . ¯ . ¯e ˙ e o´ a´ ı ˙ ’ o u ta s˜ chon d iˆ’m v˜ (xi+1 , yi+1 ), trong d o xi+1 = xi + 1 v` yi+1 = yi hoˇc yi+1 = yi + 1. e . ¯e ˙ e ¯´ a a . N´i c´ch kh´c, bu o o a a .´.c th´. i + 1 ch´ng ta s˜ chon mˆt trong hai pixel R := (x + 1, y ) hoˇc u u e . o a . i i . D := (xi + 1, yi + 1) (xem H` 1.3). K´ hiˆu Q l` giao d iˆ’m cua hai d u o ınh y e a ¯e ˙ ˙ ’ ¯ .`.ng thˇng l v` a˙ ’ a . x = xi + 1. Theo Bresenham, dˆ u cua biˆ’u th´.c x´c d inh bo.i hiˆu gi˜.a hai khoang c´ch t`. ´ ˙ a ’ e˙ u a ¯. ˙ ’ e . u ˙’ a u a ´ ¯e e a ¯. o´ R v` D dˆn Q cho ph´p x´c d inh pixel tˆt nhˆ t o ´ ’ a ˙ . bu.´.c i + 1. Trong thuˆt to´n d iˆ’m gi˜.a, o a a ¯e ˙ u . ta quan s´t vi tr´ cua d iˆ’m gi˜.a M v` c´c nu.a mˇt phˇng x´c d inh bo.i d u.`.ng thˇng l. Dˆ a . ı ˙ ¯e ’ ˙ u a a ˙ ’ a . ˙ ’ a a ¯. ˙ ¯ o ’ ˙ ’ a ˜ e a ˙ ’ ` ´ + d`ng chı ra rˇ ng, nˆu M ∈ (l ) th` pixel D gˆn v´ ¯ o a e ı ` a o .i d u.`.ng thˇng l ho.n; nˆu M ∈ (l− ) th` ˙ ’ a ´ e ı pixel R gˆn ho.n. Du.`.ng thˇng l c´ thˆ’ d i ngang qua M ; hoˇc ca hai pixel nˇ m vˆ c`ng ` a - o ˙ ’ a o e ¯˙ a ˙ . ’ ` a ` u e o ˙ mˆt nu ’.a mˇt phˇng (l+ ) (hoˇc (l− )) nhu.ng trong bˆ t c´. tru.`.ng ho.p n`o, ta vˆ n chon d iˆ’m a ˙ ’ a a ´ a u o a ˜ a ˙ . . . . . ¯e gˆn v´.i l nhˆ t. Ho.n n˜.a, sai sˆ-t´.c l` khoang c´ch gi˜.a pixel d u.o.c chon v` d u.`.ng thˇng ` a o ´ a u ´ o u a ˙ ’ a u ¯ . . a ¯ o ˙ a’ .c tˆ l-luˆn luˆn nho ho.n hoˇc bˇ ng 1/2. a ` . ´ thu e o o ˙ ’ . a 14 Dˆ’ ´p dung thuˆt to´n d iˆ’m gi˜.a, chı cˆn t´ f (M ) = f (xi + 1, yi + 1 ) v` kiˆ’m tra -ea ˙ . a . a ¯e ˙ u ˙ ` ınh ’ a 2 a e ˙ ´ ˙ o a ’ ¯o ¯. ıa e ´ ´ dˆ u cua n´. Do d ´ ta d inh ngh˜ biˆn quyˆt d. nh e ¯i di := f (xi + 1, yi + 1 ) 2 1 = a(xi + 1) + b(yi + 2 ) + c. Khi d ´ ¯o ´ 1. Nˆu di > 0 chon pixel D; e . ´ 2. Nˆu di < 0 chon pixel R; e . ´ 3. Nˆu di = 0 chon mˆt trong hai pixel R hoˇc D, do d ´ chon R. e . o . a . ¯o . Kˆ tiˆp ta cˆn x´c d inh toa d ˆ d iˆ’m gi˜.a M v` do d o biˆn quyˆt d .nh di+1 o. bu.´.c i + 1; ´ ´ e e ` a a ¯. . ¯o ¯ e . ˙ u a ¯´ e ´ ´ e ¯i ˙ ’ o d˜ nhiˆn d iˆu n`y phu thuˆc v`o viˆc chon pixel R hoˇc D. Nˆu chon R th` ho`nh d o d iˆ’m ı e ¯` e a . o a . e . . a . ´ e . ı a ¯ˆ ¯ e . ˙ M tˇng mˆt d o.n vi v` tung d o khˆng d o’i. Do d o a o ¯ . . a ¯ˆ o ¯ˆ . ˙ ¯´ 1 1 di+1 = f (xi + 2, yi + ) = a(xi + 2) + b(yi + ) + c. 2 2 Nhu.ng 1 di = a(xi + 1) + b(yi + ) + c. 2 Suy ra di+1 = di + a. K´ hiˆu sˆ gia d u.o.c cˆng thˆm khi R d u.o.c chon l` ∆R := a = dy. N´i c´ch kh´c, ta . ´ y e o ¯ . o . e ¯ . . a o a a c´ thˆ’ suy ra biˆn quyˆt d .nh o o e ˙ ´ e ´ e ¯i ˙ ’. bu.´.c kˆ tiˆp t`. biˆn quyˆt d inh o. bu.´.c hiˆn h`nh bˇ ng ´ ´ o e e u e ´ ´ e ¯. ˙ ’ o e a ` a . o. e ´ o a o ` a ˙ ınh . a . ’ c´ch cˆng thˆm sˆ gia ∆R m` khˆng cˆn phai t´ lai gi´ tri f (M ). a Nˆu chon D th` ho`nh d o v` tung d o d iˆ’m M c`ng tˇng mˆt d o.n vi, nˆn ´ e . ı a ¯ˆ a . ¯ˆ ¯ e . ˙ u a o ¯ . . e 3 3 di+1 = f (xi + 2, yi + ) = a(xi + 2) + b(yi + ) + c. 2 2 V` do d ´ a ¯o di+1 = di + a + b. K´ hiˆu sˆ gia d u.o.c cˆng v`o di+1 sau khi chon D l` ∆D := a + b = dy − dx. . ´ y e o ¯ . o . a . a V` o. bu.´.c d` u tiˆn, ta chon (x0 , y0 ) = (xA , yA ) nˆn c´ thˆ’ t´ tru.c tiˆp gi´ tri kho.i ı ˙ ’ o ¯aˆ e . ˙ e o e ınh . ´ e a . ˙ ’ tao d0 . Thˆt vˆy, d iˆ’m gi˜.a d` u tiˆn c´ toa d ˆ (x0 + 1, y0 + 1 ), v` . a a ¯e . . ˙ u ¯ˆ a e o . ¯o . 2 a f (x0 + 1, y0 + 1 ) = a(x0 + 1) + b(y0 + 2 ) + c 2 1 = ax0 + by0 + c + a + b/2 = f (x0 , y0 ) + a + b/2. 15 Nhu.ng (x0 , y0 ) thuˆc d u.`.ng thˇng l nˆn f (x0 , y0 ) = 0; do d ´ gi´ tri kho.i d` u cua biˆn o ¯ o . ˙ ’ a e ¯o a . ˙ ¯ˆ ’ a ˙ ’ ´ e ´ quyˆt d .nh l` d0 = a + b/2 = dy − dx/2. Su . e ¯i a ˙ ’. dung d ta c´ thˆ’ chon pixel th´. hai, th´. o e ˙ . u u 0 -e˙ ’. mˆu sˆ trong d ta d inh ngh˜ lai h`m f bˇ ng c´ch nhˆn n´ cho 2; t´.c l` ba, v.v. Dˆ’ khu a o ˙ ˜ ´ ¯. ıa . a ` a a a o u a 0 a a a a ` ´ o a e ´ ´ f (x, y) = 2(ax + by + c). N´i c´ch kh´c, nhˆn 2 cho c´c hˇ ng sˆ a, b, c v` biˆn quyˆt d inh; o a e ¯. m` d iˆu n`y khˆng anh hu.o.ng dˆn dˆ u cua biˆn quyˆt d .nh. a ¯`e a o ˙ ’ ˙ ’ ´ ´ ˙ ¯e a ’ ´ e ´ e ¯i Tˆ’ng qu´t ho´ thuˆt to´n d iˆ’m gi˜.a v˜ d oan thˇng AB (trong tru.`.ng ho.p xA < xB o˙ a a a . a ¯e ˙ u e ¯ . ˙ ’ a o . v` 0 < m < 1) nhu a . sau: 1. [Kho.i tao] Dˇt dx = xB − xA , dy = yB − yA , d0 = 2dy − dx, ∆R = 2dy, ∆D = 2(dy − ˙ . -a ’ . dx), x0 = xA , y0 = yA . 2. Gia su. o. bu.´.c th´. i ta c´ d iˆ’m v˜ tˆt nhˆ t (xi , yi ) v` biˆn quyˆt d .nh di . ˙ ˙ ˙ ’ ’ ’ o u o ¯e ˙ e o´ ´ a a e ´ ´ e ¯i e e a . -a ¯e 3. [V˜ pixel hiˆn h`nh] Dˇt d iˆ’m v˜ tai (xi , yi ). . ˙ e . 4. [Cˆp nhˆt] Nˆu xi = xB , thuˆt to´n d`.ng; ngu.o.c lai, d at a . a . ´ e a . a u . . ¯ˇ . xi+1 = xi + 1; yi ´ nˆu di ≤ 0, e yi+1 = yi + 1 nˆu ngu.o.c lai; ´ e . . di + ∆R nˆ´u di ≤ 0, e di+1 = di + ∆D nˆu ngu.o.c lai. ´ e . . 5. Thay i bˇ ng (i + 1) v` lˇp lai Bu.´.c 3. ` a a a . . o V´ du 1.1.2 Gia su. A(2, 0), B(9, 3). Khi d ´ d u.`.ng thˇng qua hai d iˆ’m A v` B c´ hˆ sˆ ı . ˙ ˙ ’ ’ ¯o ¯ o ˙ ’ a ¯e ˙ a . ´ o e o g´c m = 3 ∈ (0, 1). Dˆ d`ng kiˆ’m tra rˇ ng o 7 ˜ a e e˙ ` a dx = xB − xA = 7, dy = yB − yA = 3, d0 = 2dy − dx = −1, ∆R = 2dy = 6, ∆D = 2(dy − dx) = −8. 16 Ap dung thuˆt to´n d iˆ’m gi˜.a ta c´ d˜y c´c d iˆ’m v˜ tˆt nhˆ t nhu. trong bang du.´.i: ´ . a . a ¯e ˙ u o a a ¯e ˙ e o´ ´ a ˙ ’ o i xi yi di 0 2 0 −1 1 3 0 5 2 4 1 −3 3 5 1 3 4 6 2 −5 5 7 2 1 6 8 3 −7 7 9 3 −1 Hiˆ’n nhiˆn rˇ ng c´c kˆt qua n`y tr`ng v´.i kˆt qua khi su. dung phu.o.ng ph´p sˆ gia trong e˙ e ` a a e ´ ˙ a ’ u o e ´ ˙ ’ ˙ . ’ a o ´ V´ du 1.1.1. ı . Ch´ y rˇ ng, ph´p t´ cˆn thiˆt d oi v´.i di+1 trong mˆ i bu.´.c lˇp l` ph´p cˆng v` khˆng u´ ` a e ınh ` a ´ ´ e ¯ˆ o ˜ o o a a e o . . a o c´ ph´p nhˆn. Ho o e a .n n˜.a, v`ng lˇp ho`n to`n d o.n gian nhu. trong thu tuc MidPointLine() u o a a a ¯ ˙ ’ ˙ . ’ . du.´.i d ˆy: o ¯a void MidPointLine(int x_A, int y_A, int x_B, int y_B, int Value) { int x, y, d, dx, dy, DeltaR, DeltaD; dx = x_B - x_A; dy = y_B - y_A; d = 2*dy - dx; DeltaR = 2*dy; DeltaD = 2*(dy - dx); y = y_A; for (x = x_A; x y++; } } } 1.1.3 . ´ ´ o o a ¯ˆ e e ¯ˆ´ a . a e ¯oa ˙ ’ Mˆt sˆ vˆ n d` liˆn quan d e n thuˆt to´n v˜ d . n thˇ ng a Th´. tu. cua c´c d e’m d` u cuˆi. Trong mˆt u.ng dung ta cˆn d `i hoi mˆt d oan thˇng u . ˙ ’ a ¯iˆ ˙ ¯ˆ a ´ o o ´ . . ` ¯o ˙ a ’ o ¯ . . ˙ ’ a d u.o.c v˜ t`. A dˆn B ch´.a c`ng tˆp c´c pixel nhu. d oan thˇng d u.o.c v˜ t`. B dˆn A; n´i ¯ . e u ¯e ´ u u a a . ¯ . ˙ ’ a ¯ . e u ´ ¯e o c´ch kh´c, d oan thˇng d u.o.c v˜ khˆng phu thuˆc v`o th´. tu. c´c d iˆ’m d` u cuˆi. Su. sai kh´c a a ¯ . ˙’ a ¯ . e o . o a . u . a ¯ e ¯a ˙ ˆ ´ o . a chı c´ thˆ’ xay ra tai nh˜ ˙ o e ˙ ’ ˙ ’ u.ng d iˆ’m v˜ m` d u.`.ng thˇng d i qua d iˆ’m gi˜.a v` biˆn quyˆt d inh ¯e ˙ e a ¯ o ˙ ’ a ¯ ¯e˙ u a e ´ ´ e ¯. . bˇ ng khˆng; trong tru.`.ng ho.p n`y, d i t`. tr´i sang phai ch´ng ta chon d iˆ’m v˜ R. Do t´ ` a o o . a ¯ u a ˙ ’ u . ¯e ˙ e ınh ´ d ˆi x´ ¯o u .ng, khi d i t`. phai sang tr´i v` d = 0 l˜ ra ta chon d iˆ’m v˜ R, nhu.ng chon lu.a n`y s˜ ¯ u ˙ ’ a a e ˙ . ¯e e . . a e sai lˆch mˆt d o.n vi theo th`nh phˆn y v´.i pixel d u.o.c chon khi d i t`. tr´i sang phai. Do d ´ e . o ¯ . . a ` a o ¯ . . ¯ u a ˙ ’ ¯o u ` ch´ng ta cˆn chon pixel D khi d i t` a ¯ u . phai sang tr´i trong tru.`.ng ho.p d = 0. L´ luˆn tu.o.ng ˙ ’ a o y a . . . . d oi v´.i c´c d oan thˇng c´ hˆ sˆ g´c bˆ t k`. ˙’ . ´ tu ¯ˆ o a ¯ . a . ´ o e o o a y ´ Phu.o.ng ph´p ho´n d o’i c´c d iˆ’m d` u cuˆi cua d oan thˇng dˆ’ thuˆt to´n xu. l´ theo a ˙ a ¯ˆ a ¯ e ¯ˆ ˙ a ´ ’ o ˙ ¯ . ˙ ’ a ¯e˙ a . a ˙ y ’ c`ng hu.´.ng khˆng thu.c hiˆn ch´ x´c khi ch´ng ta v˜ c´c d oan thˇng theo mˆ u tˆ. C´c u o o . e . ınh a u e a ¯ . ˙ ’ a ˜ a o a d oan thˇng v˜ theo mˆ u thu.`.ng “neo” nh˜.ng dˆ u hiˆu tai d iˆ’m xuˆ t ph´t, c´ thˆ’ l` d iˆ’m ¯ . a˙ ’ e ˜ a o u ´ a e . ¯e . ˙ a´ a o e a ¯e˙ ˙ du.´.i bˆn tr´i, khˆng phu thuˆc v`o hu.´.ng di chuyˆ’n. Dˇc biˆt, v´.i mˆu tˆ chˆ m-gach, o e a o . o a . o e˙ -a. e . o ˜ a o a ´ . chˇng han 111100, ch´ng ta muˆn v˜ mˆ u n`y tai d iˆ’m xuˆ t ph´t m` khˆng tu ¯o ¯o ˙ ’ a u ´ ˜ o e a a . ¯e ˙ ´ a a a o . d ˆng d ˆ’i ˙ . . . th`nh d iˆ’m du.´.i bˆn tr´i. Ngo`i ra, nˆu thuˆt to´n luˆn luˆn d at lai c´c d iˆ’m d` u cuˆi a ¯e ˙ o e a a ´ e a . a o o ¯ˇ . a ¯ e ¯a . ˙ ˆ ´ o . tu. ch´ tˇc, ta cˆn di chuyˆ’n t`. tr´i sang phai v´.i d oan thˇng AB v` t`. phai theo th´ . ınh a u ´ `a ˙ e u a ˙ o ¯ . ’ ˙ ’ a a u ˙ ’ sang tr´i v´.i d oan thˇng BA; d iˆu n`y tao ra su. gi´n d oan trong qu´ tr` v˜, chˇng han a o ¯ . ˙ ’ a ¯`e a . . a ¯ . a ınh e ˙ ’ a . d a gi´c, tai nh˜ ¯ a u.ng d ınh chung. ¯˙’ . - e Diˆ’m xuˆ t ph´t nˇ m trˆn canh cu a d gi´c cˇt. Mˆt vˆ n d` kh´c ch´ng ta cˆn ˙ a´ a ` a e . ˙ ¯a a a ’ ´ o a ¯ˆ a . ´ e u ` a ˙’.a d ˆ’i thuˆt to´n dˆ’ v˜ c´c d oan thˇng sau khi d u.o.c cˇt bo.i mˆt trong c´c thuˆt to´n su ¯o ˙ a ˙ a ¯e e a ¯ . ˙ ’ a ¯ . a ˙ ´ ’ o a a a . . . trong Phˆn 3.3. H` 1.4(a) minh hoa d oan thˇng d u.o.c cˇt bo.i canh bˆn tr´i, x = xmin , `a ınh . ¯ . ˙ ’ a ¯ . a ˙ .´ ’ e a ˙ ’ cua h` ch˜ ınh u . nhˆt. Giao d iˆ’m cua d oan thˇng v` canh bˆn tr´i c´ ho`nh d ˆ x nguyˆn a ¯e ˙ ˙ ¯ . ’ ˙ ’ a a . e a o a ¯o e . . nhu.ng tung d o y thu.c. Pixel (xmin , mxmin + t + 0.5 ) trˆn canh x = xmin ch´ l` pixel ¯ˆ. . e . ınh a ¯ .o.c v˜ tai ho`nh d o x du . e . a ˙ ¯ . ’ ˙ ’ ¯ˆ min cua d oan thˇng tru o a .´.c khi cˇt theo thuˆt to´n d iˆ’m gi˜.a2 . V´.i ´ a a a ¯e˙ u o . . ˙ ’.i tao d a biˆt, kˆ tiˆp ch´ng ta cˆn kho.i tao biˆn quyˆt d inh tai d iˆ’m gi˜.a d oan pixel kho . ¯˜ e ´ e e ´ ´ u ` a ˙ . ’ ´ e ´ e ¯. ˙ . ¯e u ¯ . . ´ ` u´ ` RD trong cˆt kˆ bˆn. Cˆn ch´ y rˇ ng, c´ch l`m n`y tao ra d˜y ch´ x´c c´c pixel, trong o e e a a a a a . a ınh a a 2 Khi mxmin + t nˇ m gi˜.a hai d u.`.ng thˇng ngang kˆ nhau, ch´ng ta cˆn l`m tr`n xuˆng. Dˆy l` hˆ qua ` a u ¯ o ˙ ’ a ` e u ` a a o ´ o -a a e . ˙ ’ ˙ a viˆc chon pixel R khi d = 0. ’ cu e . . 18 x = xmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . ..... ..... . . ..... ..... . . . . . . . . i D. . . . . . . ..... ..... ........................................................................................... ..................................................................... . . . ..... ..... ..... ..... .................................................................... ............................................. . . ... . ... . . . . . ..... ..... . . . ..... ..... . . . . . ..... ..... . . . ..... ..... M— . . . . ... ... . . . . . ..... ..... . . . ..... ..... . . . ..... ..... (xmin , mxmin + t + 0.5 ) ........ ........ ........ . . ........ . . y ....... . ...... . . . . i . . . . . . ..... . ..... . ......... ..... ..... .......................................... ............................................................................................. ......................................................................................................................................... .... .. ... . ... .. . . . . ... . . ..... ..... . . (xmin , mxmin + t) • . .................. .. . ......... .................. . . . ....... . ......... ..... ...... . .... .. . . ..... .. . . . R . . . . . . . .. .. ..... . ..... . . . . .. .. ..... ..... . . . . . . . .. .. ..... ..... . . . . . .. ..... ..... . . . . . . ......... ......... . .. . ..... ..... . . . . ............................................................................................................................. .............................................................................................................................. . . ... .. . . . . .. .. . .. .. ..... ..... . . . . . . . . .. .. ..... ..... . . . . . ..... ..... . . . . . ..... .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............................................................................................................... . ...................... ........................................................................................ . . y = ymin (a) x = .xmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . ....... . ..... . . . . . . . . . . . . . . . . . . . . . . ....... ....... . . . . . . . . . . . . . . . . . . . . . . ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......... . . . ....... . . . . . . . . . . ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y . . . . y ..... . . ..... ..... . y .................................................................................................................................................................................................................. . . ............................................................... ................................... ............................................................................................................. . . y . . . . . . . . . . . . . . . . . . . ....... ... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............ . . . .......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... .. ....... . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ......... . ............ . . . . . . . . . . . . . . ....... ....... . . . iD y yC y . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . ........... .......... . . . . i. . . i . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . .... ..... . ..... .. . ....... . .. ... . . . . . . . . . . . y . . . . . . . i . . . . . . . i . . . . . . . i . ................. ................................... .......................................... ............ ......................................................................................... ....................................................................................................................................................................................................... . . y = ymin y = ymin − 1 ... ... ... ... .. . . . . . . . . . . . .... .... .... .... .... ... ... . .. ... ... . .. ............ . . . . . . . .. . ........ I• . . ... ... . ... . . . .. ....... . . ............. . . . . . . . . . . . . . . . . . . . . . . . . ..... ... ... . ... ... ... ... ... ... ... ... .. . ... ... ... ... ... .... ... ... . .. . . . . .. .... .... .... .... .... .... .... ............. .... ..... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..... .... .... . . . . . . . . . . .. 2 . . . . . . . . ... .. . ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . .. ......... . . . ............. . . . . . . . . . . . . . . . y = ymin − 1 y y . . . . ........... . . ............. . . y . ... . . . y . . . . . . . . . . y . . . . . . y . . . . . y . . . . . y . . . . . . . . . . . . . ........................... ........................................................................ ........................................................................................................... ................................................................................................................................................................................................................. . . . . . . . . . ..... . ..... . ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .. ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... ....... ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (b) H` 1.4: Diˆ’m xuˆ t ph´t nˇ m trˆn biˆn h` ch˜. nhˆt. (a) Giao v´.i canh d u.ng. (b) Giao ınh - e˙ ´ a a ` a e e ınh u a . o . ¯´ .i canh ngang. v´ . o 19
DMCA.com Protection Status Copyright by webtailieu.net