Tải bản đầy đủ (.pdf) (173 trang)

Lập trình đồ họa máy tính ppsx

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 (1.13 MB, 173 trang )

D
-
ˆ
O
`
HO
.
A M
´
AY T
´
INH I
Pha
.
m Tiˆe
´
n So
.
n
D
-
`a La
.
t, 2005
2
Mu
.
c lu
.
c
L`o


.
i n´oi d¯ˆa
`
u 7
1 C´ac thuˆa
.
t to´an v˜e d¯u
.
`o
.
ng cong trˆen thiˆe
´
t bi
.
raster 9
1.1 D
-
oa
.
n thˇa
˙’
ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1 Thuˆa
.
t to´an sˆo
´
gia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Thuˆa
.
t to´an d¯iˆe

˙’
m gi˜u
.
a . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.3 Mˆo
.
t sˆo
´
vˆa
´
n d¯ˆe
`
liˆen quan d¯ˆe
´
n thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng . . . . . . . . 18
1.1.4 C´ac thuˆo
.
c t´ınh cu
˙’
a d¯oa
.
n thˇa
˙’
ng . . . . . . . . . . . . . . . . . . . . . 21

1.2 D
-
u
.
`o
.
ng tr`on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.1 D
-
ˆo
´
i x´u
.
ng t´am d¯iˆe
˙’
m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2.2 Thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a v˜e d¯u
.
`o
.
ng tr`on . . . . . . . . . . . . . . . . . . 23
1.3 D
-
u

.
`o
.
ng cong ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.3.1 Ellipse c´o da
.
ng ch´ınh tˇa
´
c . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3.2 Ellipse trong tru
.
`o
.
ng ho
.
.
p tˆo
˙’
ng qu´at . . . . . . . . . . . . . . . . . . . 34
2 H`ınh ho
.
c cu
˙’
a c´ac d¯u
.
`o
.
ng cong v`a mˇa
.
t cong 47

2.1 Mo
.
˙’
d¯ˆa
`
u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3
2.2 D
-
u
.
`o
.
ng cong Bezier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Thuˆa
.
t to´an de Casteljau . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 D
-
a th´u
.
c Bernstein v`a d¯u
.
`o
.
ng cong Bezier . . . . . . . . . . . . . . . . 52
2.3 C´ac t´ınh chˆa
´
t cu
˙’

a d¯u
.
`o
.
ng cong Bezier . . . . . . . . . . . . . . . . . . . . . . 55
2.3.1 D
-
iˆe
`
u khiˆe
˙’
n d¯i
.
a phu
.
o
.
ng . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.4 D
-
a th´u
.
c t`u
.
ng kh´uc v`a c´ac h`am spline . . . . . . . . . . . . . . . . . . . . . . 60
2.4.1 Su
.
˙’
du
.

ng c´ac h`am spline nhu
.
c´ac h`am trˆo
.
n . . . . . . . . . . . . . . . 63
2.4.2 Xˆay du
.
.
ng c´ac h`am trˆo
.
n . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.4.3 D
-
u
.
`o
.
ng 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

.
˙’
du
.
ng c´ac knot bˆo
.
i . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.4.6 Vector knot chuˆa
˙’
n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.5 C´ac t´ınh chˆa
´
t cu
˙’
a d¯u
.
`o
.
ng cong B-spline . . . . . . . . . . . . . . . . . . . . . 75
2.6 Nˆo
.
i suy c´ac d¯iˆe
˙’
m d¯iˆe
`
u khiˆe
˙’
n bˇa
`
ng d¯u

.
`o
.
ng cong B-spline . . . . . . . . . . . . 77
2.7 Thiˆe
´
t kˆe
´
c´ac mˇa
.
t 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 cu
˙’
a c´ac d¯ˆo
´
i tu
.
o
.
.
ng 83
3.1 Mo
.
˙’
d¯ˆa
`
u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.2 Giao cu
˙’
a hai d¯oa
.
n thˇa
˙’
ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.2.1 Phˆan t´ıch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4
3.2.2 Thuˆa
.
t to´an x´ac d¯i
.
nh giao hai d¯oa
.
n thˇa
˙’
ng . . . . . . . . . . . . . . . . 86
3.3 D
-
oa
.
n thˇa
˙’
ng v`a h`ınh ch˜u
.
nhˆa
.
t . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.3.1 T`ım giao bˇa

`
ng c´ach gia
˙’
i hˆe
.
c´ac phu
.
o
.
ng tr`ınh . . . . . . . . . . . . . . 89
3.3.2 Thuˆa
.
t to´an chia nhi
.
phˆan . . . . . . . . . . . . . . . . . . . . . . . . 89
3.3.3 Thuˆa
.
t to´an Cohen-Sutherland . . . . . . . . . . . . . . . . . . . . . . 93
3.3.4 Thuˆa
.
t to´an Liang-Barsky . . . . . . . . . . . . . . . . . . . . . . . . 97
3.4 Giao cu
˙’
a d¯oa
.
n thˇa
˙’
ng v`a d¯a gi´ac lˆo
`
i . . . . . . . . . . . . . . . . . . . . . . . 100

3.4.1 Vi
.
tr´ı tu
.
o
.
ng d¯ˆo
´
i cu
˙’
a mˆo
.
t d¯iˆe
˙’
m v´o
.
i d¯u
.
`o
.
ng thˇa
˙’
ng . . . . . . . . . . . . 100
3.4.2 Thuˆa
.
t to´an t`ım giao cu
˙’
a d¯oa
.
n thˇa

˙’
ng v`a d¯a gi´ac lˆo
`
i . . . . . . . . . . 102
3.5 Giao hai d¯a gi´ac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.5.1 Thuˆa
.
t to´an Sutherland-Hodgman . . . . . . . . . . . . . . . . . . . . 108
3.5.2 Thuˆa
.
t to´an Weiler-Atherton . . . . . . . . . . . . . . . . . . . . . . . 111
3.5.3 C´ac ph´ep to´an tˆa
.
p ho
.
.
p trˆen c´ac d¯a gi´ac . . . . . . . . . . . . . . . . 113
3.6 Ray tracing hai chiˆe
`
u: pha
˙’
n xa
.
trong buˆo
`
ng k´ın . . . . . . . . . . . . . . . . 114
3.6.1 Vector pha
˙’
n xa
.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.6.2 Giao cu
˙’
a tia s´ang v`a d¯u
.
`o
.
ng thˇa
˙’
ng . . . . . . . . . . . . . . . . . . . 117
3.6.3 Giao cu
˙’
a tia s´ang v´o
.
i d¯u
.
`o
.
ng tr`on . . . . . . . . . . . . . . . . . . . . 121
3.6.4 Xˆay du
.
.
ng v´ı du
.
ray tracing . . . . . . . . . . . . . . . . . . . . . . . 124
3.6.5 Buˆo
`
ng k´ın l`a ellipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4 Tˆo m`au v`ung 127
4.1 C´ac d¯i

.
nh ngh˜ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.1.1 V`ung d¯i
.
nh ngh˜ıa bo
.
˙’
i pixel . . . . . . . . . . . . . . . . . . . . . . . . 127
5
4.1.2 V`ung d¯i
.
nh ngh˜ıa bo
.
˙’
i d¯a gi´ac . . . . . . . . . . . . . . . . . . . . . . . 129
4.2 Thuˆa
.
t to´an tˆo m`au theo vˆe
´
t dˆa
`
u loang . . . . . . . . . . . . . . . . . . . . . 129
4.3 Thuˆa
.
t to´an tˆo m`au theo con cha
.
y . . . . . . . . . . . . . . . . . . . . . . . . 131
4.4 Thuˆa
.
t to´an tˆo m`au theo biˆen . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4.5 So s´anh c´ac thuˆa
.
t to´an . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.6 Tˆo m`au c´ac h`ınh ch˜u
.
nhˆa
.
t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.7 Thuˆa
.
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 ma
˙’
nh vu
.
n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.7.3 Liˆen kˆe
´
t ca
.
nh v`a thuˆa
.
t to´an tr`an . . . . . . . . . . . . . . . . . . . . 151
4.7.4 Tˆo m`au c´ac d¯a gi´ac chˆo
`
ng nhau . . . . . . . . . . . . . . . . . . . . . 158
4.8 Tˆo m`au theo mˆa
˜
u tˆo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Phˆa
`
n phu
.
lu
.
c: Thu
.
viˆe
.
n graph2D.h 163
T`ai liˆe
.
u tham kha
˙’
o 171
6
L`o
.
i n´oi d¯ˆa
`
u
D
-
ˆo
`
ho
.
a m´ay t´ınh l`a mˆo
.

t l˜ınh vu
.
.
c hˆa
´
p dˆa
˜
n cu
˙’
a khoa ho
.
c m´ay t´ınh. Ch´ung ta su
.
˙’
du
.
ng d¯ˆo
`
ho
.
a
m´ay t´ınh nhu
.
mˆo
.
t cˆong cu
.
d¯ˆe
˙’
quan s´at thˆong tin trong nhiˆe

`
u l˜ınh vu
.
.
c kh´ac nhau, bao gˆo
`
m
khoa ho
.
c v`a cˆong nghˆe
.
, ho´a ho
.
c, kiˆe
´
n tr´uc v`a gia
˙’
i tr´ı. C´ac chu
.
o
.
ng tr`ınh d¯ˆo
`
ho
.
a tu
.
o
.
ng t´ac

cho ph´ep ngu
.
`o
.
i su
.
˙’
du
.
ng l`am viˆe
.
c theo c´ach tu
.
.
nhiˆen nhˆa
´
t: ngu
.
`o
.
i su
.
˙’
du
.
ng cung cˆa
´
p thˆong
tin cho tr`ınh ´u
.

ng du
.
ng thˆong qua c´ac hoa
.
t d¯ˆo
.
ng bˆen ngo`ai cu
˙’
a ho
.
v`a s˜e nhˆa
.
n d¯u
.
o
.
.
c thˆong
tin tro
.
˙’
la
.
i bˇa
`
ng h`ınh a
˙’
nh. D
-
ˆo

`
ho
.
a m´ay t´ınh d¯ang gi´up con ngu
.
`o
.
i thay d¯ˆo
˙’
i vˆe
`
quan niˆe
.
m v`a
c´ach th´u
.
c su
.
˙’
du
.
ng m´ay t´ınh.
Gi´ao tr`ınh D
-
ˆo
`
ho
.
a m´ay t´ınh I cung cˆa
´

p mˆo
.
t sˆo
´
k˜y thuˆa
.
t co
.
ba
˙’
n cu
˙’
a d¯ˆo
`
ho
.
a m´ay t´ınh
hai chiˆe
`
u. (D
-
ˆo
`
ho
.
a m´ay t´ınh ba chiˆe
`
u, mˆo
.
t phˆa

`
n quan tro
.
ng khˆong thˆe
˙’
thiˆe
´
u d¯u
.
o
.
.
c s˜e d¯u
.
o
.
.
c
d¯ˆe
`
cˆa
.
p trong mˆo
.
t gi´ao tr`ınh kh´ac). D
-
ˆe
˙’
c´o mˆo
.

t khung ca
˙’
nh to`an diˆe
.
n v`a sˆau sˇa
´
c vˆe
`
nh˜u
.
ng
nguyˆen l´y v`a thu
.
.
c h`anh cu
˙’
a d¯ˆo
`
ho
.
a m´ay t´ınh, xem c´ac t`ai liˆe
.
u dˆa
˜
n [9] v`a [11]. C´ac phu
.
o
.
ng
ph´ap phˆan t´ıch v`a thiˆe

´
t kˆe
´
c´ac thuˆa
.
t to´an trong gi´ao tr`ınh cho ph´ep sinh viˆen c´o thˆe
˙’
viˆe
´
t
dˆe
˜
d`ang c´ac chu
.
o
.
ng tr`ınh minh ho
.
a. Gi´ao tr`ınh d¯u
.
o
.
.
c biˆen soa
.
n cho c´ac d¯ˆo
´
i tu
.
o

.
.
ng l`a sinh
viˆen To´an-Tin v`a Tin ho
.
c.
Gi´ao tr`ınh su
.
˙’
du
.
ng ngˆon ng˜u
.
C d¯ˆe
˙’
minh ho
.
a, tuy nhiˆen c´o thˆe
˙’
dˆe
˜
d`ang chuyˆe
˙’
n d¯ˆo
˙’
i
sang c´ac ngˆon ng˜u
.
kh´ac; v`a do d¯´o, sinh viˆen cˆa
`

n c´o mˆo
.
t sˆo
´
kiˆe
´
n th´u
.
c vˆe
`
ngˆon ng˜u
.
C. Ngo`ai
ra, hˆa
`
u hˆe
´
t c´ac chu
.
o
.
ng tr`ınh thao t´ac trˆen cˆa
´
u tr´uc d˜u
.
liˆe
.
u nhu
.
danh s´ach liˆen kˆe

´
t, nˆen d¯`oi
ho
˙’
i sinh viˆen pha
˙’
i c´o nh˜u
.
ng k˜y nˇang lˆa
.
p tr`ınh tˆo
´
t.
Sinh viˆen c˜ung cˆa
`
n c´o co
.
so
.
˙’
to´an ho
.
c cu
˙’
a nh˜u
.
ng nˇam d¯ˆa
`
u d¯a
.

i ho
.
c: hiˆe
˙’
u biˆe
´
t vˆe
`
d¯a
.
i sˆo
´
tuyˆe
´
n t´ınh v`a h`ınh ho
.
c gia
˙’
i t´ıch, ph´ep t´ınh vi t´ıch phˆan.
Mu
.
c d¯´ıch cu
˙’
a gi´ao tr`ınh l`a, o
.
˙’
m´u
.
c d¯ˆo
.

n`ao d¯´o, cho thˆa
´
y c´ac tr`ınh ´u
.
ng du
.
ng d¯ˆo
`
ho
.
a
d¯u
.
o
.
.
c ta
.
o ra nhu
.
thˆe
´
n`ao: Ch´ung ta cˆa
`
n viˆe
´
t v`a cha
.
y thu
.

˙’
c´ac chu
.
o
.
ng tr`ınh. Mˆo
.
t trong
nh˜u
.
ng mu
.
c d¯´ıch ch´ınh cu
˙’
a gi´ao tr`ınh l`a gi´up sinh viˆen nˇa
´
m v˜u
.
ng c´ac phu
.
o
.
ng ph´ap, tru
.
´o
.
c
hˆe
´
t to´an ho

.
c ho´a c´ac kh´ac niˆe
.
m h`ınh ho
.
c v`a sau d¯´o chuyˆe
˙’
n ta
˙’
i th`anh c´ac d¯oa
.
n m˜a chu
.
o
.
ng
tr`ınh.
7
Gi´ao tr`ınh bao gˆo
`
m bˆo
´
n chu
.
o
.
ng v`a mˆo
.
t phˆa
`

n phu
.
lu
.
c v´o
.
i nh˜u
.
ng nˆo
.
i dung ch´ınh nhu
.
sau:
• Chu
.
o
.
ng th´u
.
nhˆa
´
t d¯ˆe
`
cˆa
.
p d¯ˆe
´
n c´ac phu
.
o

.
ng ph´ap v˜e c´ac “nguyˆen so
.
” cu
˙’
a d¯ˆo
`
ho
.
a m´ay
t´ınh: d¯oa
.
n thˇa
˙’
ng, d¯u
.
`o
.
ng tr`on v`a ellipse.
• Phˆan t´ıch v`a thiˆe
´
t kˆe
´
bˇa
`
ng h`ınh ho
.
c l`a nˆo
.
i dung ch´ınh cu

˙’
a Chu
.
o
.
ng 2. Hˆa
`
u hˆe
´
t c´ac
phˆa
`
n mˆe
`
m d¯ˆo
`
ho
.
a d¯ˆe
`
u c´o nh˜u
.
ng ch´u
.
c nˇang ta
.
o ra c´ac d¯u
.
`o
.

ng cong du
.
.
a trˆen c´ac d¯iˆe
˙’
m
m`a ngu
.
`o
.
i su
.
˙’
du
.
ng lu
.
.
a cho
.
n. Chu
.
o
.
ng n`ay cung cˆa
´
p nh˜u
.
ng nguyˆen l´y v`a c´ach tiˆe
´

p cˆa
.
n
thu
.
.
c h`anh m`a c´ac tr`ınh ´u
.
ng du
.
ng d¯ˆo
`
ho
.
a ´ap du
.
ng.
• Chu
.
o
.
ng 3 gia
˙’
i quyˆe
´
t b`ai to´an x´ac d¯i
.
nh giao cu
˙’
a nh˜u

.
ng nguyˆen so
.
d¯ˆo
`
ho
.
a: Giao hai
d¯oa
.
n thˇa
˙’
ng, giao cu
˙’
a d¯oa
.
n thˇa
˙’
ng v`a d¯a gi´ac lˆo
`
i (bao h`am c´ac h`ınh ch˜u
.
nhˆa
.
t) v`a giao
cu
˙’
a hai d¯a gi´ac. Cuˆo
´
i chu

.
o
.
ng l`a mˆo
.
t v´ı du
.
cu
˙’
a k˜y thuˆa
.
t “ray tracing” hai chiˆe
`
u:
Chuyˆe
˙’
n d¯ˆo
.
ng cu
˙’
a tia s´ang trong buˆo
`
ng k´ın c´o ch´u
.
a c´ac “chu
.
´o
.
ng nga
.

i vˆa
.
t”.
• Chu
.
o
.
ng 4 d¯ˆe
`
cˆa
.
p d¯ˆe
´
n nh˜u
.
ng thuˆa
.
t to´an tˆo m`au v`ung bˆa
´
t k`y: V`ung d¯i
.
nh ngh˜ıa bo
.
˙’
i
phˆa
`
n trong, bo
.
˙’

i d¯u
.
`o
.
ng biˆen v`a v`ung l`a d¯a gi´ac.
• Phˆa
`
n phu
.
lu
.
c l`a thu
.
viˆe
.
n c´ac cˆa
´
u tr´uc d˜u
.
liˆe
.
u v`a c´ac h`am cˆa
`
n thiˆe
´
t v`a thu
.
`o
.
ng xuyˆen

su
.
˙’
du
.
ng trong gi´ao tr`ınh.
Trong lˆa
`
n xuˆa
´
t ba
˙’
n th´u
.
hai n`ay, ch´ung tˆoi d¯u
.
a thˆem c´ac v´ı du
.
t´ınh to´an nhˇa
`
m minh
ho
.
a cho phˆa
`
n l´y thuyˆe
´
t c˜ung nhu
.
gi´up sinh viˆen nˇa

´
m v˜u
.
ng kiˆe
´
n th´u
.
c d¯˜a ho
.
c. Ngo`ai ra, c´ac
lˆo
˜
i trong xuˆa
´
t ba
˙’
n lˆa
`
n tru
.
´o
.
c c˜ung d¯˜a d¯u
.
o
.
.
c chı
˙’
nh l´y; mˇa

.
c d`u vˆa
.
y, t´ac gia
˙’
vˆa
˜
n mong c´o nh˜u
.
ng
d¯´ong g´op t`u
.
ba
.
n d¯o
.
c.
Tˆoi xin ca
˙’
m o
.
n nh˜u
.
ng gi´up d¯˜o
.
d¯˜a nhˆa
.
n d¯u
.
o

.
.
c t`u
.
nhiˆe
`
u ngu
.
`o
.
i m`a khˆong thˆe
˙’
liˆe
.
t kˆe
hˆe
´
t, d¯ˇa
.
c biˆe
.
t l`a c´ac ba
.
n sinh viˆen, trong qu´a tr`ınh biˆen soa
.
n gi´ao tr`ınh n`ay.
D
-
`a La
.

t, ng`ay 10 th´ang 1 nˇam 2005
PHA
.
M Tiˆe
´
n So
.
n
8
Chu
.
o
.
ng 1
C´ac thuˆa
.
t to´an v˜e d¯u
.
`o
.
ng cong trˆen
thiˆe
´
t bi
.
raster
Chu
.
o
.

ng n`ay tr`ınh b`ay c´ac thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng, d¯u
.
`o
.
ng tr`on v`a ellipse trˆen lattice
nguyˆen Z
2
. C´ac thuˆa
.
t to´an chı
˙’
thao t´ac trˆen nh˜u
.
ng sˆo
´
nguyˆen v`a trong c´ac v`ong lˇa
.
p chı
˙’
su
.
˙’
du
.

ng ph´ep to´an cˆo
.
ng nˆen rˆa
´
t hiˆe
.
u qua
˙’
.
1.1 D
-
oa
.
n thˇa
˙’
ng
Thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng x´ac d¯i
.
nh to
.
a d¯ˆo
.
cu
˙’

a c´ac pixel nˇa
`
m trˆen hoˇa
.
c gˆa
`
n v´o
.
i d¯oa
.
n thˇa
˙’
ng
thu
.
.
c tˆe
´
nhˆa
´
t. Vˆe
`
nguyˆen tˇa
´
c, ch´ung ta muˆo
´
n cho
.
n d˜ay c´ac pixel gˆa
`

n v´o
.
i d¯oa
.
n thˇa
˙’
ng thu
.
.
c tˆe
´
nhˆa
´
t v`a thˇa
˙’
ng nhˆa
´
t. X´et d¯oa
.
n thˇa
˙’
ng thu
.
.
c tˆe
´
d¯u
.
o
.

.
c xˆa
´
p xı
˙’
v´o
.
i mˆa
.
t d¯ˆo
.
mˆo
.
t pixel; ta cˆa
`
n c´o
nh˜u
.
ng t´ınh chˆa
´
t g`ı? V´o
.
i c´ac d¯oa
.
n thˇa
˙’
ng c´o hˆe
.
sˆo
´

g´oc thuˆo
.
c d¯oa
.
n [−1, 1], c´o d¯´ung mˆo
.
t pixel
d¯u
.
o
.
.
c v˜e lˆen trˆen mˆo
˜
i cˆo
.
t; v´o
.
i c´ac d¯oa
.
n thˇa
˙’
ng m`a hˆe
.
sˆo
´
g´oc nˇa
`
m ngo`ai d¯oa
.

n n`ay, c´o d¯´ung
mˆo
.
t pixel d¯u
.
o
.
.
c v˜e trˆen mˆo
˜
i h`ang. Tˆa
´
t ca
˙’
c´ac d¯oa
.
n thˇa
˙’
ng d¯u
.
o
.
.
c v˜e v´o
.
i c`ung mˆo
.
t d¯ˆo
.
s´ang,

khˆong phu
.
thuˆo
.
c v`ao d¯ˆo
.
d`ai v`a hu
.
´o
.
ng, v`a nhanh nhˆa
´
t c´o thˆe
˙’
d¯u
.
o
.
.
c. Thuˆa
.
t to´an v˜e d¯oa
.
n
thˇa
˙’
ng c˜ung cˆa
`
n ch ´u ´y d¯ˆe
´

n c´ac thuˆo
.
c t´ınh cu
˙’
a d¯oa
.
n thˇa
˙’
ng nhu
.
d¯ˆo
.
rˆo
.
ng, kiˆe
˙’
u v˜e Thˆa
.
m ch´ı
ch´ung ta muˆo
´
n cu
.
.
c tiˆe
˙’
u ho´a m´u
.
c d¯ˆo
.

rˇang cu
.
a do tiˆe
´
n tr`ınh r`o
.
i ra
.
c ho´a d¯u
.
`o
.
ng thˇa
˙’
ng thu
.
.
c
tˆe
´
nh`o
.
su
.
˙’
du
.
ng k˜y thuˆa
.
t antialiasing (xem [9], [11]) bˇa

`
ng c´ach ´ap du
.
ng kha
˙’
nˇang d¯ˇa
.
t cu
.
`o
.
ng
d¯ˆo
.
cu
˙’
a mˆo
˜
i pixel trˆen c´ac thiˆe
´
t bi
.
hiˆe
˙’
n thi
.
m`a mˆo
.
t pixel tu
.

o
.
ng ´u
.
ng nhiˆe
`
u bit.
Tru
.
´o
.
c hˆe
´
t ch´ung ta chı
˙’
d¯ˆe
`
cˆa
.
p d¯ˆe
´
n c´ac d¯oa
.
n thˇa
˙’
ng d¯ˆo
.
rˆo
.
ng mˆo

.
t pixel v`a c´o d¯´ung mˆo
.
t
pixel trˆen mˆo
˜
i cˆo
.
t (hoˇa
.
c h`ang d¯ˆo
´
i v´o
.
i c´ac d¯oa
.
n thˇa
˙’
ng dˆo
´
c). Phˆa
`
n cuˆo
´
i chu
.
o
.
ng s˜e d¯ˆe
`

cˆa
.
p
9
d¯ˆe
´
n d¯ˆo
.
rˆo
.
ng c´ac nguyˆen so
.
v`a c´ac mˆa
˜
u v˜e.
Mˆo
.
t c´ach h`ınh ho
.
c, ch´ung ta biˆe
˙’
u diˆe
˜
n mˆo
.
t pixel nhu
.
mˆo
.
t chˆa

´
m tr`on v´o
.
i tˆam ta
.
i vi
.
tr´ı (x, y) cu
˙’
a pixel trˆen lu
.
´o
.
i c´ac to
.
a d¯ˆo
.
nguyˆen Z
2
. Biˆe
˙’
u diˆe
˜
n n`ay l`a mˆo
.
t xˆa
´
p xı
˙’
th´ıch ho

.
.
p
nh´at cˇa
´
t ngang trong mˆo
.
t chu k`y cu
˙’
a ch`um tia electron cu
˙’
a CRT; xˆa
´
p xı
˙’
n`ay phu
.
thuˆo
.
c v`ao
khoa
˙’
ng c´ach (tu`y thuˆo
.
c v`ao hˆe
.
thˆo
´
ng) gi˜u
.

a c´ac vˆe
´
t trˆen m`an h`ınh hiˆe
˙’
n thi
.
. Trong mˆo
.
t sˆo
´
hˆe
.
thˆo
´
ng, c´ac chˆa
´
m kˆe
`
nhau phu
˙’
lˆa
´
p mˆo
.
t phˆa
`
n lˆen nhau; v´o
.
i nh˜u
.

ng hˆe
.
thˆo
´
ng kh´ac c´o nh˜u
.
ng
khoa
˙’
ng c´ach gi˜u
.
a c´ac pixel d¯´u
.
ng kˆe
`
nhau; trong hˆa
`
u hˆe
´
t c´ac hˆe
.
thˆo
´
ng, khoa
˙’
ng c´ach theo
chiˆe
`
u ngang nho
˙’

ho
.
n theo chiˆe
`
u d¯´u
.
ng. Mˆo
.
t kh´ac biˆe
.
t n˜u
.
a tu`y theo hˆe
.
thˆo
´
ng trong viˆe
.
c biˆe
˙’
u
diˆe
˜
n hˆe
.
to
.
a d¯ˆo
.
, chˇa

˙’
ng ha
.
n Macintosh xem c´ac pixel d¯u
.
o
.
.
c d¯ˇa
.
t ta
.
i tˆam cu
˙’
a h`ınh ch˜u
.
nhˆa
.
t
gi˜u
.
a c´ac d¯u
.
`o
.
ng thˇa
˙’
ng kˆe
`
nhau cu

˙’
a lu
.
´o
.
i d¯iˆe
`
u khiˆe
˙’
n thay cho nˇa
`
m trˆen c´ac d¯u
.
`o
.
ng thˇa
˙’
ng cu
˙’
a
lu
.
´o
.
i. Theo c´ach n`ay, c´ac h`ınh ch˜u
.
nhˆa
.
t (x´ac d¯i
.

nh bo
.
˙’
i hai g´oc) gˆo
`
m c´ac pixel thuˆo
.
c phˆa
`
n
trong cu
˙’
a n´o. D
-
i
.
nh ngh˜ıa n`ay cho ph´ep c´ac v`ung d¯ˆo
.
rˆo
.
ng bˇa
`
ng khˆong: H`ınh ch˜u
.
nhˆa
.
t t`u
.
(x, y) d¯ˆe
´

n (x, y) khˆong ch´u
.
a pixel n`ao, trong khi v´o
.
i nh˜u
.
ng hˆe
.
thˆo
´
ng kh´ac, c´o d¯´ung mˆo
.
t
pixel ta
.
i d¯iˆe
˙’
m n`ay. Du
.
´o
.
i d¯ˆay ch´ung ta s˜e biˆe
˙’
u diˆe
˜
n c´ac pixel nhu
.
c´ac h`ınh tr`on r`o
.
i nhau c´o

tˆam nˇa
`
m trˆen lu
.
´o
.
i.
H`ınh 1.1 l`a ph´ong to cu
˙’
a d¯u
.
`o
.
ng thˇa
˙’
ng thu
.
.
c tˆe
´
v`a xˆa
´
p xı
˙’
d¯ˆo
.
rˆo
.
ng mˆo
.

t pixel cu
˙’
a n´o.
C´ac pixel d¯u
.
o
.
.
c v˜e tu
.
o
.
ng ´u
.
ng c´ac h`ınh tr`on m`au d¯en v`a c´ac pixel khˆong d¯u
.
o
.
.
c v˜e tu
.
o
.
ng ´u
.
ng
h`ınh tr`on khˆong tˆo. Trˆen m`an h`ınh thu
.
.
c tˆe

´
, d¯u
.
`o
.
ng k´ınh cu
˙’
a h`ınh tr`on biˆe
˙’
u diˆe
˜
n pixel l´o
.
n
ho
.
n khoa
˙’
ng c´ach gi˜u
.
a c´ac pixel kˆe
`
nhau, bo
.
˙’
i vˆa
.
y biˆe
˙’
u diˆe

˜
n bˇa
`
ng k´y hiˆe
.
u cu
˙’
a ch´ung ta l`a
mˆo
.
t ph´ong d¯a
.
i m´u
.
c d¯ˆo
.
r`o
.
i ra
.
c cu
˙’
a c´ac pixel.




.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
✐ ✐ ✐ ✐ ✐
✐ ✐ ✐ ✐ ✐
✐ ✐ ✐ ✐ ✐
✐ ✐ ✐ ✐ ✐
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


② ②
② ②
H`ınh 1.1: D
-
oa
.
n thˇa
˙’
ng xˆa
´
p xı
˙’
d¯u
.
o
.
.
c biˆe
˙’
u diˆe
˜
n bo
.
˙’
i c´ac h`ınh tr`on d¯en.
V`ı c´ac nguyˆen so
.
trong hˆe
.
thˆo

´
ng ch´ung ta x´ac d¯i
.
nh trˆen lu
.
´o
.
i d¯iˆe
`
u khiˆe
˙’
n nguyˆen nˆen
c´ac to
.
a d¯ˆo
.
d¯ˆa
`
u cuˆo
´
i cu
˙’
a d¯oa
.
n thˇa
˙’
ng l`a nguyˆen. Thˆa
.
t ra, nˆe
´

u ch´ung ta cˇa
´
t d¯oa
.
n thˇa
˙’
ng v´o
.
i
h`ınh ch˜u
.
nhˆa
.
t tru
.
´o
.
c khi hiˆe
˙’
n thi
.
n´o th`ı to
.
a d¯ˆo
.
c´ac d¯iˆe
˙’
m d¯ˆa
`
u cuˆo

´
i cu
˙’
a d¯oa
.
n thˇa
˙’
ng c´o thˆe
˙’
khˆong nguyˆen. (Ch´ung ta s˜e tha
˙’
o luˆa
.
n c´ac giao d¯iˆe
˙’
m khˆong nguyˆen trong Phˆa
`
n 1.1.3). Gia
˙’
10
su
.
˙’
d¯oa
.
n thˇa
˙’
ng c´o hˆe
.
sˆo

´
g´oc |m| ≤ 1; c´ac tru
.
`o
.
ng ho
.
.
p kh´ac d¯u
.
o
.
.
c xu
.
˙’
l´y tu
.
o
.
ng tu
.
.
. Ho
.
n n˜u
.
a
tru
.

`o
.
ng ho
.
.
p c´ac d¯oa
.
n thˇa
˙’
ng ngang, d¯´u
.
ng hoˇa
.
c c´o hˆe
.
sˆo
´
g´oc ±1 l`a tˆa
`
m thu
.
`o
.
ng v`ı ch´ung chı
˙’
d¯i qua c´ac pixel trˆen lu
.
´o
.
i.

1.1.1 Thuˆa
.
t to´an sˆo
´
gia
X´et hai pixel A = (x
A
, y
A
) v`a B = (x
B
, y
B
) (t´uc c´ac phˆa
`
n tu
.
˙’
cu
˙’
a lattice nguyˆen Z
2
). Phu
.
o
.
ng
tr`ınh d¯u
.
`o

.
ng thˇa
˙’
ng AB c´o da
.
ng y = mx +t, trong d¯´o hˆe
.
sˆo
´
g´oc m = dy/dx v`a t = y
A
−mx
A
.
C´ach d¯o
.
n gia
˙’
n nhˆa
´
t d¯ˆe
˙’
v˜e d¯oa
.
n thˇa
˙’
ng AB l`a:
1. T´ınh hˆe
.
sˆo

´
g´oc m;
2. Tˇang x mˆo
.
t d¯o
.
n vi
.
(kho
.
˙’
i d¯ˆa
`
u t`u
.
d¯iˆe
˙’
m bˆen tr´ai nhˆa
´
t), v´o
.
i mˆo
˜
i x
i
t´ınh y
i
= mx
i
+ t v`a

sau d¯´o v˜e pixel ta
.
i (x
i
, y
i
+ 0.5)
1
.
Theo c´ach n`ay ta cho
.
n pixel tˆo
´
t nhˆa
´
t, t´u
.
c l`a pixel m`a khoa
˙’
ng c´ach d¯ˆe
´
n d¯u
.
`o
.
ng thˇa
˙’
ng thu
.
.

c
tˆe
´
nho
˙’
nhˆa
´
t. Phu
.
o
.
ng ph´ap n`ay khˆong hiˆe
.
u qua
˙’
do mˆo
˜
i bu
.
´o
.
c lˇa
.
p cˆa
`
n t´ınh mˆo
.
t ph´ep nhˆan,
mˆo
.

t ph´ep cˆo
.
ng v`a mˆo
.
t ph´ep to´an l`am tr`on. Ta c´o thˆe
˙’
khu
.
˙’
ph´ep nhˆan bˇa
`
ng c´ach ch´u ´y rˇa
`
ng
y
i+1
= mx
i+1
+ t
= m(x
i
+ ∆x) + t
= y
i
+ m∆x,
v`a nˆe
´
u bu
.
´o

.
c tˇang ∆x = 1 th`ı y
i+1
= y
i
+ m.
Do d¯´o nˆe
´
u x tˇang mˆo
.
t d¯o
.
n vi
.
th`ı y tˇang m d¯o
.
n vi
.
. V´o
.
i mo
.
i d¯iˆe
˙’
m (x
i
, y
i
) trˆen d¯oa
.

n
thˇa
˙’
ng ta biˆe
´
t rˇa
`
ng nˆe
´
u x
i+1
= x
i
+ 1 th`ı y
i+1
= y
i
+ m; t´u
.
c l`a, c´ac gi´a tri
.
x v`a y d¯u
.
o
.
.
c t´ınh
theo c´ac gi´a tri
.
tru

.
´o
.
c d¯´o cu
˙’
a n´o (xem H`ınh 1.2). D
-
ˆay ch´ınh l`a “thuˆa
.
t to´an sˆo
´
gia”: v´o
.
i mˆo
˜
i
bu
.
´o
.
c lˇa
.
p ta thu
.
.
c hiˆe
.
n c´ac ph´ep to´an sˆo
´
gia du

.
.
a trˆen bu
.
´o
.
c tru
.
´o
.
c.
Kho
.
˙’
i ta
.
o ta g´an (x
0
, y
0
) l`a to
.
a d¯ˆo
.
nguyˆen cu
˙’
a d¯iˆe
˙’
m xuˆa
´

t ph´at, chˇa
˙’
ng ha
.
n A. Ch´u ´y
rˇa
`
ng trong tru
.
`o
.
ng ho
.
.
p |m| > 1 nˆe
´
u x tˇang mˆo
.
t d¯o
.
n vi
.
th`ı y tˇang ho
.
n mˆo
.
t d¯o
.
n vi
.

. Do d¯´o
cˆa
`
n ho´an d¯ˆo
˙’
i vai tr`o cu
˙’
a x v`a y bˇa
`
ng c´ach g´an bu
.
´o
.
c tˇang mˆo
.
t d¯o
.
n vi
.
cho y v`a tˇang x mˆo
.
t
lu
.
o
.
.
ng ∆x =
∆y
m

=
1
m
.
1
K´y hiˆe
.
u [x], x v`a x tu
.
o
.
ng ´u
.
ng l`a phˆa
`
n nguyˆen, l`am tr`on xuˆo
´
ng v`a l`am tr`on lˆen cu
˙’
a x.
11
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.



(x
i

, y
i
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
(x
i
, y
i
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(x
i
+ 1, y
i
+ m)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(x
i
+ 1, y
i
+ m)
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
D
-
u
.
`o
.
ng thˇa
˙’
ng
thu
.
.
c tˆe
´

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

✇ ✇


H`ınh 1.2: T´ınh to´an sˆo
´
gia cu
˙’
a (x
i
, y
i
).
V´ı du
.
1.1.1 Gia
˙’
su
.
˙’
A(2, 0), B(9, 3). Khi d¯´o d¯u
.
`o
.
ng thˇa
˙’
ng qua hai d¯iˆe
˙’
m A v`a B c´o hˆe
.
sˆo
´
g´oc m =

3
7
∈ (0, 1).
´
Ap du
.
ng thuˆa
.
t to´an sˆo
´
gia ta d¯u
.
o
.
.
c d˜ay c´ac d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´
t nhu
.
trong
ba
˙’
ng du
.
´o
.

i:
i x
i
y
i
y
i
+ 0.5
0 2 0 0
1 3
3
7
0
2 4
6
7
1
3 5
9
7
1
4 6
12
7
2
5 7
15
7
2
6 8

18
7
3
7 9
21
7
3
Thu
˙’
tu
.
c Line() du
.
´o
.
i d¯ˆay minh ho
.
a thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng t`u
.
(x
0
, y
0
) d¯ˆe

´
n (x
1
, y
1
)
v´o
.
i gi´a tri
.
m`au V alue. D
-
iˆe
˙’
m kho
.
˙’
i d¯ˆa
`
u l`a d¯iˆe
˙’
m bˆen tr´ai nhˆa
´
t. Ngo`ai ra ta chı
˙’
x´et tru
.
`o
.
ng ho

.
.
p
−1 ≤ m ≤ 1 v`ı c´ac tru
.
`o
.
ng ho
.
.
p kh´ac c´o thˆe
˙’
thu
.
.
c hiˆe
.
n do t´ınh d¯ˆo
´
i x´u
.
ng. Ho
.
n n˜u
.
a, ch´ung ta
c˜ung bo
˙’
qua viˆe
.

c kiˆe
˙’
m tra c´ac tru
.
`o
.
ng ho
.
.
p d¯ˇa
.
c biˆe
.
t: d¯u
.
`o
.
ng thˇa
˙’
ng nˇa
`
m ngang, d¯´u
.
ng, xiˆen
mˆo
.
t g´oc ±45
0
. Ch´u ´y rˇa
`

ng, trong ngˆon ng˜u
.
C, (int)y bˇa
`
ng y + 0.5.
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ˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a
Thu
˙’

tu
.
c Line() thao t´ac trˆen c´ac sˆo
´
thu
.
.
c y v`a m. Bresenham d¯˜a xˆay du
.
.
ng thuˆa
.
t to´an [2] v˜e
d¯oa
.
n thˇa
˙’
ng chı
˙’
su
.
˙’
du
.
ng c´ac ph´ep to´an trˆen sˆo
´
nguyˆen do d¯´o tr´anh go
.
i h`am l`am tr`on v`a cho
ph´ep x´ac d¯i

.
nh (x
i+1
, y
i+1
) theo sˆo
´
gia du
.
.
a trˆen nh˜u
.
ng gi´a tri
.
o
.
˙’
bu
.
´o
.
c tru
.
´o
.
c (x
i
, y
i
). Thuˆa

.
t
to´an n`ay c´o thˆe
˙’
mo
.
˙’
rˆo
.
ng da
.
ng dˆa
´
u chˆa
´
m d¯ˆo
.
ng d¯ˆo
´
i v´o
.
i c´ac to
.
a d¯ˆo
.
thu
.
.
c. Ho
.

n n˜u
.
a, phu
.
o
.
ng
ph´ap cu
˙’
a Bresenham c´o thˆe
˙’
d¯u
.
o
.
.
c ´ap du
.
ng t´ınh to´an trˆen sˆo
´
nguyˆen v˜e d¯u
.
`o
.
ng tr`on mˇa
.
c d`u
n´o khˆong dˆe
˜
d`ang mo

.
˙’
rˆo
.
ng cho conic tu`y ´y. V`ı vˆa
.
y ch´ung ta su
.
˙’
du
.
ng phu
.
o
.
ng ph´ap tu
.
o
.
ng
d¯ˆo
´
i kh´ac, thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a, d¯u
.

o
.
.
c cˆong bˆo
´
lˆa
`
n d¯ˆa
`
u tiˆen bo
.
˙’
i Pitteway [16], [17] v`a d¯u
.
o
.
.
c
ca
˙’
i tiˆe
´
n bo
.
˙’
i Van Aken [26] v`a mˆo
.
t sˆo
´
t´ac gia

˙’
kh´ac [28], [29]. Van Aken d¯˜a chı
˙’
ra [26] d¯ˆo
´
i v´o
.
i
c´ac d¯u
.
`o
.
ng thˇa
˙’
ng v`a d¯u
.
`o
.
ng tr`on v´o
.
i d˜u
.
liˆe
.
u nguyˆen, cˆong th´u
.
c d¯iˆe
˙’
m gi˜u
.

a suy ra cˆong th´u
.
c
cu
˙’
a Bresenham v`a do d¯´o sinh ra c`ung d˜ay c´ac pixel.
Khˆong mˆa
´
t t´ınh tˆo
˙’
ng qu´at, gia
˙’
su
.
˙’
hˆe
.
sˆo
´
g´oc m cu
˙’
a d¯u
.
`o
.
ng thˇa
˙’
ng thuˆo
.
c khoa

˙’
ng (0, 1)
(c´ac tru
.
`o
.
ng ho
.
.
p kh´ac c´o thˆe
˙’
d¯u
.
o
.
.
c xu
.
˙’
l´y bo
.
˙’
i c´ac ph´ep lˆa
´
y d¯ˆo
´
i x´u
.
ng mˆo
.

t c´ach th´ıch ho
.
.
p qua
c´ac tru
.
c to
.
a d¯ˆo
.
). Ta c˜ung k´y hiˆe
.
u d¯iˆe
˙’
m xuˆa
´
t ph´at l`a (x
A
, y
A
) v`a d¯iˆe
˙’
m kˆe
´
t th´uc l`a (x
B
, y
B
).
D

-
ˇa
.
t dy := y
B
− y
A
, dx = x
B
− x
A
. Phu
.
o
.
ng tr`ınh d¯u
.
`o
.
ng thˇa
˙’
ng l qua hai d¯iˆe
˙’
m A v`a B x´ac
d¯i
.
nh bo
.
˙’
i

y =
dy
dx
x + t;
13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

(l

)
(l
+
)

M
Q

C

R

D
l
H`ınh 1.3: Lu
.
´o
.
i c´ac pixel v`a vi
.
tr´ı d¯iˆe
˙’
m C, R, D, Q v`a M.
hay tu
.
o
.
ng d¯u
.
o
.
ng
f(x, y) := ax + by + c = 0,
trong d¯´o a = dy, b = −dx, v`a c = b × dx. K´y hiˆe
.

u c´ac nu
.
˙’
a mˇa
.
t phˇa
˙’
ng ngo`ai v`a nu
.
˙’
a mˇa
.
t
phˇa
˙’
ng trong x´ac d¯i
.
nh bo
.
˙’
i l tu
.
o
.
ng ´u
.
ng bo
.
˙’
i

(l
+
) := {(x, y) ∈ R
2
| f(x, y) > 0},
(l

) := {(x, y) ∈ R
2
| f(x, y) < 0}.
´
Y tu
.
o
.
˙’
ng cu
˙’
a thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a l`a xˆay du
.
.
ng mˆo
.
t d˜ay c´ac d¯iˆe

˙’
m v˜e “tˆo
´
t nhˆa
´
t” (x
i
, y
i
)
bˇa
´
t d¯ˆa
`
u t`u
.
d¯iˆe
˙’
m (x
0
, y
0
) = (x
A
, y
A
). Kh´ai niˆe
.
m tˆo
´

t nhˆa
´
t o
.
˙’
d¯ˆay l`a nh˜u
.
ng d¯iˆe
˙’
m (x
i
, y
i
) d¯u
.
o
.
.
c
cho
.
n gˆa
`
n v´o
.
i d¯u
.
`o
.
ng thˇa

˙’
ng thu
.
.
c tˆe
´
(da
.
ng liˆen tu
.
c) nhˆa
´
t. Theo gia
˙’
thiˆe
´
t, 0 < m < 1, nˆen khi
x tˇang mˆo
.
t lu
.
o
.
.
ng ∆x th`ı y tˇang khˆong qu´a ∆y = m∆x d¯o
.
n vi
.
.
V`ı vˆa

.
y nˆe
´
u bu
.
´o
.
c th´u
.
i cho
.
n d¯u
.
o
.
.
c d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´
t C := (x
i
, y
i
) th`ı o
.
˙’
bu

.
´o
.
c th´u
.
i + 1
ta s˜e cho
.
n d¯iˆe
˙’
m v˜e (x
i+1
, y
i+1
), trong d¯´o x
i+1
= x
i
+ 1 v`a y
i+1
= y
i
hoˇa
.
c y
i+1
= y
i
+ 1.
N´oi c´ach kh´ac, bu

.
´o
.
c th´u
.
i + 1 ch´ung ta s˜e cho
.
n mˆo
.
t trong hai pixel R := (x
i
+ 1, y
i
) hoˇa
.
c
D := (x
i
+ 1, y
i
+ 1) (xem H`ınh 1.3). K´y hiˆe
.
u Q l`a giao d¯iˆe
˙’
m cu
˙’
a hai d¯u
.
`o
.

ng thˇa
˙’
ng l v`a
x = x
i
+ 1. Theo Bresenham, dˆa
´
u cu
˙’
a biˆe
˙’
u th´u
.
c x´ac d¯i
.
nh bo
.
˙’
i hiˆe
.
u gi˜u
.
a hai khoa
˙’
ng c´ach t`u
.
R v`a D d¯ˆe
´
n Q cho ph´ep x´ac d¯i
.

nh pixel tˆo
´
t nhˆa
´
t o
.
˙’
bu
.
´o
.
c i + 1. Trong thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a,
ta quan s´at vi
.
tr´ı cu
˙’
a d¯iˆe
˙’
m gi ˜u
.
a M v`a c´ac nu
.
˙’
a mˇa

.
t phˇa
˙’
ng x´ac d¯i
.
nh b o
.
˙’
i d¯u
.
`o
.
ng thˇa
˙’
ng l. Dˆe
˜
d`ang chı
˙’
ra rˇa
`
ng, nˆe
´
u M ∈ (l
+
) th`ı pixel D gˆa
`
n v´o
.
i d¯u
.

`o
.
ng thˇa
˙’
ng l ho
.
n; nˆe
´
u M ∈ (l

) th`ı
pixel R gˆa
`
n ho
.
n. D
-
u
.
`o
.
ng thˇa
˙’
ng l c´o thˆe
˙’
d¯i ngang qua M; hoˇa
.
c ca
˙’
hai pixel nˇa

`
m vˆe
`
c`ung
mˆo
.
t nu
.
˙’
a mˇa
.
t phˇa
˙’
ng (l
+
) (hoˇa
.
c (l

)) nhu
.
ng trong bˆa
´
t c´u
.
tru
.
`o
.
ng ho

.
.
p n`ao, ta vˆa
˜
n cho
.
n d¯iˆe
˙’
m
gˆa
`
n v´o
.
i l nhˆa
´
t. Ho
.
n n˜u
.
a, sai sˆo
´
-t´u
.
c l`a khoa
˙’
ng c´ach gi˜u
.
a pixel d¯u
.
o

.
.
c cho
.
n v`a d¯u
.
`o
.
ng thˇa
˙’
ng
thu
.
.
c tˆe
´
l-luˆon luˆon nho
˙’
ho
.
n hoˇa
.
c bˇa
`
ng 1/2.
14
D
-
ˆe
˙’

´ap du
.
ng thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a, chı
˙’
cˆa
`
n t´ınh f (M) = f(x
i
+ 1, y
i
+
1
2
) v`a kiˆe
˙’
m tra
dˆa
´
u cu
˙’
a n´o. Do d¯´o ta d¯i
.
nh ngh˜ıa biˆe
´

n quyˆe
´
t d¯i
.
nh
d
i
:= f(x
i
+ 1, y
i
+
1
2
)
= a(x
i
+ 1) + b(y
i
+
1
2
) + c.
Khi d¯´o
1. Nˆe
´
u d
i
> 0 cho
.

n pixel D;
2. Nˆe
´
u d
i
< 0 cho
.
n pixel R;
3. Nˆe
´
u d
i
= 0 cho
.
n mˆo
.
t trong hai pixel R hoˇa
.
c D, do d¯´o cho
.
n R.
Kˆe
´
tiˆe
´
p ta cˆa
`
n x´ac d¯i
.
nh to

.
a d¯ˆo
.
d¯iˆe
˙’
m gi˜u
.
a M v`a do d¯´o biˆe
´
n quyˆe
´
t d¯i
.
nh d
i+1
o
.
˙’
bu
.
´o
.
c i + 1;
d˜ı nhiˆen d¯iˆe
`
u n`ay phu
.
thuˆo
.
c v`ao viˆe

.
c cho
.
n pixel R hoˇa
.
c D. Nˆe
´
u cho
.
n R th`ı ho`anh d¯ˆo
.
d¯iˆe
˙’
m
M tˇang mˆo
.
t d¯o
.
n vi
.
v`a tung d¯ˆo
.
khˆong d¯ˆo
˙’
i. Do d¯´o
d
i+1
= f(x
i
+ 2, y

i
+
1
2
) = a(x
i
+ 2) + b(y
i
+
1
2
) + c.
Nhu
.
ng
d
i
= a(x
i
+ 1) + b(y
i
+
1
2
) + c.
Suy ra d
i+1
= d
i
+ a.

K´y hiˆe
.
u sˆo
´
gia d¯u
.
o
.
.
c cˆo
.
ng thˆem khi R d¯u
.
o
.
.
c cho
.
n l`a ∆
R
:= a = dy. N´oi c´ach kh´ac, ta
c´o thˆe
˙’
suy ra biˆe
´
n quyˆe
´
t d¯i
.
nh o

.
˙’
bu
.
´o
.
c kˆe
´
tiˆe
´
p t`u
.
biˆe
´
n quyˆe
´
t d¯i
.
nh o
.
˙’
bu
.
´o
.
c hiˆe
.
n h`anh bˇa
`
ng

c´ach cˆo
.
ng thˆem sˆo
´
gia ∆
R
m`a khˆong cˆa
`
n pha
˙’
i t´ınh la
.
i gi´a tri
.
f(M).
Nˆe
´
u cho
.
n D th`ı ho`anh d¯ˆo
.
v`a tung d¯ˆo
.
d¯iˆe
˙’
m M c`ung tˇang mˆo
.
t d¯o
.
n vi

.
, nˆen
d
i+1
= f(x
i
+ 2, y
i
+
3
2
) = a(x
i
+ 2) + b(y
i
+
3
2
) + c.
V`a do d¯´o
d
i+1
= d
i
+ a + b.
K´y hiˆe
.
u sˆo
´
gia d¯u

.
o
.
.
c cˆo
.
ng v`ao d
i+1
sau khi cho
.
n D l`a ∆
D
:= a + b = dy − dx.
V`ı o
.
˙’
bu
.
´o
.
c d¯ˆa
`
u tiˆen, ta cho
.
n (x
0
, y
0
) = (x
A

, y
A
) nˆen c´o thˆe
˙’
t´ınh tru
.
.
c tiˆe
´
p gi´a tri
.
kho
.
˙’
i
ta
.
o d
0
. Thˆa
.
t vˆa
.
y, d¯iˆe
˙’
m gi˜u
.
a d¯ˆa
`
u tiˆen c´o to

.
a d¯ˆo
.
(x
0
+ 1, y
0
+
1
2
), v`a
f(x
0
+ 1, y
0
+
1
2
) = a(x
0
+ 1) + b(y
0
+
1
2
) + c
= ax
0
+ by
0

+ c + a + b/2
= f(x
0
, y
0
) + a + b/2.
15
Nhu
.
ng (x
0
, y
0
) thuˆo
.
c d¯u
.
`o
.
ng thˇa
˙’
ng l nˆen f ( x
0
, y
0
) = 0; do d¯´o gi´a tri
.
kho
.
˙’

i d¯ˆa
`
u cu
˙’
a biˆe
´
n
quyˆe
´
t d¯i
.
nh l`a d
0
= a + b/2 = dy − dx/2. Su
.
˙’
du
.
ng d
0
ta c´o thˆe
˙’
cho
.
n pixel th´u
.
hai, th´u
.
ba, v.v. D
-

ˆe
˙’
khu
.
˙’
mˆa
˜
u sˆo
´
trong d
0
ta d¯i
.
nh ngh˜ıa la
.
i h`am f bˇa
`
ng c´ach nhˆan n´o cho 2; t´u
.
c l`a
f(x, y) = 2(ax + by + c). N´oi c´ach kh´ac, nhˆan 2 cho c´ac hˇa
`
ng sˆo
´
a, b, c v`a biˆe
´
n quyˆe
´
t d¯i
.

nh;
m`a d¯iˆe
`
u n`ay khˆong a
˙’
nh hu
.
o
.
˙’
ng d¯ˆe
´
n dˆa
´
u cu
˙’
a biˆe
´
n quyˆe
´
t d¯i
.
nh.
Tˆo
˙’
ng qu´at ho´a thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u

.
a v˜e d¯oa
.
n thˇa
˙’
ng AB (trong tru
.
`o
.
ng ho
.
.
p x
A
< x
B
v`a 0 < m < 1) nhu
.
sau:
1. [Kho
.
˙’
i ta
.
o] D
-
ˇa
.
t dx = x
B

− x
A
, dy = y
B
− y
A
, d
0
= 2dy −dx, ∆
R
= 2dy, ∆
D
= 2(dy −
dx), x
0
= x
A
, y
0
= y
A
.
2. Gia
˙’
su
.
˙’
o
.
˙’

bu
.
´o
.
c th´u
.
i ta c´o d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´
t (x
i
, y
i
) v`a biˆe
´
n quyˆe
´
t d¯i
.
nh d
i
.
3. [V˜e pixel hiˆe
.
n h`anh] D
-
ˇa

.
t d¯iˆe
˙’
m v˜e ta
.
i (x
i
, y
i
).
4. [Cˆa
.
p nhˆa
.
t] Nˆe
´
u x
i
= x
B
, thuˆa
.
t to´an d`u
.
ng; ngu
.
o
.
.
c la

.
i, d¯ˇa
.
t
x
i+1
= x
i
+ 1;
y
i+1
=

y
i
nˆe
´
u d
i
≤ 0,
y
i
+ 1 nˆe
´
u ngu
.
o
.
.
c la

.
i;
d
i+1
=

d
i
+ ∆
R
nˆe
´
u d
i
≤ 0,
d
i
+ ∆
D
nˆe
´
u ngu
.
o
.
.
c la
.
i.
5. Thay i bˇa

`
ng (i + 1) v`a lˇa
.
p la
.
i Bu
.
´o
.
c 3.
V´ı du
.
1.1.2 Gia
˙’
su
.
˙’
A(2, 0), B(9, 3). Khi d¯´o d¯u
.
`o
.
ng thˇa
˙’
ng qua hai d¯iˆe
˙’
m A v`a B c´o hˆe
.
sˆo
´
g´oc m =

3
7
∈ (0, 1). Dˆe
˜
d`ang kiˆe
˙’
m tra rˇa
`
ng
dx = x
B
− x
A
= 7,
dy = y
B
− y
A
= 3,
d
0
= 2dy − dx = −1,

R
= 2dy = 6,

D
= 2(dy − dx) = −8.
16
´

Ap du
.
ng thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a ta c´o d˜ay c´ac d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´
t nhu
.
trong ba
˙’
ng du
.
´o
.
i:
i x
i
y
i
d
i
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ˆe
˙’
n nhiˆen rˇa
`
ng c´ac kˆe
´
t qua
˙’
n`ay tr`ung v´o
.
i kˆe
´
t qua
˙’
khi su
.
˙’
du
.
ng phu
.
o
.

ng ph´ap sˆo
´
gia trong
V´ı du
.
1.1.1.
Ch´u ´y rˇa
`
ng, ph´ep t´ınh cˆa
`
n thiˆe
´
t d¯ˆo
´
i v´o
.
i d
i+1
trong mˆo
˜
i bu
.
´o
.
c lˇa
.
p l`a ph´ep cˆo
.
ng v`a khˆong
c´o ph´ep nhˆan. Ho

.
n n˜u
.
a, v`ong lˇa
.
p ho`an to`an d¯o
.
n gia
˙’
n nhu
.
trong thu
˙’
tu
.
c MidPointLine()
du
.
´o
.
i 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ˆo
.
t sˆo
´
vˆa
´
n d¯ˆe
`
liˆen quan d¯ˆe
´
n thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng
Th´u

.
tu
.
.
cu
˙’
a c´ac d¯iˆe
˙’
m d¯ˆa
`
u cuˆo
´
i. Trong mˆo
.
t ´u
.
ng du
.
ng ta cˆa
`
n d¯`oi ho
˙’
i mˆo
.
t d¯oa
.
n thˇa
˙’
ng
d¯u

.
o
.
.
c v˜e t`u
.
A d¯ˆe
´
n B ch´u
.
a c`ung tˆa
.
p c´ac pixel nhu
.
d¯oa
.
n thˇa
˙’
ng d¯u
.
o
.
.
c v˜e t`u
.
B d¯ˆe
´
n A; n´oi
c´ach kh´ac, d¯oa
.

n thˇa
˙’
ng d¯u
.
o
.
.
c v˜e khˆong phu
.
thuˆo
.
c v`ao th´u
.
tu
.
.
c´ac d¯iˆe
˙’
m d¯ˆa
`
u cuˆo
´
i. Su
.
.
sai kh´ac
chı
˙’
c´o thˆe
˙’

xa
˙’
y ra ta
.
i nh ˜u
.
ng d¯iˆe
˙’
m v˜e m`a d¯u
.
`o
.
ng thˇa
˙’
ng d¯i qua d¯iˆe
˙’
m gi ˜u
.
a v`a biˆe
´
n quyˆe
´
t d¯i
.
nh
bˇa
`
ng khˆong; trong tru
.
`o

.
ng ho
.
.
p n`ay, d¯i t`u
.
tr´ai sang pha
˙’
i ch´ung ta cho
.
n d¯iˆe
˙’
m v˜e R. Do t´ınh
d¯ˆo
´
i x´u
.
ng, khi d¯i t`u
.
pha
˙’
i sang tr´ai v`a d = 0 l˜e ra ta cho
.
n d¯iˆe
˙’
m v˜e R, nhu
.
ng cho
.
n lu

.
.
a n`ay s˜e
sai lˆe
.
ch mˆo
.
t d¯o
.
n vi
.
theo th`anh phˆa
`
n y v´o
.
i pixel d¯u
.
o
.
.
c cho
.
n khi d¯i t`u
.
tr´ai sang pha
˙’
i. Do d¯´o
ch´ung ta cˆa
`
n cho

.
n pixel D khi d¯i t`u
.
pha
˙’
i sang tr´ai trong tru
.
`o
.
ng ho
.
.
p d = 0. L´y luˆa
.
n tu
.
o
.
ng
tu
.
.
d¯ˆo
´
i v´o
.
i c´ac d¯oa
.
n thˇa
˙’

ng c´o hˆe
.
sˆo
´
g´oc bˆa
´
t k`y.
Phu
.
o
.
ng ph´ap ho´an d¯ˆo
˙’
i c´ac d¯iˆe
˙’
m d¯ˆa
`
u cuˆo
´
i cu
˙’
a d¯oa
.
n thˇa
˙’
ng d¯ˆe
˙’
thuˆa
.
t to´an xu

.
˙’
l´y theo
c`ung hu
.
´o
.
ng khˆong thu
.
.
c hiˆe
.
n ch´ınh x´ac khi ch´ung ta v˜e c´ac d¯oa
.
n thˇa
˙’
ng theo mˆa
˜
u tˆo. C´ac
d¯oa
.
n thˇa
˙’
ng v˜e theo mˆa
˜
u thu
.
`o
.
ng “neo” nh˜u

.
ng dˆa
´
u hiˆe
.
u ta
.
i d¯iˆe
˙’
m xuˆa
´
t ph´at, c´o thˆe
˙’
l`a d¯iˆe
˙’
m
du
.
´o
.
i bˆen tr´ai, khˆong phu
.
thuˆo
.
c v`ao hu
.
´o
.
ng di chuyˆe
˙’

n. D
-
ˇa
.
c biˆe
.
t, v´o
.
i mˆa
˜
u tˆo chˆa
´
m-ga
.
ch,
chˇa
˙’
ng ha
.
n 111100, ch´ung ta muˆo
´
n v˜e mˆa
˜
u n`ay ta
.
i d¯iˆe
˙’
m xuˆa
´
t ph´at m`a khˆong tu

.
.
d¯ˆo
.
ng d¯ˆo
˙’
i
th`anh d¯iˆe
˙’
m du
.
´o
.
i bˆen tr´ai. Ngo`ai ra, nˆe
´
u thuˆa
.
t to´an luˆon luˆon d¯ˇa
.
t la
.
i c´ac d¯iˆe
˙’
m d¯ˆa
`
u cuˆo
´
i
theo th´u
.

tu
.
.
ch´ınh tˇa
´
c, ta cˆa
`
n di chuyˆe
˙’
n t`u
.
tr´ai sang pha
˙’
i v´o
.
i d¯oa
.
n thˇa
˙’
ng AB v`a t`u
.
pha
˙’
i
sang tr´ai v´o
.
i d¯oa
.
n thˇa
˙’

ng BA ; d¯iˆe
`
u n`ay ta
.
o ra su
.
.
gi´an d¯oa
.
n trong qu´a tr`ınh v˜e, chˇa
˙’
ng ha
.
n
d¯a gi´ac, ta
.
i nh˜u
.
ng d¯ı
˙’
nh chung.
D
-
iˆe
˙’
m xuˆa
´
t ph´at nˇa
`
m trˆen ca

.
nh cu
˙’
a d¯a gi´ac cˇa
´
t. Mˆo
.
t vˆa
´
n d¯ˆe
`
kh´ac ch´ung ta cˆa
`
n
su
.
˙’
a d¯ˆo
˙’
i thuˆa
.
t to´an d¯ˆe
˙’
v˜e c´ac d¯oa
.
n thˇa
˙’
ng sau khi d¯u
.
o

.
.
c cˇa
´
t bo
.
˙’
i mˆo
.
t trong c´ac thuˆa
.
t to´an
trong Phˆa
`
n 3.3. H`ınh 1.4(a) minh ho
.
a d¯oa
.
n thˇa
˙’
ng d¯u
.
o
.
.
c cˇa
´
t bo
.
˙’

i ca
.
nh bˆen tr´ai, x = x
min
,
cu
˙’
a h`ınh ch˜u
.
nhˆa
.
t. Giao d¯iˆe
˙’
m cu
˙’
a d¯oa
.
n thˇa
˙’
ng v`a ca
.
nh bˆen tr´ai c´o ho`anh d¯ˆo
.
x nguyˆen
nhu
.
ng tung d¯ˆo
.
y thu
.

.
c. Pixel (x
min
, mx
min
+ t + 0.5) trˆen ca
.
nh x = x
min
ch´ınh l`a pixel
d¯u
.
o
.
.
c v˜e ta
.
i ho`anh d¯ˆo
.
x
min
cu
˙’
a d¯oa
.
n thˇa
˙’
ng tru
.
´o

.
c khi cˇa
´
t theo thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a
2
. V´o
.
i
pixel kho
.
˙’
i ta
.
o d¯˜a biˆe
´
t, kˆe
´
tiˆe
´
p ch´ung ta cˆa
`
n kho
.
˙’

i ta
.
o biˆe
´
n quyˆe
´
t d¯i
.
nh ta
.
i d¯iˆe
˙’
m gi˜u
.
a d¯oa
.
n
RD trong cˆo
.
t kˆe
´
bˆen. Cˆa
`
n ch´u ´y rˇa
`
ng, c´ach l`am n`ay ta
.
o ra d˜ay ch´ınh x´ac c´ac pixel, trong
2
Khi mx

min
+ t nˇa
`
m gi˜u
.
a hai d¯u
.
`o
.
ng thˇa
˙’
ng ngang kˆe
`
nhau, ch´ung ta cˆa
`
n l`am tr`on xuˆo
´
ng. D
-
ˆay l`a hˆe
.
qua
˙’
cu
˙’
a viˆe
.
c cho
.
n pixel R khi d = 0.

18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

x = x
min
y = y

min
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.




.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

② ✐
R

D

M
(x
min
, mx
min
+ t + 0.5)
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(x
min
, mx
min
+ t)
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
(a)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.


y = y
min
− 1


x = x
min
y = y
min
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

② ② ② ②② ② ② ②
✐ ✐ ✐ ✐ ② ② ② ② ✐ ✐ ✐
② ② ② ②

y = y
min

1
2

I
D C
(b)
H`ınh 1.4: D
-
iˆe
˙’
m xuˆa
´
t ph´at nˇa
`
m trˆen biˆen h`ınh ch˜u
.
nhˆa
.
t. (a) Giao v´o
.
i ca
.
nh d¯´u

.
ng. (b) Giao
v´o
.
i ca
.
nh ngang.
19
khi cˇa
´
t d¯u
.
`o
.
ng thˇa
˙’
ng theo d¯u
.
`o
.
ng biˆen x
min
v`a sau d¯´o thu
.
.
c hiˆe
.
n v˜e d¯oa
.
n thˇa

˙’
ng d¯u
.
o
.
.
c cˇa
´
t t`u
.
(x
min
, mx
min
+ t + 0.5) d¯ˆe
´
n (x
B
, y
B
) theo thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a s˜e cho d˜ay d¯iˆe
˙’
m v˜e khˆong
ch´ınh x´ac do d¯u

.
`o
.
ng thˇa
˙’
ng sau khi cˇa
´
t c´o hˆe
.
sˆo
´
g´oc kh´ac m.
Tru
.
`o
.
ng ho
.
.
p ph´u
.
c ta
.
p ho
.
n khi d¯u
.
`o
.
ng thˇa

˙’
ng AB giao v´o
.
i d¯u
.
`o
.
ng thˇa
˙’
ng nˇa
`
m ngang nhu
.
trong H`ınh 1.4(b). Khi hˆe
.
sˆo
´
g´oc m rˆa
´
t nho
˙’
, c´o nhiˆe
`
u pixel nˇa
`
m trˆen d`ong qu´et y = y
min
tu
.
o

.
ng ´u
.
ng ca
.
nh bˆen du
.
´o
.
i cu
˙’
a h`ınh ch˜u
.
nhˆa
.
t. Ch´ung ta muˆo
´
n bao h`am c´ac pixel n`ay trong
h`ınh ch˜u
.
nhˆa
.
t, nhu
.
ng do qu´a tr`ınh t´ınh to´an giao d¯iˆe
˙’
m v´o
.
i d`ong qu´et y = y
min

v`a sau d¯´o
l`am tr`on ho`anh d¯ˆo
.
x ta d¯u
.
o
.
.
c pixel C khˆong pha
˙’
i pixel bˆen tr´ai nhˆa
´
t D trˆen d`ong n`ay. Du
.
.
a
trˆen h`ınh v˜e, ta thˆa
´
y rˇa
`
ng pixel bˆen tr´ai nhˆa
´
t D l`a pixel trˆen bˆen pha
˙’
i giao d¯iˆe
˙’
m I cu
˙’
a d¯oa
.

n
thˇa
˙’
ng AB v`a d¯u
.
`o
.
ng thˇa
˙’
ng y = y
min

1
2
. Do d¯´o, ta chı
˙’
cˆa
`
n t`ım I v`a l`am tr`on lˆen ho`anh d¯ˆo
.
;
pixel d¯ˆa
`
u tiˆen D ch´ınh l`a (x
I
, y
min
).
Cuˆo
´

i c`ung, thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a c˜ung thu
.
.
c hiˆe
.
n tˆo
´
t trong tru
.
`o
.
ng ho
.
.
p c´ac d¯iˆe
˙’
m d¯ˆa
`
u
cuˆo
´
i c´o to
.
a d¯ˆo

.
thu
.
.
c; kh´ac biˆe
.
t duy nhˆa
´
t l`a bu
.
´o
.
c tˇang v`a c´ac ph´ep to´an thao t´ac trˆen sˆo
´
thu
.
.
c.
Thay d¯ˆo
˙’
i cu
.
`o
.
ng d¯ˆo
.
s´ang cu
˙’
a d¯oa
.

n thˇa
˙’
ng theo hˆe
.
sˆo
´
g´oc. X´et hai d¯oa
.
n thˇa
˙’
ng trong
H`ınh 1.5. D
-
oa
.
n thˇa
˙’
ng l
2
c´o hˆe
.
sˆo
´
g´oc 1 v`a do d¯´o c´o d¯ˆo
.
d`ai bˇa
`
ng

2 lˆa

`
n d¯ˆo
.
d`ai cu
˙’
a l
1
. Ch´ung
ta d¯ˇa
.
t c`ung sˆo
´
(10) pixel trˆen mˆo
˜
i d¯oa
.
n thˇa
˙’
ng. Nˆe
´
u cu
.
`o
.
ng d¯ˆo
.
cu
˙’
a mˆo
˜

i pixel l`a I th`ı cu
.
`o
.
ng
d¯ˆo
.
trˆen mˆo
.
t d¯o
.
n vi
.
d¯ˆo
.
d`ai cu
˙’
a d¯oa
.
n thˇa
˙’
ng l
1
l`a I, trong khi cu
˙’
a l
2
l`a I/

2; su

.
.
khˆong nhˆa
´
t
qu´an n`ay dˆe
˜
d`ang ph´at hiˆe
.
n bo
.
˙’
i ngu
.
`o
.
i quan s´at. Trˆen m`an h`ınh d¯o
.
n sˇa
´
c, khˆong c´o c´ach gia
˙’
i
quyˆe
´
t, nhu
.
ng trˆen hˆe
.
thˆo

´
ng n-bit trˆen pixel ch´ung ta c´o thˆe
˙’
ca
˙’
i thiˆe
.
n d¯u
.
o
.
.
c t`ınh tra
.
ng n`ay
bˇa
`
ng c´ach d¯ˇa
.
t cu
.
`o
.
ng d¯ˆo
.
l`a mˆo
.
t h`am cu
˙’
a hˆe

.
sˆo
´
g´oc. K˜y thuˆa
.
t antialiasing cho kˆe
´
t qua
˙’
tˆo
´
t
ho
.
n bˇa
`
ng c´ach xem d¯oa
.
n thˇa
˙’
ng nhu
.
mˆo
.
t h`ınh ch˜u
.
nhˆa
.
t c´o d¯ˆo
.

rˆo
.
ng he
.
p v`a t´ınh to´an th´ıch
ho
.
.
p c´ac cu
.
`o
.
ng d¯ˆo
.
v´o
.
i nhiˆe
`
u pixel trˆen mˆo
˜
i cˆo
.
t nˇa
`
m trong hoˇa
.
c gˆa
`
n h`ınh ch˜u
.

nhˆa
.
t (xem [9],
[11]). Ngo`ai ra coi d¯oa
.
n thˇa
˙’
ng nhu
.
h`ınh ch˜u
.
nhˆa
.
t c˜ung cho ph´ep ta
.
o c´ac d¯oa
.
n thˇa
˙’
ng v´o
.
i d¯ˆo
.
rˆo
.
ng tu`y ´y.
Ph´ac tha
˙’
o c´ac nguyˆen so
.

x´ac d¯i
.
nh bo
.
˙’
i c´ac d¯oa
.
n thˇa
˙’
ng. V´o
.
i c´ach v˜e c´ac d¯oa
.
n thˇa
˙’
ng,
ch´ung ta cˆa
`
n v˜e c´ac nguyˆen so
.
d¯u
.
o
.
.
c xˆay du
.
.
ng t`u
.

c´ac d¯oa
.
n thˇa
˙’
ng nhu
.
thˆe
´
n`ao? C´ac d¯u
.
`o
.
ng
gˆa
´
p kh ´uc c´o thˆe
˙’
d¯u
.
o
.
.
c v˜e bˇa
`
ng c´ach xem n´o nhu
.
c´ac d¯oa
.
n thˇa
˙’

ng kˆe
`
nhau. C´ac h`ınh ch˜u
.
nhˆa
.
t v`a d¯a gi´ac l`a nh˜u
.
ng nguyˆen so
.
v`ung v`a c´o thˆe
˙’
v˜e c´ac ca
.
nh liˆen tiˆe
´
p nhu
.
ng d¯iˆe
`
u n`ay
dˆa
˜
n d¯ˆe
´
n mˆo
.
t sˆo
´
pixel nˇa

`
m ngo`ai v`ung d¯i
.
nh ngh˜ıa bo
.
˙’
i nguyˆen so
.
-xem c´ac Phˆa
`
n 4.6 v`a 4.7
vˆe
`
nh˜u
.
ng thuˆa
.
t to´an xu
.
˙’
l´y vˆa
´
n d¯ˆe
`
n`ay. Ch´u ´y rˇa
`
ng cˆa
`
n v˜e c´ac d¯ı
˙’

nh chung cu
˙’
a d¯u
.
`o
.
ng gˆa
´
p
kh´uc mˆo
.
t lˆa
`
n do viˆe
.
c v˜e hai lˆa
`
n c´o thˆe
˙’
l`am thay d¯ˆo
˙’
i m`au hoˇa
.
c d¯ˇa
.
t m`au nˆe
`
n khi viˆe
´
t trong

chˆe
´
d¯ˆo
.
XOR trˆen m`an h`ınh, hoˇa
.
c tˇang cu
.
`o
.
ng d¯ˆo
.
gˆa
´
p d¯ˆoi ta
.
i d¯´o. Thˆa
.
t ra c´o nh˜u
.
ng pixel
kh´ac l`a chung cu
˙’
a hai d¯oa
.
n thˇa
˙’
ng nˇa
`
m gˆa

`
n nhau hoˇa
.
c cˇa
´
t nhau.
20

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.







.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.










D
-
u

.
`o
.
ng thˇa
˙’
ng l
2
②②②②②②②②②②
D
-
u
.
`o
.
ng thˇa
˙’
ng l
1
H`ınh 1.5: Thay d¯ˆo
˙’
i cu
.
`o
.
ng d¯ˆo
.
cu
˙’
a c´ac d¯u
.

`o
.
ng thˇa
˙’
ng theo hˆe
.
sˆo
´
g´oc.
1.1.4 C´ac thuˆo
.
c t´ınh cu
˙’
a d¯oa
.
n thˇa
˙’
ng
Thuˆo
.
c t´ınh mˆa
˜
u tˆo d¯oa
.
n thˇa
˙’
ng c´o thˆe
˙’
a
˙’

nh hu
.
o
.
˙’
ng d¯ˆe
´
n nh˜u
.
ng nguyˆen so
.
kh´ac. N´oi chung
ta cˆa
`
n su
.
˙’
du
.
ng d¯iˆe
`
u kiˆe
.
n logic d¯ˆe
˙’
kiˆe
˙’
m tra c´o d¯ˇa
.
t d¯iˆe

˙’
m v˜e hay khˆong, chı
˙’
d¯ˇa
.
t khi d¯iˆe
`
u kiˆe
.
n
d¯´ung (gi´a tri
.
1). Ch´ung ta lu
.
u tr˜u
.
mˆa
˜
u v˜e nhu
.
mˆo
.
t chuˆo
˜
i d¯ˆo
.
d`ai Tile Size (thu
.
`o
.

ng l`a l˜uy
th`u
.
a cu
˙’
a 2: N´oi chung Tile Size = 16) l`a mˆa
˜
u c´o kiˆe
˙’
u Bool (chˇa
˙’
ng ha
.
n, 16 bit nguyˆen);
do d¯´o mˆa
˜
u tˆo d¯u
.
o
.
.
c lˇa
.
p la
.
i sau khi v˜e 16 pixel. Ch´ung ta thay d`ong lˆe
.
nh khˆong d¯iˆe
`
u kiˆe

.
n
putpixel() trong thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng d¯ˆe
˙’
xu
.
˙’
l´y tru
.
`o
.
ng ho
.
.
p n`ay; chˇa
˙’
ng ha
.
n,
if bitstring[i % 16] putpixel(x, y, value);
trong d¯´o chı
˙’
sˆo
´

i l`a mˆo
.
t biˆe
´
n tˇang m´o
.
i trong v`ong lˇa
.
p bˆen trong cu
˙’
a thuˆa
.
t to´an. Tuy nhiˆen,
c´ach l`am n`ay c´o mˆo
.
t ha
.
n chˆe
´
l`a do mˆo
˜
i bit trong mˇa
.
t na
.
tu
.
o
.
ng ´u

.
ng mˆo
.
t lˆa
`
n lˇa
.
p v`a khˆong
tu
.
o
.
ng ´u
.
ng d¯ˆo
.
d`ai d¯o
.
n vi
.
do
.
c theo d¯oa
.
n thˇa
˙’
ng nˆen d¯ˆo
.
d`ai cu
˙’

a n´et v˜e thay d¯ˆo
˙’
i theo hˆe
.
sˆo
´
g´oc cu
˙’
a d¯oa
.
n thˇa
˙’
ng; n´et v˜e cu
˙’
a d¯oa
.
n thˇa
˙’
ng xiˆen s˜e d`ai ho
.
n n´et v˜e cu
˙’
a d¯oa
.
n thˇa
˙’
ng ngang
hay d¯´u
.
ng. D

-
iˆe
`
u n`ay l`a khˆong chˆa
´
p nhˆa
.
n d¯u
.
o
.
.
c v´o
.
i nh˜u
.
ng ´u
.
ng du
.
ng mang t´ınh ch´ınh x´ac
cao, chˇa
˙’
ng ha
.
n trong thiˆe
´
t kˆe
´
cˆong nghiˆe

.
p, v`a do d¯´o c´ac n´et v˜e cˆa
`
n t´ınh la
.
i sao cho phu
.
o
.
ng
ph´ap v˜e d¯oa
.
n thˇa
˙’
ng khˆong phu
.
thuˆo
.
c v`ao hˆe
.
sˆo
´
g´oc cu
˙’
a n´o. D
-
ˆo
.
rˆo
.

ng cu
˙’
a d¯oa
.
n thˇa
˙’
ng d¯u
.
o
.
.
c
xem nhu
.
mˆo
.
t d˜ay c´ac h`ınh ch˜u
.
nhˆa
.
t d¯ˇa
.
c v`a trong suˆo
´
t d¯u
.
o
.
.
c d¯ˇa

.
t xen k˜e nhau m`a c´ac d¯ı
˙’
nh
cu
˙’
a n´o d¯u
.
o
.
.
c t´ınh ch´ınh x´ac theo h`am phu
.
thuˆo
.
c kiˆe
˙’
u v˜e d¯oa
.
n thˇa
˙’
ng. Sau d¯´o thu
.
.
c hiˆe
.
n tˆo
m`au trˆen t`u
.
ng h`ınh ch˜u

.
nhˆa
.
t mˆo
.
t; v´o
.
i c´ac d¯oa
.
n thˇa
˙’
ng ngang hoˇa
.
c d¯´u
.
ng, ta c´o thˆe
˙’
d`ung
lˆe
.
nh sao ch´ep c´ac h`ınh ch˜u
.
nhˆa
.
t.
Kiˆe
˙’
u d¯oa
.
n thˇa

˙’
ng v`a kiˆe
˙’
u b´ut v˜e c´o a
˙’
nh hu
.
o
.
˙’
ng lˆa
˜
n nhau trong c´ac nguyˆen so
.
liˆen quan
d¯ˆe
´
n d¯ˆo
.
rˆo
.
ng d¯u
.
`o
.
ng biˆen. Kiˆe
˙’
u d¯oa
.
n thˇa

˙’
ng thu
.
`o
.
ng d¯u
.
o
.
.
c su
.
˙’
du
.
ng d¯ˆe
˙’
x´ac d¯i
.
nh c´ac h`ınh ch˜u
.
nhˆa
.
t tu
.
o
.
ng ´u
.
ng c´ac n´et v˜e v`a mˆo

˜
i h`ınh ch˜u
.
nhˆa
.
t d¯u
.
o
.
.
c tˆo m`au v´o
.
i mˆa
˜
u b´ut d¯u
.
o
.
.
c cho
.
n.
21
1.2 D
-
u
.
`o
.
ng tr`on

X´et d¯u
.
`o
.
ng tr`on f(x, y) := x
2
+ y
2
−R
2
= 0. C´o mˆo
.
t v`ai c´ach d¯o
.
n gia
˙’
n v˜e d¯u
.
`o
.
ng tr`on nhu
.
ng
khˆong hiˆe
.
u qua
˙’
.
D
-

ˆe
˙’
v˜e mˆo
.
t phˆa
`
n tu
.
d¯u
.
`o
.
ng tr`on trong g´oc phˆa
`
n tu
.
th´u
.
nhˆa
´
t
{(x, y) ∈ R
2
| x ≥ 0, y ≥ 0}
(c´ac cung kh´ac d¯u
.
o
.
.
c v˜e do t´ınh d¯ˆo

´
i x´u
.
ng) ta c´o thˆe
˙’
tˇang x t`u
.
0 d¯ˆe
´
n R (mˆo
˜
i bu
.
´o
.
c mˆo
.
t d¯o
.
n
vi
.
) v`a gia
˙’
i y =

R
2
− x
2

. Phu
.
o
.
ng ph´ap n`ay khˆong hiˆe
.
u qua
˙’
do su
.
˙’
du
.
ng ph´ep nhˆan v`a lˆa
´
y
cˇan bˆa
.
c hai. Ngo`ai ra c´o nh˜u
.
ng lˆo
˜
hˆo
˙’
ng khi gi´a tri
.
x gˆa
`
n v´o
.

i R v`ı tiˆe
´
p tuyˆe
´
n v´o
.
i d¯u
.
`o
.
ng tr`on
ta
.
i nh˜u
.
ng d¯iˆe
˙’
m tu
.
o
.
ng ´u
.
ng tiˆe
´
n d¯ˆe
´
n d¯u
.
`o

.
ng thˇa
˙’
ng song song v´o
.
i tru
.
c tung. Phu
.
o
.
ng ph´ap
kh´ac tu
.
o
.
ng tu
.
.
, c˜ung khˆong hiˆe
.
u qua
˙’
, tr´anh nh˜u
.
ng lˆo
˜
hˆo
˙’
ng l`a v˜e c´ac d¯iˆe

˙’
m (R cos θ, R sin θ)
v´o
.
i θ thay d¯ˆo
˙’
i t`u
.
0 d¯ˆe
´
n 90
0
.
1.2.1 D
-
ˆo
´
i x´u
.
ng t´am d¯iˆe
˙’
m
Ch´ung ta c´o thˆe
˙’
gia
˙’
m b´o
.
t qu´a tr`ınh t´ınh to´an du
.

.
a trˆen t´ınh d¯ˆo
´
i x´u
.
ng cu
˙’
a d¯u
.
`o
.
ng tr`on qua
c´ac tru
.
c ch´ınh. Chı
˙’
cˆa
`
n x´et d¯u
.
`o
.
ng tr`on tˆam ta
.
i gˆo
´
c v`ı nˆe
´
u khˆong ta thu
.

.
c hiˆe
.
n ph´ep ti
.
nh
tiˆe
´
n t`u
.
tˆam vˆe
`
gˆo
´
c to
.
a d¯ˆo
.
. Nˆe
´
u d¯iˆe
˙’
m (x, y) nˇa
`
m trˆen d¯u
.
`o
.
ng tr`on th`ı ba
˙’

y d¯iˆe
˙’
m
(x, −y), (y, x), (y, −x), (−x, −y), (−y, −x), (−y, x), (−x, y)
c˜ung nˇa
`
m trˆen d¯u
.
`o
.
ng tr`on.
Do d¯´o ta chı
˙’
cˆa
`
n v˜e mˆo
.
t cung 45
0
v`a t`u
.
d¯´o sinh ra d¯u
.
`o
.
ng tr`on. V´o
.
i d¯u
.
`o

.
ng tr`on tˆam
ta
.
i gˆo
´
c, t´am d¯iˆe
˙’
m d¯ˆo
´
i x´u
.
ng c´o thˆe
˙’
d¯u
.
o
.
.
c hiˆe
˙’
n thi
.
bˇa
`
ng thu
˙’
tu
.
c sau (m`a dˆe

˜
d`ang tˆo
˙’
ng qu´at
ho´a v´o
.
i c´ac d¯u
.
`o
.
ng tr`on tˆam tu`y ´y):
void CirclePoints(int x, int y, int Value)
{
putpixel(x, y, Value);
putpixel(y, x, Value);
putpixel(y, -x, Value);
putpixel(x, -y, Value);
putpixel(-x, -y, Value);
putpixel(-y, -x, Value);
22
putpixel(-y, x, Value);
putpixel(-x, y, Value);
}
Cˆa
`
n ch´u ´y rˇa
`
ng khˆong nˆen go
.
i thu

˙’
tu
.
c CirclePoints() khi x = y do c´o bˆo
´
n pixel d¯u
.
o
.
.
c
v˜e hai lˆa
`
n; ta chı
˙’
cˆa
`
n thay d¯ˆo
˙’
i d¯oa
.
n m˜a xu
.
˙’
l´y d¯iˆe
`
u kiˆe
.
n biˆen.
1.2.2 Thuˆa

.
t to´an d¯iˆe
˙’
m gi˜u
.
a v˜e d¯u
.
`o
.
ng tr`on
Bresenham [3] d¯˜a tr`ınh b`ay mˆo
.
t phu
.
o
.
ng ph´ap v˜e d¯u
.
`o
.
ng tr`on hiˆe
.
u qua
˙’
ho
.
n c´ach d¯u
.
a ra o
.

˙’
trˆen. Ch´ung ta nˆeu thuˆa
.
t to´an tu
.
o
.
ng tu
.
.
, su
.
˙’
du
.
ng tiˆeu chuˆa
˙’
n d¯iˆe
˙’
m gi˜u
.
a, m`a trong tru
.
`o
.
ng
ho
.
.
p b´an k´ınh v`a c´ac to

.
a d¯ˆo
.
cu
˙’
a tˆam l`a nh˜u
.
ng sˆo
´
nguyˆen s˜e cho c`ung mˆo
.
t kˆe
´
t qua
˙’
c´ac pixel
tˆo
´
t nhˆa
´
t.
Ta chı
˙’
cˆa
`
n x´et cung mˆo
.
t phˆa
`
n t´am d¯u

.
`o
.
ng tr`on:
(C
1
) := {(x, y) ∈ R
2
| x
2
+ y
2
= R
2
, 0 ≤ y < x}
v`a su
.
˙’
du
.
ng thu
˙’
tu
.
c CirclePoints() d¯ˆe
˙’
hiˆe
˙’
n thi
.

c´ac pixel trˆen to`an d¯u
.
`o
.
ng tr`on. Vi phˆan
phu
.
o
.
ng tr`ınh f (x, y) := x
2
+ y
2
− r
2
= 0 ta d¯u
.
o
.
.
c 2xdx + 2ydy = 0. Nˆen
dx
dy
= −
y
x
. Suy ra
−1 <
dx
dy

≤ 0 v´o
.
i mo
.
i (x, y) ∈ (C
1
). Do d¯´o, khi y tˇang mˆo
.
t d¯o
.
n vi
.
th`ı x gia
˙’
m khˆong qu´a
mˆo
.
t d¯o
.
n vi
.
. V`ı vˆa
.
y, gia
˙’
su
.
˙’
o
.

˙’
bu
.
´o
.
c th´u
.
i ch´ung ta cho
.
n d¯u
.
o
.
.
c d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´
t C := (x
i
, y
i
),
th`ı bu
.
´o
.
c kˆe

´
tiˆe
´
p cˆa
`
n cho
.
n mˆo
.
t trong hai pixel T := (x
i
, y
i
+ 1) hoˇa
.
c D := (x
i
− 1, y
i
+ 1)
(xem H`ınh 1.6). Tu
.
o
.
ng tu
.
.
thuˆa
.
t to´an d¯iˆe

˙’
m gi˜u
.
a v˜e d¯u
.
`o
.
ng thˇa
˙’
ng, d¯ˆe
˙’
cho
.
n mˆo
.
t trong hai
pixel gˆa
`
n v´o
.
i d¯u
.
`o
.
ng tr`on ho
.
n ta x´et h`am lˆa
´
y gi´a tri
.

ta
.
i d¯iˆe
˙’
m gi ˜u
.
a M = (x
i

1
2
, y
i
+ 1) cu
˙’
a
hai d¯iˆe
˙’
m v˜e n`ay. Dˆe
˜
d`ang ch´u
.
ng minh rˇa
`
ng, nˆe
´
u d¯iˆe
˙’
m M nˇa
`

m trong d¯u
.
`o
.
ng tr`on (tu
.
o
.
ng
d¯u
.
o
.
ng f (M) < 0) th`ı T gˆa
`
n d¯u
.
`o
.
ng tr`on ho
.
n; v`a M nˇa
`
m ngo`ai d¯u
.
`o
.
ng tr`on (tu
.
o

.
ng d¯u
.
o
.
ng
f(M) > 0) th`ı D gˆa
`
n d¯u
.
`o
.
ng tr`on ho
.
n. Tru
.
`o
.
ng ho
.
.
p M nˇa
`
m trˆen d¯u
.
`o
.
ng tr`on (t´u
.
c f(M) = 0)

ta c´o thˆe
˙’
cho
.
n mˆo
.
t trong hai, do d¯´o cho
.
n pixel D.
D
-
ˇa
.
t
d
i
:= f(M) = f(x
i

1
2
, y
i
+ 1) = (x
i

1
2
)
2

+ (y
i
+ 1)
2
− R
2
.
Nˆe
´
u d
i
< 0 th`ı cho
.
n T v`a d¯iˆe
˙’
m gi˜u
.
a kˆe
´
tiˆe
´
p c´o tung d¯ˆo
.
tˇang mˆo
.
t d¯o
.
n vi
.
. Nˆen

d
i+1
= f(x
i

1
2
, y
i
+ 2) = (x
i

1
2
)
2
+ (y
i
+ 2)
2
− R
2
;
v`a do d¯´o d
i+1
= d
i
+ (2y
i
+ 3); suy ra bu

.
´o
.
c tˇang ∆
T
:= 2y
i
+ 3.
23
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
M
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

D

C

T

H`ınh 1.6: Lu
.
´o
.
i pixel trong thuˆa
.
t to´an d¯iˆe
˙’
m gi˜u
.
a v˜e d¯u
.
`o
.
ng tr`on.
Nˆe
´
u d
i
≥ 0 th`ı cho
.
n D v`a d¯iˆe
˙’
m gi˜u

.
a kˆe
´
tiˆe
´
p c´o ho`anh d¯ˆo
.
gia
˙’
m mˆo
.
t d¯o
.
n vi
.
v`a tung d¯ˆo
.
tˇang mˆo
.
t d¯o
.
n vi
.
. Nˆen
d
i+1
= f(x
i

3

2
, y
i
+ 2) = (x
i

3
2
)
2
+ (y
i
+ 2)
2
− R
2
.
Suy ra d
i+1
= d
i
+ 2y
i
− 2x
i
+ 5. Do d¯´o bu
.
´o
.
c tˇang ∆

D
:= 2(y
i
− x
i
) + 5.
Nhˇa
´
c la
.
i l`a, trong tru
.
`o
.
ng ho
.
.
p d¯u
.
`o
.
ng thˇa
˙’
ng, c´ac bu
.
´o
.
c tˇang ∆
R
v`a ∆

D
l`a c´ac hˇa
`
ng sˆo
´
;
tuy nhiˆen, trong tru
.
`o
.
ng ho
.
.
p d¯u
.
`o
.
ng cong bˆa
.
c hai, ∆
T
v`a ∆
D
l`a c´ac h`am phu
.
thuˆo
.
c v`ao c´ac
to
.

a d¯ˆo
.
cu
˙’
a d¯iˆe
˙’
m v˜e hiˆe
.
n h`anh (x
i
, y
i
). C´ac h`am n`ay c´o thˆe
˙’
t´ınh to´an tru
.
.
c tiˆe
´
p ta
.
i mˆo
˜
i bu
.
´o
.
c
lˇa
.

p du
.
.
a v`ao c´ac gi´a tri
.
x v`a y cu
˙’
a pixel d¯u
.
o
.
.
c cho
.
n trong bu
.
´o
.
c lˇa
.
p tru
.
´o
.
c. T´ınh to´an nhu
.
vˆa
.
y khˆong hiˆe
.

u qua
˙’
do c´ac h`am n`ay l`a tuyˆe
´
n t´ınh (xem Nhˆa
.
n x´et 1.2.1).
Cuˆo
´
i c`ung cˆa
`
n t´ınh d
0
. V´o
.
i gia
˙’
thiˆe
´
t b´an k´ınh nguyˆen, ta biˆe
´
t rˇa
`
ng pixel kho
.
˙’
i ta
.
o
ban d¯ˆa

`
u c´o to
.
a d¯ˆo
.
(R, 0) nˆen d¯iˆe
˙’
m gi˜u
.
a c´o to
.
a d¯ˆo
.
(R −
1
2
, 1) v`a do d¯´o d
0
= f(R −
1
2
, 1) =
(R −
1
2
)
2
+ 1 −R
2
=

5
4
−R. Tˆo
˙’
ng kˆe
´
t ta c´o thuˆa
.
t to´an v˜e d¯u
.
`o
.
ng tr`on tˆam ta
.
i gˆo
´
c to
.
a d¯ˆo
.
v`a
b´an k´ınh R nhu
.
sau:
1. [Kho
.
˙’
i ta
.
o] D

-
ˇa
.
t x
0
= R , y
0
= 0, d
0
= 5/4 − R.
2. Gia
˙’
su
.
˙’
o
.
˙’
bu
.
´o
.
c th´u
.
i ta c´o d¯iˆe
˙’
m v˜e tˆo
´
t nhˆa
´

t (x
i
, y
i
) v`a biˆe
´
n quyˆe
´
t d¯i
.
nh d
i
.
3. [V˜e pixel hiˆe
.
n h`anh] D
-
ˇa
.
t t´am d¯iˆe
˙’
m v˜e du
.
.
a trˆen (x
i
, y
i
).
24

4. [Cˆa
.
p nhˆa
.
t] Nˆe
´
u x
i
= y
i
, thuˆa
.
t to´an d`u
.
ng; ngu
.
o
.
.
c la
.
i, d¯ˇa
.
t
x
i+1
=

x
i

nˆe
´
u d
i
< 0,
x
i
− 1 nˆe
´
u ngu
.
o
.
.
c la
.
i;
y
i+1
= y
i
+ 1;
d
i+1
=

d
i
+ 2y
i

+ 3 nˆe
´
u d
i
< 0,
d
i
+ 2(y
i
− x
i
) + 5 nˆe
´
u ngu
.
o
.
.
c la
.
i.
5. Thay i bˇa
`
ng (i + 1) v`a lˇa
.
p la
.
i Bu
.
´o

.
c 3.
Nhˆa
.
n x´et 1.2.1 (i) Vˆa
´
n d¯ˆe
`
v´o
.
i thuˆa
.
t to´an v`u
.
a tr`ınh b`ay, ta l`am viˆe
.
c trˆen c´ac sˆo
´
thu
.
.
c v`ı
kho
.
˙’
i ta
.
o biˆe
´
n quyˆe

´
t d¯i
.
nh l`a sˆo
´
thu
.
.
c. Mˇa
.
c d`u c´o thˆe
˙’
dˆe
˜
d`ang ca
˙’
i tiˆe
´
n d¯ˆe
˙’
xu
.
˙’
l´y cho d¯u
.
`o
.
ng
tr`on c´o tˆam hoˇa
.

c b´an k´ınh khˆong nguyˆen, ta s˜e tr`ınh b`ay c´ach t´ınh to´an sˆo
´
nguyˆen hiˆe
.
u qua
˙’
ho
.
n. N´oi c´ach kh´ac ta s˜e khu
.
˙’
c´ac mˆa
˜
u sˆo
´
trong chu
.
o
.
ng tr`ınh.
D
-
ˆa
`
u tiˆen, x´et biˆe
´
n m´o
.
i h
i

= d
i

1
4
v`a thay d
i
bo
.
˙’
i h
i
+
1
4
trong thuˆa
.
t to´an. Khi d¯´o ta
kho
.
˙’
i ta
.
o h
0
= 1 −R v`a so s´anh d
i
< 0 tu
.
o

.
ng d¯u
.
o
.
ng h
i
< −
1
4
. Tuy nhiˆen, do h
0
nguyˆen v`a
d¯u
.
o
.
.
c tˇang bo
.
˙’
i c´ac gi´a tri
.
nguyˆen (∆
T
v`a ∆
D
) nˆen chı
˙’
cˆa

`
n so s´anh h
i
< 0. Nhu
.
vˆa
.
y, ch´ung
ta c´o thuˆa
.
t to´an v˜e d¯u
.
`o
.
ng tr`on chı
˙’
su
.
˙’
du
.
ng c´ac sˆo
´
nguyˆen nhu
.
du
.
´o
.
i d¯ˆay; d¯ˆe

˙’
nhˆa
´
t qu´an v´o
.
i
thuˆa
.
t to´an v˜e d¯oa
.
n thˇa
˙’
ng, ta thay h l`a d.
void MidPointCircle(int R, int Value)
{
int x, y, d;
x = R;
y = 0;
d = 1 - R;
CirclePoints(x, y, Value);
while (y < x)
{
if (d < 0)
{
d += 2*y + 3;
y++;
}
else
{
25

×