Giáo trình Đồ họa máy tính I (Phần 1) - Phạm Tiến Sơn

`
ˆ
´
´
-
DO HOA MAY TINH I  
.
.
´
Pham Tiˆen Son  
.
-
D`a Lat, 2005  
.
2
Muc luc  
. .  
.
`
L`oi n´oi d¯ˆau  
7
. .  
1 C´ac thuˆat to´an v˜e d¯u`ong cong trˆen thiˆet bi raster  
´
9
.
.
-
˙’  
1.1 Doan thˇang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  
9
.
´
1.1.1 Thuaˆt to´an sˆo gia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11  
.
.
˙’  
1.1.2 Thuaˆt to´an d¯iˆem giu˜a . . . . . . . . . . . . . . . . . . . . . . . . . . 13  
.
˙’  
1.1.3 Mˆot sˆo vˆan d¯ˆe liˆen quan d¯ˆen thuaˆt to´an v˜e d¯oan thˇang . . . . . . . . 18  
´ ´  
`
´
.
.
.
˙’  
1.1.4 C´ac thuoˆc t´ınh cua d¯oan thˇang . . . . . . . . . . . . . . . . . . . . . 21  
˙’  
.
.
. .  
-
1.2 Du`ong tr`on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22  
.
-
˙’  
´
1.2.1 Dˆoi xu´ng t´am d¯iˆem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22  
.
. .  
˙’  
1.2.2 Thuaˆt to´an d¯iˆem giu˜a v˜e d¯u`ong tr`on . . . . . . . . . . . . . . . . . . 23  
.
. .  
-
1.3 Du`ong cong ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28  
´
1.3.1 Ellipse c´o dang ch´ınh tˇac . . . . . . . . . . . . . . . . . . . . . . . . . 29  
.
. .  
.
˙’  
1.3.2 Ellipse trong tru`ong hop tˆong qu´at . . . . . . . . . . . . . . . . . . . 34  
.
. .  
˙’  
2 H`ınh hoc cua c´ac d¯u`ong cong v`a mˇat cong  
47  
.
.
.
`
˙’  
2.1 Mo d¯aˆu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47  
3
. .  
-
2.2 Du`ong cong Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48  
2.2.1 Thuaˆt to´an de Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . 48  
.
.
. .  
-
2.2.2 Da thu´c Bernstein v`a d¯u`ong cong Bezier . . . . . . . . . . . . . . . . 52  
. .  
´
˙’  
2.3 C´ac t´ınh chˆat cua d¯u`ong cong Bezier . . . . . . . . . . . . . . . . . . . . . . 55  
. .  
2.3.1 Diˆeu khiˆen d¯ia phuong . . . . . . . . . . . . . . . . . . . . . . . . . . 59  
-
˙’  
`
.
.
.
-
2.4 Da thu´c tu`ng khu´c v`a c´ac h`am spline . . . . . . . . . . . . . . . . . . . . . . 60  
.
.
˙’  
2.4.1 Su dung c´ac h`am spline nhu c´ac h`am trˆon . . . . . . . . . . . . . . . 63  
.
.
.
2.4.2 Xˆay dung c´ac h`am trˆon . . . . . . . . . . . . . . . . . . . . . . . . . 65  
.
.
. .  
. .  
˙’  
-
2.4.3 Du`ong cong spline v`a c´ac h`am co so . . . . . . . . . . . . . . . . . . 66  
. .  
˙’  
2.4.4 C´ac h`am B-spline co so . . . . . . . . . . . . . . . . . . . . . . . . . 66  
.
˙’  
2.4.5 Su dung c´ac knot bˆoi . . . . . . . . . . . . . . . . . . . . . . . . . . . 71  
.
.
˙’  
2.4.6 Vector knot chuaˆn . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73  
. .  
2.5 C´ac t´ınh chˆat cua d¯u`ong cong B-spline . . . . . . . . . . . . . . . . . . . . . 75  
´
˙’  
. .  
2.6 Nˆoi suy c´ac d¯iˆem d¯iˆeu khiˆen bˇang d¯u`ong cong B-spline . . . . . . . . . . . . 77  
˙’  
˙’  
`
`
.
´
´
2.7 Thiˆet kˆe c´ac mˇat Bezier v`a B-spline . . . . . . . . . . . . . . . . . . . . . . . 80  
.
2.7.1 Patch Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80  
2.7.2 D´an c´ac patch Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . 81  
2.7.3 Patch spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82  
. .  
´
˙’  
3 Giao cua c´ac d¯ˆoi tuong  
83  
.
.
`
˙’  
3.1 Mo d¯aˆu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83  
˙’  
˙’  
3.2 Giao cua hai d¯oan thˇang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83  
.
3.2.1 Phˆan t´ıch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84  
4
˙’  
3.2.2 Thuaˆt to´an x´ac d¯inh giao hai d¯oan thˇang . . . . . . . . . . . . . . . . 86  
.
.
.
.
-
˙’  
3.3 Doan thˇang v`a h`ınh chu˜ nhˆat . . . . . . . . . . . . . . . . . . . . . . . . . . 87  
.
.
. .  
3.3.1 T`ım giao bˇang c´ach giai hˆe c´ac phuong tr`ınh . . . . . . . . . . . . . . 89  
`
˙’  
.
3.3.2 Thuaˆt to´an chia nhi phˆan . . . . . . . . . . . . . . . . . . . . . . . . 89  
.
.
3.3.3 Thuaˆt to´an Cohen-Sutherland . . . . . . . . . . . . . . . . . . . . . . 93  
.
3.3.4 Thuaˆt to´an Liang-Barsky . . . . . . . . . . . . . . . . . . . . . . . . 97  
.
˙’  
3.4 Giao cua d¯oan thˇang v`a d¯a gi´ac lˆoi . . . . . . . . . . . . . . . . . . . . . . . 100  
`
˙’  
.
. .  
.
. .  
˙’  
˙’  
´
˙’  
3.4.1 Vi tr´ı tuong d¯ˆoi cua mˆot d¯iˆem v´oi d¯u`ong thˇang . . . . . . . . . . . . 100  
.
.
˙’  
3.4.2 Thuaˆt to´an t`ım giao cua d¯oan thˇang v`a d¯a gi´ac lˆoi . . . . . . . . . . 102  
`
˙’  
.
.
3.5 Giao hai d¯a gi´ac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107  
3.5.1 Thuaˆt to´an Sutherland-Hodgman . . . . . . . . . . . . . . . . . . . . 108  
.
3.5.2 Thuaˆt to´an Weiler-Atherton . . . . . . . . . . . . . . . . . . . . . . . 111  
.
.
3.5.3 C´ac ph´ep to´an tˆap hop trˆen c´ac d¯a gi´ac . . . . . . . . . . . . . . . . 113  
.
.
`
`
˙’  
3.6 Ray tracing hai chiˆeu: phan xa trong buˆong k´ın . . . . . . . . . . . . . . . . 114  
.
˙’  
3.6.1 Vector phan xa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115  
.
. .  
3.6.2 Giao cua tia s´ang v`a d¯u`ong thˇang . . . . . . . . . . . . . . . . . . . 117  
˙’  
˙’  
˙’  
.
. .  
3.6.3 Giao cua tia s´ang v´oi d¯u`ong tr`on . . . . . . . . . . . . . . . . . . . . 121  
.
3.6.4 Xˆay dung v´ı du ray tracing . . . . . . . . . . . . . . . . . . . . . . . 124  
.
.
`
3.6.5 Buˆong k´ın l`a ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126  
4 Tˆo m`au vu`ng  
127  
4.1 C´ac d¯inh ngh˜ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127  
.
.
˙’  
4.1.1 Vu`ng d¯inh ngh˜ıa boi pixel . . . . . . . . . . . . . . . . . . . . . . . . 127  
.
5
.
˙’  
4.1.2 Vu`ng d¯inh ngh˜ıa boi d¯a gi´ac . . . . . . . . . . . . . . . . . . . . . . . 129  
.
´
`
4.2 Thuaˆt to´an tˆo m`au theo vˆet dˆau loang . . . . . . . . . . . . . . . . . . . . . 129  
.
4.3 Thuaˆt to´an tˆo m`au theo con chay . . . . . . . . . . . . . . . . . . . . . . . . 131  
.
.
4.4 Thuaˆt to´an tˆo m`au theo biˆen . . . . . . . . . . . . . . . . . . . . . . . . . . 134  
.
4.5 So s´anh c´ac thuaˆt to´an . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144  
.
.
4.6 Tˆo m`au c´ac h`ınh chu˜ nhˆat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145  
.
4.7 Thuaˆt to´an tˆo m`au d¯a gi´ac . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147  
.
4.7.1 C´ac d`ong qu´et ngang . . . . . . . . . . . . . . . . . . . . . . . . . . . 150  
˙’  
4.7.2 C´ac manh vun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151  
.
´
4.7.3 Liˆen kˆet canh v`a thuˆat to´an tr`an . . . . . . . . . . . . . . . . . . . . 151  
.
.
`
4.7.4 Tˆo m`au c´ac d¯a gi´ac chˆong nhau . . . . . . . . . . . . . . . . . . . . . 158  
˜
4.8 Tˆo m`au theo mˆau tˆo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161  
.
`
Phˆan phu luc: Thu viˆen graph2D.h  
163  
171  
. .  
.
˙’  
T`ai liˆeu tham khao  
.
6
.
`
L`oi n´oi d¯ˆau  
.
.
-
˜
`
´
`
˙’  
˙’  
Dˆo hoa m´ay t´ınh l`a mˆot l˜ınh vuc hˆap dˆan cua khoa hoc m´ay t´ınh. Chu´ng ta su dung d¯ˆo hoa  
.
.
.
.
.
.
.
.
˙’  
m´ay t´ınh nhu mˆot cˆong cu d¯ˆe quan s´at thˆong tin trong nhiˆeu l˜ınh vuc kh´ac nhau, bao gˆom  
`
`
.
.
.
. .  
. .  
´
`
˙’  
khoa hoc v`a cˆong nghˆe, ho´a hoc, kiˆen tru´c v`a giai tr´ı. C´ac chuong tr`ınh d¯oˆ hoa tuong t´ac  
.
.
.
.
. .  
.
.
. .  
.
´
´
˙’  
˙’  
cho ph´ep ngu`oi su dung l`am viˆec theo c´ach tu nhiˆen nhˆat: ngu`oi su dung cung cˆap thˆong  
.
.
.
.
.
. .  
˙’  
. .  
tin cho tr`ınh u´ng dung thˆong qua c´ac hoat d¯ˆong bˆen ngo`ai cua ho v`a s˜e nhˆan d¯uoc thˆong  
.
.
.
.
.
.
.
-
˙’  
`
`
`
˙’  
˙’  
tin tro lai bˇang h`ınh anh. Dˆo hoa m´ay t´ınh d¯ang giu´p con ngu`oi thay d¯ˆoi vˆe quan niˆem v`a  
.
.
.
.
.
˙’  
c´ach thu´c su dung m´ay t´ınh.  
.
.
-
`
´
´
`
˙’  
˙’  
Gi´ao tr`ınh Dˆo hoa m´ay t´ınh I cung cˆap mˆot sˆo ky˜ thuaˆt co ban cua d¯ˆo hoa m´ay t´ınh  
.
.
.
.
. .  
. .  
-
˙’  
`
`
`
`
´
hai chiˆeu. (Dˆo hoa m´ay t´ınh ba chiˆeu, mˆot phˆan quan trong khˆong thˆe thiˆeu d¯uoc s˜e d¯uoc  
.
.
.
.
.
.
-
˙’  
´
`
`
˙’  
d¯ˆe cˆap trong mˆot gi´ao tr`ınh kh´ac). Dˆe c´o mˆot khung canh to`an diˆen v`a sˆau sˇac vˆe nhu˜ng  
.
.
.
.
.
. .  
˜
`
˙’  
nguyˆen ly´ v`a thuc h`anh cua d¯ˆo hoa m´ay t´ınh, xem c´ac t`ai liˆeu dˆan [9] v`a [11]. C´ac phuong  
.
.
.
˙’  
ph´ap phˆan t´ıch v`a thiˆet kˆe c´ac thuaˆt to´an trong gi´ao tr`ınh cho ph´ep sinh viˆen c´o thˆe viˆet  
´
´
´
.
. .  
. .  
. .  
˜
´
dˆe d`ang c´ac chuong tr`ınh minh hoa. Gi´ao tr`ınh d¯uoc biˆen soan cho c´ac d¯ˆoi tuong l`a sinh  
.
.
.
.
viˆen Toa´n-Tin v`a Tin hoc.  
.
.
.
˙’  
˙’  
˙’  
˙’  
˜
˙’  
Gi´ao tr`ınh su dung ngˆon ngu˜ C d¯ˆe minh hoa, tuy nhiˆen c´o thˆe dˆe d`ang chuyˆen d¯oˆi  
.
.
.
.
.
`
´
´
`
sang c´ac ngˆon ngu˜ kh´ac; v`a do d¯´o, sinh viˆen cˆan c´o mˆot sˆo kiˆen thu´c vˆe ngˆon ngu˜ C. Ngo`ai  
.
. .  
.
.
`
´
´
´
ra, hˆau hˆet c´ac chuong tr`ınh thao t´ac trˆen cˆau tru´c du˜ liˆeu nhu danh s´ach liˆen kˆet, nˆen d¯o`i  
.
.
´
˙’  
˙’  
hoi sinh viˆen phai c´o nhu˜ng ky˜ nˇang lˆap tr`ınh tˆot.  
.
. .  
.
˙’  
`
`
´ `  
´
˙’  
˙’  
Sinh viˆen cu˜ng cˆan c´o co so to´an hoc cua nhu˜ng nˇam d¯ˆau d¯ai hoc: hiˆeu biˆet vˆe d¯ai sˆo  
.
.
.
.
´
˙’  
tuyˆen t´ınh v`a h`ınh hoc giai t´ıch, ph´ep t´ınh vi t´ıch phˆan.  
.
.
.
.
´
`
˙’  
˙’  
Muc d¯´ıch cua gi´ao tr`ınh l`a, o mu´c d¯oˆ n`ao d¯´o, cho thˆay c´ac tr`ınh u´ng dung d¯ˆo hoa  
.
.
.
.
. .  
.
.
. .  
´
`
´
˙’  
d¯uoc tao ra nhu thˆe n`ao: Chu´ng ta cˆan viˆet v`a chay thu c´ac chuong tr`ınh. Mˆot trong  
.
.
.
.
.
.
. .  
. .  
. .  
´
˙’  
nhu˜ng muc d¯´ıch ch´ınh cua gi´ao tr`ınh l`a giu´p sinh viˆen nˇam vu˜ng c´ac phuong ph´ap, tru´oc  
.
˙’  
´
˙’  
hˆet to´an hoc ho´a c´ac kh´ac niˆem h`ınh hoc v`a sau d¯´o chuyˆen tai th`anh c´ac d¯oan m˜a chuong  
.
.
.
.
tr`ınh.  
7
. .  
.
.
.
`
´
`
Gi´ao tr`ınh bao gˆom bˆon chuong v`a mˆot phˆan phu luc v´oi nhu˜ng nˆoi dung ch´ınh nhu  
.
. .  
.
sau:  
. .  
.
. .  
.
´
`
´
`
˙’  
• Chuong thu´ nhˆat d¯ˆe cˆap d¯ˆen c´ac phuong ph´ap v˜e c´ac “nguyˆen so” cua d¯oˆ hoa m´ay  
.
.
. .  
t´ınh: d¯oan thˇang, d¯u`ong tr`on v`a ellipse.  
˙’  
.
. .  
• Phˆan t´ıch v`a thiˆet kˆe bˇang h`ınh hoc l`a nˆoi dung ch´ınh cua Chuong 2. Hˆau hˆet c´ac  
`
´
´
`
´
˙’  
. .  
.
.
.
.
.
˙’  
phˆan mˆem d¯ˆo hoa d¯ˆeu c´o nhu˜ng chu´c nˇang tao ra c´ac d¯u`ong cong dua trˆen c´ac d¯iˆem  
`
`
`
`
.
.
.
. .  
.
.
. .  
.
´
´
˙’  
m`a ngu`oi su dung lua chon. Chuong n`ay cung cˆap nhu˜ng nguyˆen ly´ v`a c´ach tiˆep cˆan  
.
.
.
.
.
.
`
thuc h`anh m`a c´ac tr`ınh u´ng dung d¯ˆo hoa ´ap dung.  
.
.
.
.
. .  
.
.
´
`
˙’  
˙’  
• Chuong 3 giai quyˆet b`ai to´an x´ac d¯inh giao cua nhu˜ng nguyˆen so d¯ˆo hoa: Giao hai  
.
.
.
˙’  
˙’  
`
˙’  
d¯oan thˇang, giao cua d¯oan thˇang v`a d¯a gi´ac lˆoi (bao h`am c´ac h`ınh chu˜ nhˆat) v`a giao  
.
.
.
. .  
´
`
˙’  
˙’  
cua hai d¯a gi´ac. Cuˆoi chuong l`a mˆot v´ı du cua ky˜ thuˆat “ray tracing” hai chiˆeu:  
.
.
.
.
. .  
˙’  
`
˙’  
Chuyˆen d¯oˆng cua tia s´ang trong buˆong k´ın c´o chu´a c´ac “chu´ong ngai vˆat”.  
.
.
.
. .  
.
.
`
´
. .  
´
˙’  
• Chuong 4 d¯ˆe cˆap d¯ˆen nhu˜ng thuaˆt to´an tˆo m`au vu`ng bˆat ky`: Vu`ng d¯inh ngh˜ıa boi  
.
.
.
.
`
˙’  
phˆan trong, boi d¯u`ong biˆen v`a vu`ng l`a d¯a gi´ac.  
.
.
. .  
`
´
`
´
• Phˆan phu luc l`a thu viˆen c´ac cˆau tru´c du˜ liˆeu v`a c´ac h`am cˆan thiˆet v`a thu`ong xuyˆen  
. .  
.
.
.
˙’  
su dung trong gi´ao tr`ınh.  
.
.
.
`
`
´
˙’  
Trong lˆan xuˆat ban thu´ hai n`ay, chu´ng tˆoi d¯ua thˆem c´ac v´ı du t´ınh to´an nhˇam minh  
.
.
.
.
´
`
´
´
hoa cho phˆan ly´ thuyˆet cu˜ng nhu giu´p sinh viˆen nˇam vu˜ng kiˆen thu´c d¯˜a hoc. Ngo`ai ra, c´ac  
.
.
. .  
. .  
.
˜
˜
˙’  
´
`
˙’  
˙’  
lˆoi trong xuˆat ban lˆan tru´oc cu˜ng d¯a˜ d¯uoc chınh ly´; mˇac du` vˆay, t´ac gia vˆan mong c´o nhu˜ng  
.
.
.
.
d¯´ong g´op tu` ban d¯oc.  
.
.
.
.
.
. .  
.
. .  
˙’  
`
˙’  
Tˆoi xin cam on nhu˜ng giu´p d¯o˜ d¯˜a nhˆan d¯uoc tu` nhiˆeu ngu`oi m`a khˆong thˆe liˆet kˆe  
.
.
.
´
hˆet, d¯ˇac biˆet l`a c´ac ban sinh viˆen, trong qu´a tr`ınh biˆen soan gi´ao tr`ınh n`ay.  
.
.
.
.
-
D`a Lat, ng`ay 10 th´ang 1 nˇam 2005  
.
.
´
PHAM Tiˆen Son  
.
8
. .  
Chuong 1  
. .  
C´ac thuˆat to´an v˜e d¯u`ong cong trˆen  
.
´
thiˆet bi raster  
.
. .  
. .  
˙’  
Chuong n`ay tr`ınh b`ay c´ac thuaˆt to´an v˜e d¯oan thˇang, d¯u`ong tr`on v`a ellipse trˆen lattice  
.
.
2
.
.
´
˙’  
˙’ ˙’  
nguyˆen  
C´ac thuˆat to´an chı thao t´ac trˆen nhu˜ng sˆo nguyˆen v`a trong c´ac v`ong lˇap chı su  
.
.
´
˙’  
dung ph´ep to´an cˆong nˆen rˆat hiˆeu qua.  
.
.
.
-
˙’  
1.1 Doan thˇang  
.
.
˙’  
`
˙’  
`
˙’  
Thuˆat to´an v˜e d¯oan thˇang x´ac d¯inh toa d¯oˆ cua c´ac pixel nˇam trˆen hoˇac gˆan v´oi d¯oan thˇang  
.
.
.
.
.
.
.
.
.
.
´
˙’  
´
thuc tˆe nhˆat. Vˆe nguyˆen tˇac, chu´ng ta muoˆn chon d˜ay c´ac pixel gˆan v´oi d¯oan thˇang thuc tˆe  
´
´
`
´
`
.
.
.
.
.
. .  
.
˙’  
˙’  
´
´
´
´
`
˙’  
nhˆat v`a thˇang nhˆat. X´et d¯oan thˇang thuc tˆe d¯uoc xˆap xı v´oi mˆat d¯oˆ mˆot pixel; ta cˆan c´o  
.
.
.
.
.
.
.
.
˙’  
´
´
nhu˜ng t´ınh chˆat g`ı? V´oi c´ac d¯oan thˇang c´o hˆe sˆo g´oc thuoˆc d¯oan [−1 1] c´o d¯u´ng mˆot pixel  
.
.
.
.
`
.
. .  
.
˜
˙’  
´
d¯uoc v˜e lˆen trˆen mˆoi cˆot; v´oi c´ac d¯oan thˇang m`a hˆe sˆo g´oc nˇam ngo`ai d¯oan n`ay, c´o d¯u´ng  
.
.
.
.
.
. .  
. .  
.
˜
˙’  
´
˙’  
mˆot pixel d¯uoc v˜e trˆen mˆoi h`ang. Tˆat ca c´ac d¯oan thˇang d¯uoc v˜e v´oi cu`ng mˆot d¯oˆ s´ang,  
.
.
.
.
.
.
. .  
. .  
˙’  
´
khˆong phu thuoˆc v`ao d¯ˆo d`ai v`a hu´ong, v`a nhanh nhˆat c´o thˆe d¯uoc. Thuˆat to´an v˜e d¯oan  
.
.
.
.
.
.
.
˙’  
˙’  
˙’  
`
´
˙’  
thˇang cu˜ng cˆan chu´ y´ d¯ˆen c´ac thuoˆc t´ınh cua d¯oan thˇang nhu d¯ˆo rˆong, kiˆeu v˜e... Thˆam ch´ı  
.
.
. .  
.
.
.
.
.
. .  
.
˙’  
˙’  
´
´
chu´ng ta muoˆn cuc tiˆeu ho´a mu´c d¯oˆ rˇang cua do tiˆen tr`ınh r`oi rac ho´a d¯u`ong thˇang thuc  
.
.
.
.
. .  
˙’  
. .  
`
´
˙’  
tˆe nh`o su dung ky˜ thuˆat antialiasing (xem [9], [11]) bˇang c´ach ´ap dung kha nˇang d¯ˇat cu`ong  
.
.
.
.
. .  
.
˙’  
˜
´
`
˙’  
d¯ˆo cua mˆoi pixel trˆen c´ac thiˆet bi hiˆen thi m`a mˆot pixel tuong u´ng nhiˆeu bit.  
.
.
.
.
. .  
Tru´oc hˆet chu´ng ta chı d¯ˆe cˆap d¯ˆen c´ac d¯oan thˇang d¯ˆo rˆong mˆot pixel v`a c´o d¯u´ng mˆot  
˙’  
´
`
´
˙’  
.
.
. .  
.
.
.
. .  
˜
˙’  
´
´
`
´
`
pixel trˆen mˆoi cˆot (hoˇac h`ang d¯ˆoi v´oi c´ac d¯oan thˇang dˆoc). Phˆan cuˆoi chuong s˜e d¯ˆe cˆap  
.
.
.
.
9
.
˜
´
d¯ˆen d¯oˆ rˆong c´ac nguyˆen so v`a c´ac mˆau v˜e.  
. .  
.
.
˙’  
Mˆot c´ach h`ınh hoc, chu´ng ta biˆeu diˆen mˆot pixel nhu mˆot chaˆm tr`on v´oi tˆam tai vi  
.
˜
´
.
.
.
.
.
. .  
2
.
˙’  
Biˆeu diˆen n`ay l`a mˆot xˆap xı th´ıch hop  
˜
´
˙’  
˙’  
tr´ı (  
) cua pixel trˆen lu´oi c´ac toa d¯oˆ nguyˆen  
.
.
.
.
´
´
˙’  
˙’  
´
khoang c´ach (tuy` thuˆoc v`ao hˆe thˆong) giu˜a c´ac vˆet trˆen m`an h`ınh hiˆen thi. Trong mˆot sˆo  
˙’  
nh´at cˇat ngang trong mˆot chu ky` cua chu`m tia electron cua CRT; xˆap xı n`ay phu thuoˆc v`ao  
.
.
.
.
˙’  
´
´
˙’  
.
.
.
.
.
.
.
´
´
`
´
`
´
˙’  
hˆe thˆong, c´ac chaˆm kˆe nhau phu lˆap mˆot phˆan lˆen nhau; v´oi nhu˜ng hˆe thˆong kh´ac c´o nhu˜ng  
.
.
.
.
.
`
`
´
´
˙’  
˙’  
khoang c´ach giu˜a c´ac pixel d¯u´ng kˆe nhau; trong hˆau hˆet c´ac hˆe thˆong, khoang c´ach theo  
.
.
.
.
˙’  
chiˆeu ngang nho hon theo chiˆeu d¯u´ng. Mˆot kh´ac biˆet nu˜a tuy` theo hˆe thˆong trong viˆec biˆeu  
`
`
´
˙’  
diˆen hˆe toa d¯oˆ, chˇang han Macintosh xem c´ac pixel d¯uoc d¯aˇt tai tˆam cua h`ınh chu˜ nhˆat  
.
.
.
.
. .  
.
˜
˙’  
˙’  
. .  
.
.
.
.
.
.
.
. .  
. .  
. .  
˙’  
˙’  
`
˙’  
`
`
˙’  
˙’  
giu˜a c´ac d¯u`ong thˇang kˆe nhau cua lu´oi d¯iˆeu khiˆen thay cho nˇam trˆen c´ac d¯u`ong thˇang cua  
. .  
.
.
`
`
˙’  
trong cua n´o. Dinh ngh˜ıa n`ay cho ph´ep c´ac vu`ng d¯ˆo rˆong bˇang khˆong: H`ınh chu˜ nhˆat tu`  
lu´oi. Theo c´ach n`ay, c´ac h`ınh chu˜ nhˆat (x´ac d¯inh boi hai g´oc) gˆom c´ac pixel thuˆoc phˆan  
.
.
.
.
.
-
`
˙’  
.
. .  
.
.
.
.
´
´
) khˆong chu´a pixel n`ao, trong khi v´oi nhu˜ng hˆe thˆong kh´ac, c´o d¯u´ng mˆot  
. .  
(
) d¯ˆen (  
. .  
.
.
˙’  
˙’  
˜
pixel tai d¯iˆem n`ay. Du´oi d¯aˆy chu´ng ta s˜e biˆeu diˆen c´ac pixel nhu c´ac h`ınh tr`on r`oi nhau c´o  
.
. .  
`
tˆam nˇam trˆen lu´oi.  
. .  
.
˙’  
´
´
˙’  
˙’  
˙’  
H`ınh 1.1 l`a ph´ong to cua d¯u`ong thˇang thuc tˆe v`a xˆap xı d¯oˆ rˆong mˆot pixel cua n´o.  
.
. .  
.
. .  
. .  
.
. .  
. .  
.
C´ac pixel d¯uoc v˜e tuong u´ng c´ac h`ınh tr`on m`au d¯en v`a c´ac pixel khˆong d¯uoc v˜e tuong u´ng  
.
.
.
. .  
.
˙’  
˜
´
˙’  
h`ınh tr`on khˆong tˆo. Trˆen m`an h`ınh thuc tˆe, d¯u`ong k´ınh cua h`ınh tr`on biˆeu diˆen pixel l´on  
.
.
.
.
˙’  
˜
`
`
˙’  
˙’  
˙’  
hon khoang c´ach giu˜a c´ac pixel kˆe nhau, boi vˆay biˆeu diˆen bˇang ky´ hiˆeu cua chu´ng ta l`a  
.
.
.
.
˙’  
mˆot ph´ong d¯ai mu´c d¯ˆo r`oi rac cua c´ac pixel.  
.
.
.
.
. .  
.
-
˙’  
˙’  
˜
´
˙’  
˙’  
H`ınh 1.1: Doan thˇang xˆap xı d¯uoc biˆeu diˆen boi c´ac h`ınh tr`on d¯en.  
.
.
.
. .  
˙’  
´
`
V`ı c´ac nguyˆen so trong hˆe thˆong chu´ng ta x´ac d¯inh trˆen lu´oi d¯iˆeu khiˆen nguyˆen nˆen  
.
.
.
˙’  
´
˙’  
`
´
´
˙’  
c´ac toa d¯ˆo d¯ˆau cuˆoi cua d¯oan thˇang l`a nguyˆen. Thˆat ra, nˆeu chu´ng ta cˇat d¯oan thˇang v´oi  
.
.
.
.
.
.
. .  
˙’  
˙’  
˙’  
˙’  
˙’  
`
´
˙’  
h`ınh chu˜ nhˆat tru´oc khi hiˆen thi n´o th`ı toa d¯ˆo c´ac d¯iˆem d¯ˆau cuˆoi cua d¯oan thˇang c´o thˆe  
.
.
.
.
.
˙’  
`
˙’  
khˆong nguyˆen. (Chu´ng ta s˜e thao luˆan c´ac giao d¯iˆem khˆong nguyˆen trong Phˆan 1.1.3). Gia  
.
10  
.
. .  
.
. .  
.
. .  
. .  
.
.
.
˙’  
´
˙’  
˙’  
su d¯oan thˇang c´o hˆe sˆo g´oc | | ≤ 1; c´ac tru`ong hop kh´ac d¯uoc xu ly´ tuong tu. Hon nu˜a  
.
.
.
.
.
. .  
.
.
˙’  
. .  
´
`
˙’  
tru`ong hop c´ac d¯oan thˇang ngang, d¯u´ng hoˇac c´o hˆe sˆo g´oc ±1 l`a tˆam thu`ong v`ı chu´ng chı  
d¯i qua c´ac pixel trˆen lu´oi.  
.
.
.
.
´
1.1.1 Thuˆat to´an sˆo gia  
.
.
. .  
`
˙’ ˙’  
X´et hai pixel = (  
) v`a = (  
c´o dang  
) (tu´c c´ac phˆan tu cua lattice nguyˆen 2) Phuong  
´
. .  
˙’  
tr`ınh d¯u`ong thˇang  
.
=
+ trong d¯´o hˆe sˆo g´oc  
.
=
v`a =  
−
.
˙’  
˙’  
´
˙’  
C´ach d¯on gian nhˆat d¯ˆe v˜e d¯oan thˇang  
l`a:  
.
´
1. T´ınh hˆe sˆo g´oc  
;
.
.
.
.
.
˙’  
˜
`
´
˙’  
2. Tˇang mˆot d¯on vi (khoi d¯ˆau tu` d¯iˆem bˆen tr´ai nhˆat), v´oi mˆoi t´ınh  
=
+ v`a  
.
.
sau d¯´o v˜e pixel tai ( b + 0 5c)1.  
.
.
. .  
.
˙’  
´
´
´
˙’  
. .  
Theo c´ach n`ay ta chon pixel tˆot nhˆat, tu´c l`a pixel m`a khoang c´ach d¯ˆen d¯u`ong thˇang thuc  
.
.
. .  
˜
´
´
`
˙’  
˙’  
tˆe nho nhˆat. Phuong ph´ap n`ay khˆong hiˆeu qua do mˆoi bu´oc lˇap cˆan t´ınh mˆot ph´ep nhˆan,  
.
.
.
.
˙’  
`
`
˙’  
mˆot ph´ep cˆong v`a mˆot ph´ep to´an l`am tr`on. Ta c´o thˆe khu ph´ep nhˆan bˇang c´ach chu´ y´ rˇang  
.
.
.
=
=
=
+
+1  
+1  
(
+ ∆ ) +  
∆
+
. .  
v`a nˆeu bu´oc tˇang ∆ = 1 th`ı  
´
=
+
+1  
.
.
.
˙’  
´
Do d¯o´ nˆeu tˇang mˆot d¯on vi th`ı tˇang  
d¯on vi. V´oi moi d¯iˆem (  
) trˆen d¯oan  
.
.
.
.
.
.
. .  
˙’  
`
´
´
thˇang ta biˆet rˇang nˆeu  
. .  
=
+ 1 th`ı  
=
+1  
+
; tu´c l`a, c´ac gi´a tri v`a d¯uoc t´ınh  
+1  
.
.
.
-
˜
´
˙’  
theo c´ac gi´a tri tru´oc d¯´o cua n´o (xem H`ınh 1.2). Dˆay ch´ınh l`a “thuaˆt to´an sˆo gia”: v´oi mˆoi  
.
.
. .  
.
.
. .  
. .  
´
bu´oc lˇap ta thuc hiˆen c´ac ph´ep to´an sˆo gia dua trˆen bu´oc tru´oc.  
.
.
.
.
.
˙’  
0) l`a toa d¯oˆ nguyˆen cua d¯iˆem xuˆat ph´at, chˇang han  
˙’  
´
˙’  
Khoi tao ta g´an (  
˙’  
Chu´ y´  
0
.
.
.
.
. .  
.
.
.
.
`
´
rˇang trong tru`ong hop | | 1 nˆeu tˇang mˆot d¯on vi th`ı tˇang hon mˆot d¯on vi. Do d¯´o  
.
.
.
.
.
. .  
.
˙’  
`
`
˙’  
cˆan ho´an d¯oˆi vai tr`o cua v`a bˇang c´ach g´an bu´oc tˇang mˆot d¯on vi cho v`a tˇang mˆot  
.
.
.
∆
1
. .  
luong ∆ =  
.
=
1
b c  
d e  
11  
. .  
-
˙’  
Du`ong thˇang  
.
´
thuc tˆe  
.
(
+ 1 d + e)  
(
)
(
b c)  
(
+ 1  
+
)
´
˙’  
H`ınh 1.2: T´ınh to´an sˆo gia cua (  
)
.
. .  
˙’  
˙’  
´
˙’ ˙’  
V´ı du 1.1.1 Gia su (2 0) (9 3) Khi d¯´o d¯u`ong thˇang qua hai d¯iˆem v`a  
c´o hˆe sˆo  
.
.
3
. .  
.
´
˙’  
´
´
´
g´oc  
˙’  
=
∈ (0 1) Ap dung thuaˆt to´an sˆo gia ta d¯uoc d˜ay c´ac d¯iˆem v˜e tˆot nhˆat nhu trong  
.
.
.
7
. .  
bang du´oi:  
b + 0 5c  
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
9
0
3
7
6
7
9
7
12  
7
15  
7
0
0
1
1
2
2
3
3
18  
7
21  
7
. .  
.
˙’  
´
˙’  
Thu tuc Line() du´oi d¯aˆy minh hoa thuˆat to´an v˜e d¯oan thˇang tu` (  
0) d¯ˆen (  
)
0
1
1
.
.
.
.
.
.
. .  
.
-
˙’  
˙’  
`
´
˙’  
˙’  
v´oi gi´a tri m`au  
Diˆem khoi d¯ˆau l`a d¯iˆem bˆen tr´ai nhˆat. Ngo`ai ra ta chı x´et tru`ong hop  
.
.
. .  
.
.
.
.
.
˙’  
´
−1 ≤ ≤ 1 v`ı c´ac tru`ong hop kh´ac c´o thˆe thuc hiˆen do t´ınh d¯oˆi xu´ng. Hon nu˜a, chu´ng ta  
.
.
.
. .  
.
. .  
.
˙’  
˙’  
`
˙’  
cu˜ng bo qua viˆec kiˆem tra c´ac tru`ong hop d¯aˇc biˆet: d¯u`ong thˇang nˇam ngang, d¯u´ng, xiˆen  
.
.
.
.
0
.
`
`
mˆot g´oc ±45 Chu´ y´ rˇang, trong ngˆon ngu˜ C, (int) bˇang b + 0 5c  
.
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 <= x_B; x ++)  
{
putpixel(x, (int)(y), Value);  
y += m;  
}
}
.
˙’  
1.1.2 Thuˆat to´an d¯iˆem giu˜a  
.
.
.
´
˙’  
Thu tuc Line() thao t´ac trˆen c´ac sˆo thuc v`a  
Bresenham d¯˜a xˆay dung thuaˆt to´an [2] v˜e  
. .  
.
.
.
˙’  
´
˙’ ˙’  
d¯oan thˇang chı su dung c´ac ph´ep to´an trˆen sˆo nguyˆen do d¯´o tr´anh goi h`am l`am tr`on v`a cho  
.
.
.
.
.
.
. .  
. .  
´
˙’  
ph´ep x´ac d¯inh (  
.
+1) theo sˆo gia dua trˆen nhu˜ng gi´a tri o bu´oc tru´oc (  
) Thuˆat  
.
+1  
.
.
.
.
.
.
.
. .  
˙’  
´
´
´
˙’  
to´an n`ay c´o thˆe mo rˆong dang dˆau chaˆm d¯ˆong d¯oˆi v´oi c´ac toa d¯ˆo thuc. Hon nu˜a, phuong  
.
.
.
.
.
.
. .  
. .  
˙’  
´
˙’  
ph´ap cua Bresenham c´o thˆe d¯uoc ´ap dung t´ınh to´an trˆen sˆo nguyˆen v˜e d¯u`ong tr`on mˇac du`  
.
.
.
.
.
. .  
. .  
˜
˙’  
˙’  
n´o khˆong dˆe d`ang mo rˆong cho conic tuy` y´. V`ı vˆay chu´ng ta su dung phuong ph´ap tuong  
.
.
.
.
. .  
.
. .  
˙’  
´
´ `  
`
˙’  
d¯ˆoi kh´ac, thuaˆt to´an d¯iˆem giu˜a, d¯uoc cˆong bˆo lˆan d¯ˆau tiˆen boi Pitteway [16], [17] v`a d¯uoc  
.
.
.
.
.
´
´
´
˙’  
˙’  
˙’  
˙’  
cai tiˆen boi Van Aken [26] v`a mˆot sˆo t´ac gia kh´ac [28], [29]. Van Aken d¯˜a chı ra [26] d¯ˆoi v´oi  
.
. .  
. .  
.
.
.
.
.
˙’  
˙’  
c´ac d¯u`ong thˇang v`a d¯u`ong tr`on v´oi du˜ liˆeu nguyˆen, cˆong thu´c d¯iˆem giu˜a suy ra cˆong thu´c  
.
˙’  
cua Bresenham v`a do d¯´o sinh ra cu`ng d˜ay c´ac pixel.  
.
. .  
cua d¯u`ong thˇang thuoˆc khoang (0 1)  
˙’  
Khˆong mˆat t´ınh tˆong qu´at, gia su hˆe sˆo g´oc  
˙’  
´
´
˙’ ˙’  
˙’  
˙’  
.
.
. .  
.
. .  
.
.
.
.
˙’  
´
´
˙’  
˙’  
˙’  
(c´ac tru`ong hop kh´ac c´o thˆe d¯uoc xu ly´ boi c´ac ph´ep lˆay d¯oˆi xu´ng mˆot c´ach th´ıch hop qua  
.
.
.
.
˙’  
´
´
c´ac truc toa d¯oˆ). Ta cu˜ng ky´ hiˆeu d¯iˆem xuˆat ph´at l`a (  
) v`a d¯iˆem kˆet thu´c l`a (  
˙’  
)
.
.
.
.
. .  
. .  
-
˙’  
Dˇat  
:=  
−
=
−
Phuong tr`ınh d¯u`ong thˇang qua hai d¯iˆem v`a  
x´ac  
.
.
˙’  
d¯inh boi  
.
=
+ ;  
13  
−
( )  
+
( )  
. .  
˙’  
H`ınh 1.3: Lu´oi c´ac pixel v`a vi tr´ı d¯iˆem  
v`a  
.
. .  
. .  
hay tuong d¯uong  
(
) :=  
+
+ = 0  
.
.
˙’  
˙’  
˙’  
trong d¯´o  
=
= −  
v`a = ×  
Ky´ hiˆeu c´ac nua mˇat phˇang ngo`ai v`a nua mˇat  
.
.
.
.
. .  
.
.
˙’  
˙’  
˙’  
phˇang trong x´ac d¯inh boi tuong u´ng boi  
.
+
( ) := {(  
) ∈ R2 | (  
) ∈ R2 | (  
)
)
0}  
0}  
−
( ) := {(  
. .  
˙’  
.
.
´
˙’  
˙’  
´
´
˙’  
Y tuong cua thuˆat to´an d¯iˆem giu˜a l`a xˆay dung mˆot d˜ay c´ac d¯iˆem v˜e “tˆot nhˆat” (  
)
.
.
.
.
.
.
. .  
˙’  
bˇat d¯ˆau tu` d¯iˆem (  
˙’  
´
`
´
´
˙’  
0) = (  
) Kh´ai niˆem tˆot nhˆat o d¯ˆay l`a nhu˜ng d¯iˆem (  
) d¯uoc  
.
0
.
.
. .  
.
˙’  
`
´
´
´
˙’  
chon gˆan v´oi d¯u`ong thˇang thuc tˆe (dang liˆen tuc) nhˆat. Theo gia thiˆet, 0  
1 nˆen khi  
.
.
.
.
.
. .  
.
tˇang mˆot luong ∆ th`ı tˇang khˆong qu´a ∆ = ∆ d¯on vi.  
.
.
.
. .  
.
. .  
.
. .  
˙’  
´
´
´
˙’  
V`ı vˆay nˆeu bu´oc thu´ chon d¯uoc d¯iˆem v˜e tˆot nhˆat := (  
) th`ı o bu´oc thu´ + 1  
.
.
.
˙’  
ta s˜e chon d¯iˆem v˜e (  
+1) trong d¯o´  
=
+ 1 v`a  
=
hoˇac  
=
+1  
+ 1  
+1  
+1  
+1  
.
.
. .  
.
N´oi c´ach kh´ac, bu´oc thu´ + 1 chu´ng ta s˜e chon mˆot trong hai pixel := ( + 1 ) hoˇac  
.
.
.
. .  
˙’  
˙’  
˙’  
:= ( + 1 + 1) (xem H`ınh 1.3). Ky´ hiˆeu  
l`a giao d¯iˆem cua hai d¯u`ong thˇang v`a  
.
.
.
.
.
˙’  
´
˙’  
˙’  
˙’  
=
+ 1 Theo Bresenham, dˆau cua biˆeu thu´c x´ac d¯inh boi hiˆeu giu˜a hai khoang c´ach tu`  
.
.
.
. .  
.
˙’  
´
´
´
˙’  
v`a d¯ˆen cho ph´ep x´ac d¯inh pixel tˆot nhˆat o bu´oc + 1 Trong thuˆat to´an d¯iˆem giu˜a,  
.
.
.
.
.
. .  
˙’  
ta quan s´at vi tr´ı cua d¯iˆem giu˜a  
˙’  
˙’  
˜
˙’  
˙’  
˙’  
v`a c´ac nua mˇat phˇang x´ac d¯inh boi d¯u`ong thˇang Dˆe  
.
.
.
+
.
. .  
.
−
`
˙’  
´
`
´
˙’  
d`ang chı ra rˇang, nˆeu  
∈ ( ) th`ı pixel  
gˆan v´oi d¯u`ong thˇang hon; nˆeu  
∈ ( ) th`ı  
.
. .  
-
˙’  
˙’  
`
`
`
˙’  
pixel  
gˆan hon. Du`ong thˇang c´o thˆe d¯i ngang qua ; hoˇac ca hai pixel nˇam vˆe cu`ng  
.
.
+
−
.
.
. .  
.
˙’  
˙’  
˜
´
˙’  
mˆot nua mˇat phˇang ( ) (hoˇac ( )) nhung trong bˆat cu´ tru`ong hop n`ao, ta vˆan chon d¯iˆem  
.
.
.
.
.
.
.
.
.
.
. .  
. .  
˙’  
`
´
´
˙’  
gˆan v´oi nhˆat. Hon nu˜a, sai sˆo-tu´c l`a khoang c´ach giu˜a pixel d¯uoc chon v`a d¯u`ong thˇang  
.
.
.
.
`
´
˙’  
thuc tˆe -luˆon luˆon nho hon hoˇac bˇang 1/2.  
.
.
14  
1
2
.
-
˙’  
˙’  
˙’  
`
˙’  
Dˆe ´ap dung thuaˆt to´an d¯iˆem giu˜a, chı cˆan t´ınh ( ) = ( + 1 + ) v`a kiˆem tra  
.
.
´
´
´
˙’  
dˆau cua n´o. Do d¯´o ta d¯inh ngh˜ıa biˆen quyˆet d¯inh  
.
.
1
:=  
=
(
(
+ 1 + )  
2
1
2
+ 1) + ( + ) +  
Khi d¯´o  
´
1. Nˆeu  
0 chon pixel  
;
.
´
2. Nˆeu  
0 chon pixel  
;
.
´
3. Nˆeu = 0 chon mˆot trong hai pixel hoˇac  
do d¯´o chon  
.
.
.
.
.
.
. .  
˙’  
Kˆe tiˆep ta cˆan x´ac d¯inh toa d¯ˆo d¯iˆem giu˜a  
´ ´  
`
´
´
˙’  
v`a do d¯o´ biˆen quyˆet d¯inh  
o bu´oc + 1;  
˙’  
+1  
.
.
.
.
`
´
d˜ı nhiˆen d¯iˆeu n`ay phu thuˆoc v`ao viˆec chon pixel hoˇac  
Nˆeu chon th`ı ho`anh d¯oˆ d¯iˆem  
.
.
.
.
.
.
.
.
˙’  
tˇang mˆot d¯on vi v`a tung d¯oˆ khˆong d¯oˆi. Do d¯o´  
.
.
.
1
1
= ( + 2 + ) = ( + 2) + ( + ) +  
+1  
2
2
.
Nhung  
1
= ( + 1) + ( + ) +  
2
Suy ra  
=
+
+1  
. .  
. .  
´
Ky´ hiˆeu sˆo gia d¯uoc cˆong thˆem khi d¯uoc chon l`a ∆ :=  
=
.
N´oi c´ach kh´ac, ta  
. .  
`
.
.
.
.
.
.
. .  
.
˙’  
´
´
´ ´  
´
´
˙’  
˙’  
c´o thˆe suy ra biˆen quyˆet d¯inh o bu´oc kˆe tiˆep tu` biˆen quyˆet d¯inh o bu´oc hiˆen h`anh bˇang  
.
.
.
´
`
˙’  
c´ach cˆong thˆem sˆo gia ∆ m`a khˆong cˆan phai t´ınh lai gi´a tri (  
)
.
.
.
.
˙’  
Nˆeu chon th`ı ho`anh d¯oˆ v`a tung d¯oˆ d¯iˆem  
´
cu`ng tˇang mˆot d¯on vi, nˆen  
.
.
.
.
.
3
3
= ( + 2 + ) = ( + 2) + ( + ) +  
+1  
2
2
V`a do d¯´o  
=
+ +  
+1  
. .  
´
Ky´ hiˆeu sˆo gia d¯uoc cˆong v`ao  
sau khi chon l`a ∆ := + =  
.
−
+1  
.
.
.
.
. .  
.
.
˙’  
`
´
˙’  
˙’  
V`ı o bu´oc d¯aˆu tiˆen, ta chon (  
0) = (  
) nˆen c´o thˆe t´ınh truc tiˆep gi´a tri khoi  
0
.
.
.
1
2
.
˙’  
Thˆat vˆay, d¯iˆem giu˜a d¯ˆau tiˆen c´o toa d¯ˆo ( 0 + 1 0 + ) v`a  
`
tao  
.
0
.
.
.
.
1
2
1
(
0 + 1 0 + ) =  
( 0 + 1) + ( 0 + ) +  
2
=
=
+
0 + + +  
0) + +  
2
0
(
2
0
15  
.
. .  
0) thuoˆc d¯u`ong thˇang nˆen (  
.
˙’  
`
´
˙’  
˙’  
Nhung (  
0) = 0; do d¯´o gi´a tri khoi d¯ˆau cua biˆen  
0
0
.
.
.
.
.
˙’  
´
˙’  
2 Su dung  
quyˆet d¯inh l`a  
=
˜
+
´
2 =  
−
ta c´o thˆe chon pixel thu´ hai, thu´  
.
0
0
.
.
.
.
-
˙’  
`
˙’  
ba, v.v. Dˆe khu mˆau sˆo trong  
ta d¯inh ngh˜ıa lai h`am bˇang c´ach nhˆan n´o cho 2; tu´c l`a  
0
.
.
`
´
´ ´  
v`a biˆen quyˆet d¯inh;  
.
(
) = 2(  
+
+ ) N´oi c´ach kh´ac, nhˆan 2 cho c´ac hˇang sˆo  
. .  
`
´
´
´
´
˙’  
˙’  
˙’  
m`a d¯iˆeu n`ay khˆong anh huong d¯ˆen dˆau cua biˆen quyˆet d¯inh.  
.
.
. .  
.
˙’  
˙’  
˙’  
Tˆong qu´at ho´a thuˆat to´an d¯iˆem giu˜a v˜e d¯oan thˇang  
(trong tru`ong hop  
.
.
.
.
v`a 0  
1) nhu sau:  
.
-
˙’  
1. [Khoi tao] Dˇat  
=
−
=
−
= 2  
−
∆ = 2 ∆ = 2(  
−
0
.
.
)
=
=
0
0
. . . .  
˙’ ˙’ ˙’  
.
˙’  
2. Gia su o bu´oc thu´ ta c´o d¯iˆem v˜e tˆot nhˆat (  
´
´
´
´
) v`a biˆen quyˆet d¯inh  
.
-
˙’  
3. [V˜e pixel hiˆen h`anh] Dˇat d¯iˆem v˜e tai (  
)
.
.
.
.
. .  
´
4. [Cˆap nhˆat] Nˆeu  
=
thuˆat to´an du`ng; nguoc lai, d¯aˇt  
.
.
.
.
.
.
=
=
+ 1;  
+1  
+1  
´
nˆeu ≤ 0  
. .  
´
+ 1 nˆeu nguoc lai;  
.
.
´
+ ∆ nˆeu ≤ 0  
=
+1  
. .  
´
+ ∆ nˆeu nguoc lai.  
.
.
. .  
5. Thay bˇang ( + 1) v`a lˇap lai Bu´oc 3.  
`
.
.
.
. .  
˙’  
˙’  
´
˙’ ˙’  
V´ı du 1.1.2 Gia su (2 0) (9 3) Khi d¯´o d¯u`ong thˇang qua hai d¯iˆem v`a  
c´o hˆe sˆo  
.
.
3
˙’  
˜
`
g´oc  
=
∈ (0 1) Dˆe d`ang kiˆem tra rˇang  
7
=
=
−
−
−
=
=
7
3
= 2  
= −1  
=
0
∆
∆
= 2  
6
= 2(  
−
) = −8  
16  
.
.
. .  
´
˙’  
˙’  
´
´
˙’  
Ap dung thuaˆt to´an d¯iˆem giu˜a ta c´o d˜ay c´ac d¯iˆem v˜e tˆot nhˆat nhu trong bang du´oi:  
.
.
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
9
0
0
1
1
2
2
3
3
−1  
5
−3  
3
−5  
1
−7  
−1  
.
.
. .  
˙’  
`
´
´
´
˙’  
˙’  
˙’  
Hiˆen nhiˆen rˇang c´ac kˆet qua n`ay tru`ng v´oi kˆet qua khi su dung phuong ph´ap sˆo gia trong  
.
V´ı du 1.1.1.  
.
.
. .  
trong mˆoi bu´oc lˇap l`a ph´ep cˆong v`a khˆong  
`
˜
`
´
´
Chu´ y´ rˇang, ph´ep t´ınh cˆan thiˆet d¯oˆi v´oi  
+1  
.
.
.
.
.
.
˙’  
˙’  
c´o ph´ep nhˆan. Hon nu˜a, v`ong lˇap ho`an to`an d¯on gian nhu trong thu tuc MidPointLine()  
.
.
. .  
du´oi d¯ˆay:  
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 <= x_B; x++)  
{
putpixel(x, y, Value);  
if (d <= 0) d += DeltaR;  
else  
{
d += DeltaD;  
17  
y++;  
}
}
}
˙’  
1.1.3 Mˆot sˆo vˆan d¯ˆe liˆen quan d¯ˆen thuˆat to´an v˜e d¯oan thˇang  
´ ´  
`
´
.
.
.
.
.
.
˙’  
Thu´ tu cua c´ac d¯iˆem d¯ˆau cuˆoi. Trong mˆot u´ng dung ta cˆan d¯`oi hoi mˆot d¯oan thˇang  
˙’  
`
´
`
˙’  
˙’  
.
.
.
.
.
. .  
.
.
.
. .  
.
˙’  
´
d¯ˆen  
´
d¯uoc v˜e tu`  
chu´a cu`ng tˆap c´ac pixel nhu d¯oan thˇang d¯uoc v˜e tu`  
d¯ˆen ; n´oi  
.
.
.
.
.
. .  
. .  
˙’  
˙’  
`
´
c´ach kh´ac, d¯oan thˇang d¯uoc v˜e khˆong phu thuˆoc v`ao thu´ tu c´ac d¯iˆem d¯aˆu cuˆoi. Su sai kh´ac  
.
.
.
.
.
.
.
. .  
.
˙’  
˙’  
˙’  
˙’  
´
´
˙’  
˙’  
chı c´o thˆe xay ra tai nhu˜ng d¯iˆem v˜e m`a d¯u`ong thˇang d¯i qua d¯iˆem giu˜a v`a biˆen quyˆet d¯inh  
.
.
. .  
.
.
˙’  
`
˙’  
bˇang khˆong; trong tru`ong hop n`ay, d¯i tu` tr´ai sang phai chu´ng ta chon d¯iˆem v˜e  
Do t´ınh  
.
.
.
.
.
.
˙’  
´
˙’  
d¯ˆoi xu´ng, khi d¯i tu` phai sang tr´ai v`a = 0 l˜e ra ta chon d¯iˆem v˜e  
nhung chon lua n`ay s˜e  
.
.
.
.
.
. .  
.
`
˙’  
sai lˆech mˆot d¯on vi theo th`anh phˆan v´oi pixel d¯uoc chon khi d¯i tu` tr´ai sang phai. Do d¯´o  
.
.
.
.
.
.
. .  
.
. .  
`
˙’  
chu´ng ta cˆan chon pixel khi d¯i tu` phai sang tr´ai trong tru`ong hop = 0 Ly´ luˆan tuong  
.
.
.
.
.
˙’  
tu d¯oˆi v´oi c´ac d¯oan thˇang c´o hˆe sˆo g´oc bˆat ky`.  
´
´
´
.
.
.
. .  
.
˙’  
˙’  
˙’  
˙’  
`
´
˙’  
˙’  
Phuong ph´ap ho´an d¯ˆoi c´ac d¯iˆem d¯ˆau cuˆoi cua d¯oan thˇang d¯ˆe thuˆat to´an xu ly´ theo  
.
.
. .  
.
˙’  
˜
cu`ng hu´ong khˆong thuc hiˆen ch´ınh x´ac khi chu´ng ta v˜e c´ac d¯oan thˇang theo mˆau tˆo. C´ac  
.
.
.
. .  
.
˙’  
˙’  
˙’  
˙’  
˜
´
´
d¯oan thˇang v˜e theo mˆau thu`ong “neo” nhu˜ng dˆau hiˆeu tai d¯iˆem xuˆat ph´at, c´o thˆe l`a d¯iˆem  
.
.
.
. .  
. .  
.
-
˙’  
˜
´
du´oi bˆen tr´ai, khˆong phu thuoˆc v`ao hu´ong di chuyˆen. Dˇac biˆet, v´oi mˆau tˆo chaˆm-gach,  
.
.
.
.
.
.
˙’  
˙’  
˙’  
˜
´
´
chˇang han 111100, chu´ng ta muˆon v˜e mˆau n`ay tai d¯iˆem xuˆat ph´at m`a khˆong tu d¯ˆong d¯ˆoi  
.
.
.
.
. .  
˙’  
˙’  
´
`
´
th`anh d¯iˆem du´oi bˆen tr´ai. Ngo`ai ra, nˆeu thuˆat to´an luˆon luˆon d¯aˇt lai c´ac d¯iˆem d¯aˆu cuˆoi  
.
.
.
.
.
.
.
.
˙’  
´
˙’  
`
˙’  
˙’  
theo thu´ tu ch´ınh tˇac, ta cˆan di chuyˆen tu` tr´ai sang phai v´oi d¯oan thˇang  
v`a tu` phai  
˙’  
.
.
.
.
˙’  
`
sang tr´ai v´oi d¯oan thˇang  
; d¯iˆeu n`ay tao ra su gi´an d¯oan trong qu´a tr`ınh v˜e, chaˇng han  
.
.
.
.
.
.
˙’  
d¯a gi´ac, tai nhu˜ng d¯ınh chung.  
.
-
˙’  
`
´
´
´
`
`
˙’  
Diˆem xuˆat ph´at nˇam trˆen canh cua d¯a gi´ac cˇat. Mˆot vˆan d¯ˆe kh´ac chu´ng ta cˆan  
.
.
.
. .  
.
˙’  
˙’  
˙’  
´
˙’  
˙’  
sua d¯ˆoi thuaˆt to´an d¯ˆe v˜e c´ac d¯oan thˇang sau khi d¯uoc cˇat boi mˆot trong c´ac thuˆat to´an  
.
.
.
.
.
. .  
.
˙’  
´
`
˙’  
trong Phˆan 3.3. H`ınh 1.4(a) minh hoa d¯oan thˇang d¯uoc cˇat boi canh bˆen tr´ai,  
=
min  
.
.
.
.
.
˙’  
˙’  
˙’  
˙’  
cua h`ınh chu˜ nhˆat. Giao d¯iˆem cua d¯oan thˇang v`a canh bˆen tr´ai c´o ho`anh d¯ˆo nguyˆen  
.
.
.
.
.
.
nhung tung d¯oˆ thuc. Pixel (  
b
+ + 0 5c) trˆen canh  
=
ch´ınh l`a pixel  
min  
min  
min  
.
.
.
. .  
. .  
˙’  
˙’ ´  
˙’  
cua d¯oan thˇang tru´oc khi cˇat theo thuaˆt to´an d¯iˆem giu˜a . V´oi  
. .  
. 2  
.
d¯uoc v˜e tai ho`anh d¯oˆ  
min  
.
.
.
.
.
.
˙’  
´
´ ´  
`
´
´
˙’  
˙’  
pixel khoi tao d¯a˜ biˆet, kˆe tiˆep chu´ng ta cˆan khoi tao biˆen quyˆet d¯inh tai d¯iˆem giu˜a d¯oan  
.
.
.
.
.
`
´
`
trong cˆot kˆe bˆen. Cˆan chu´ y´ rˇang, c´ach l`am n`ay tao ra d˜ay ch´ınh x´ac c´ac pixel, trong  
.
.
2
min  
18  
=
min  
—
(
b
min + + 0 5c)  
min  
(
min + )  
min  
•
=
min  
(a)  
=
min  
=
min  
1
2
•
=
=
−
min  
min − 1  
(b)  
.
.
.
-
˙’  
`
´
H`ınh 1.4: Diˆem xuˆat ph´at nˇam trˆen biˆen h`ınh chu˜ nhˆat. (a) Giao v´oi canh d¯u´ng. (b) Giao  
.
.
.
v´oi canh ngang.  
.
19  
. .  
. .  
.
. .  
.
´
˙’  
˙’  
´
khi cˇat d¯u`ong thˇang theo d¯u`ong biˆen  
´
v`a sau d¯´o thuc hiˆen v˜e d¯oan thˇang d¯uoc cˇat tu`  
min  
.
.
.
.
.
˙’  
˙’  
(
b
min + + 0 5c) d¯ˆen (  
ch´ınh x´ac do d¯u`ong thˇang sau khi cˇat c´o hˆe sˆo g´oc kh´ac  
) theo thuˆat to´an d¯iˆem giu˜a s˜e cho d˜ay d¯iˆem v˜e khˆong  
min  
.
. .  
˙’  
´
´
.
. .  
.
.
.
. .  
.
. .  
.
˙’  
˙’  
`
Tru`ong hop phu´c tap hon khi d¯u`ong thˇang  
giao v´oi d¯u`ong thˇang nˇam ngang nhu  
`
`
.
.
´
´
˙’  
trong H`ınh 1.4(b). Khi hˆe sˆo g´oc  
rˆat nho, c´o nhiˆeu pixel nˇam trˆen d`ong qu´et  
=
min  
.
. .  
.
. .  
.
´
˙’  
tuong u´ng canh bˆen du´oi cua h`ınh chu˜ nhˆat. Chu´ng ta muoˆn bao h`am c´ac pixel n`ay trong  
.
.
.
.
.
˙’  
h`ınh chu˜ nhˆat, nhung do qu´a tr`ınh t´ınh to´an giao d¯iˆem v´oi d`ong qu´et  
=
v`a sau d¯´o  
.
min  
.
. .  
´
˙’  
l`am tr`on ho`anh d¯oˆ ta d¯uoc pixel khˆong phai pixel bˆen tr´ai nhˆat trˆen d`ong n`ay. Dua  
.
.
.
˙’  
`
´
´
˙’  
˙’  
trˆen h`ınh v˜e, ta thˆay rˇang pixel bˆen tr´ai nhˆat l`a pixel trˆen bˆen phai giao d¯iˆem cua d¯oan  
.
1
2
. .  
v`a d¯u`ong thˇang  
˙’  
thˇang  
˙’  
`
˙’  
=
−
)
Do d¯´o, ta chı cˆan t`ım v`a l`am tr`on lˆen ho`anh d¯oˆ;  
min  
min  
.
`
pixel d¯ˆau tiˆen ch´ınh l`a (d e  
˙’  
.
.
. .  
.
˙’  
´
´
`
Cuˆoi cu`ng, thuˆat to´an d¯iˆem giu˜a cu˜ng thuc hiˆen tˆot trong tru`ong hop c´ac d¯iˆem d¯ˆau  
.
.
.
.
.
. .  
´
´
´
cuˆoi c´o toa d¯ˆo thuc; kh´ac biˆet duy nhˆat l`a bu´oc tˇang v`a c´ac ph´ep to´an thao t´ac trˆen sˆo  
.
.
.
.
.
thuc.  
.
. .  
˙’  
˙’  
˙’  
´
˙’  
Thay d¯ˆoi cu`ong d¯ˆo s´ang cua d¯oan thˇang theo hˆe sˆo g´oc. X´et hai d¯oan thˇang trong  
.
.
.
.
√
-
˙’  
`
´
`
˙’  
H`ınh 1.5. Doan thˇang c´o hˆe sˆo g´oc 1 v`a do d¯o´ c´o d¯oˆ d`ai bˇang 2 lˆan d¯oˆ d`ai cua  
Chu´ng  
. .  
2
1
.
´
.
.
.
. .  
˜
˙’  
˜
´
˙’  
ta d¯ˇat cu`ng sˆo (10) pixel trˆen mˆoi d¯oan thˇang. Nˆeu cu`ong d¯ˆo cua mˆoi pixel l`a th`ı cu`ong  
.
.
.
√
.
.
˙’  
d¯ˆo trˆen mˆot d¯on vi d¯ˆo d`ai cua d¯oan thˇang l`a trong khi cua l`a  
´
˙’  
˙’  
2; su khˆong nhˆat  
1
2
.
.
. .  
.
.
.
. .  
.
˜
´
˙’  
˙’  
qu´an n`ay dˆe d`ang ph´at hiˆen boi ngu`oi quan s´at. Trˆen m`an h`ınh d¯on sˇac, khˆong c´o c´ach giai  
.
.
. .  
˙’  
´
´
˙’  
quyˆet, nhung trˆen hˆe thˆong -bit trˆen pixel chu´ng ta c´o thˆe cai thiˆen d¯uoc t`ınh trang n`ay  
.
.
.
.
. .  
`
´
´
´
˙’  
˙’  
bˇang c´ach d¯aˇt cu`ong d¯ˆo l`a mˆot h`am cua hˆe sˆo g´oc. Ky˜ thuaˆt antialiasing cho kˆet qua tˆot  
.
.
.
.
.
.
.
.
`
˙’  
hon bˇang c´ach xem d¯oan thˇang nhu mˆot h`ınh chu˜ nhˆat c´o d¯oˆ rˆong hep v`a t´ınh to´an th´ıch  
.
.
.
. .  
.
.
. .  
.
.
˜
`
`
`
hop c´ac cu`ong d¯oˆ v´oi nhiˆeu pixel trˆen mˆoi cˆot nˇam trong hoˇac gˆan h`ınh chu˜ nhˆat (xem [9],  
.
.
.
.
.
.
.
.
˙’  
˙’  
[11]). Ngo`ai ra coi d¯oan thˇang nhu h`ınh chu˜ nhˆat cu˜ng cho ph´ep tao c´ac d¯oan thˇang v´oi d¯ˆo  
.
.
.
.
.
rˆong tuy` y´.  
.
.
.
.
˙’  
˙’  
. .  
˙’  
˙’  
Ph´ac thao c´ac nguyˆen so x´ac d¯inh boi c´ac d¯oan thˇang. V´oi c´ach v˜e c´ac d¯oan thˇang,  
.
.
.
.
. .  
.
.
.
˙’  
`
´
chu´ng ta cˆan v˜e c´ac nguyˆen so d¯uoc xˆay dung tu` c´ac d¯oan thˇang nhu thˆe n`ao? C´ac d¯u`ong  
.
.
.
. .  
.
.
˙’  
`
˙’  
´
`
gˆap khu´c c´o thˆe d¯uoc v˜e bˇang c´ach xem n´o nhu c´ac d¯oan thˇang kˆe nhau. C´ac h`ınh chu˜  
.
.
.
.
.
˙’  
´
`
nhˆat v`a d¯a gi´ac l`a nhu˜ng nguyˆen so vu`ng v`a c´o thˆe v˜e c´ac canh liˆen tiˆep nhung d¯iˆeu n`ay  
.
.
.
.
˜
`
´
´
`
˙’  
dˆan d¯ˆen mˆot sˆo pixel nˇam ngo`ai vu`ng d¯inh ngh˜ıa boi nguyˆen so-xem c´ac Phˆan 4.6 v`a 4.7  
.
.
.
.
. .  
`
`
´
`
`
´
˙’  
˙’  
˙’  
vˆe nhu˜ng thuaˆt to´an xu ly´ vˆan d¯ˆe n`ay. Chu´ y´ rˇang cˆan v˜e c´ac d¯ınh chung cua d¯u`ong gˆap  
.
˙’  
˙’  
`
`
`
´
khu´c mˆot lˆan do viˆec v˜e hai lˆan c´o thˆe l`am thay d¯ˆoi m`au hoˇac d¯aˇt m`au nˆen khi viˆet trong  
.
.
.
.
. .  
.
´
´
chˆe d¯oˆ XOR trˆen m`an h`ınh, hoˇac tˇang cu`ong d¯ˆo gˆap d¯ˆoi tai d¯o´. Thˆat ra c´o nhu˜ng pixel  
.
.
.
.
.
˙’  
`
´
`
˙’  
kh´ac l`a chung cua hai d¯oan thˇang nˇam gˆan nhau hoˇac cˇat nhau.  
.
.
20  
Tải về để xem bản đầy đủ
pdf 82 trang yennguyen 25380 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Đồ họa máy tính I (Phần 1) - Phạm Tiến Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_do_hoa_may_tinh_i_phan_1_pham_tien_son.pdf