You are on page 1of 52

MC LC

CHNG I. CC KHI NIM C BN .................................................................. 3


1.

GII THIU V HA MY TNH .................................................................3


1.1.
1.2.
1.3.

2.

CC I TNG HA C S ....................................................................11
2.1.
2.2.
2.3.
2.4.

3.

Khi nim v ha my tnh........................................................................................3


Mt s ng dng ca ha my tnh ...........................................................................4
Khi qut v mt h ha............................................................................................5
im .............................................................................................................................11
on thng, ng gp khc........................................................................................11
Vng t .........................................................................................................................11
K t, chui k t ..........................................................................................................12

HIN TH CC I TNG HA..............................................................12


3.1.
3.2.

Mt s khi nim..........................................................................................................12
Quy trnh hin th i tng.........................................................................................13

CHNG II. CC THUT TON V NG .................................................. 15


1.

NGUYN L CHUNG ............................................................................................15


1.1.
1.2.

2.

CC THUT TON V NG THNG.........................................................16


2.1.
2.2.
2.3.

3.

Mt s nhn xt ............................................................................................................ 22
Thut ton MidPoint.....................................................................................................23

THUT TON V ELLP .....................................................................................27


4.1.
4.2.

5.

Thut ton DDA (Digital Differential Analyzer) .........................................................16


Thut ton Bresenham..................................................................................................19
Thut ton MidPoint.....................................................................................................21

THUT TON V NG TRN......................................................................22


3.1.
3.2.

4.

t vn .....................................................................................................................15
tng chung..............................................................................................................15

Phng trnh Ellp ........................................................................................................27


Thut ton Bresenham..................................................................................................27

THUT TON V CC NG CONIC KHC .............................................29

CHNG III. CC THUT TON T MU........................................................ 30


1.

MT S THUT TON LIN QUAN.................................................................30


1.1.
1.2.

2.

Thut ton kim tra a gic li hay lm.......................................................................30


Thut ton kim tra im nm trong ............................................................................32

CC THUT TON C BN...............................................................................33


2.1.
2.2.
2.3.

Thut ton t n gin..................................................................................................33


Thut ton t mu theo dng qut ................................................................................33
Thut ton t mu da theo ng bin.......................................................................34

CHNG IV. CC THUT TON XN NH ..................................................... 36


1.

KHI NIM .............................................................................................................36

2.

CC THUT TON XN ON THNG .........................................................36


2.1.
2.2.

Thut ton Cohen-Sutherland.......................................................................................37


Thut ton Liang-Barsky.............................................................................................. 41

CHNG V. CC PHP BIN I TRONG HA HAI CHIU ............. 45


1.

CC PHP BIN I HNH HC C S .........................................................45


1.1.
1.2.
1.3.
1.4.

2.

BIU DIN CC PHP BIN I ......................................................................47


2.1.
2.2.
2.3.

3.

H ta thun nht.....................................................................................................47
Biu din ma trn ca cc php bin i......................................................................47
Biu din cc php bin i di dng ta thun nht............................................48

KT HP CC PHP BIN I .........................................................................48


3.1.
3.2.
3.3.
3.4.

4.

nh ngha ....................................................................................................................45
Php tnh tin................................................................................................................45
Php bin i t l ........................................................................................................46
Php quay quanh gc ta .........................................................................................46

Kt hp cc php tnh tin............................................................................................48


Kt hp cc php t l...................................................................................................49
Php bin cc php quay ..............................................................................................49
Php quay c tm quay l im bt k.........................................................................50

MT S TNH CHT CA PHP BIN I AFFINE ...................................51

TI LIU THAM KHO........................................................................................... 52

CHNG I.

CC KHI NIM C BN

1. GII THIU V HA MY TNH


1.1. Khi nim v ha my tnh
1.1.1. Khi nim
ha my tnh l tt c nhng g lin quan n vic s dng my tnh pht
sinh ra hnh nh. Cc vn lin quan ti cng vic ny bao gm : to, lu tr, thao
tc trn cc m hnh (cc m t hnh hc ca i tng) v cc nh.
Theo nh ngha ny th ha my tnh bao gm:
Thit k phn cng nh thit b hin th
Cc thut ton cn thit pht sinh cc ng trn cc thit b ny,
Cc phn mm c s dng cho c ngi lp trnh h thng v ngi
lp trnh ng dng ha, v cc chng trnh ng dng to nh bng
my tnh.
ha my tnh cung cp mt trong nhng phng cch t nhin nht cho vic
truyn t thng tin vi my tnh.Vi my tnh, chng ta c th to cc hnh nh khng
ch ca cc i tng c th, thc t, m cn ca cc i tng tru tng, nhn to;
cc biu din ca d liu m khng c tnh k tha v mt hnh hc, nh l kt qu
iu tra, kho st. Hn na, vi ha my tnh chng ta khng b gii hn trong cc
nh tnh. Cc nh ng thng thng mang li nhiu hiu qu hn so vi nh tnh, c
bit l vi cc hin tng bin i theo thi gian, c thc t v tru tng.
y chng ta tip cn t gc ca ngi lp trnh ng dng, l ngi s
dng tt c cc h tr ca phn cng, cc cng c phn mm xy dng nn cc
ng dng.
Tuy nhin c th thit k v ci t cc chng trnh ng dng ha c
tt, ngoi vic tm hiu cc kh nng ca cng c lp trnh, chng ta cng cn phi
nm vng cc khi nim v phn cng; cc vn , cc nguyn l lin quan n ci t
phn mm, cc thut ton, cc ng dng,
1.1.2. Cc k thut ha
a. ho im
- Cc i tng c to ra bi li cc im nh (pixel) ri rc c m t
v ta xc nh v tr v mt gi tr thuc tnh m thng thng l
sng hay mu sc ca im nh.
-

Cc i tng c to ra t my qut, my nh s, chng trnh v,

Thun li:
o D dng thay i hnh nh: thay i mu sc, v tr...
o C th thao tc trn tng vng ca nh

Bt li:
o Khng th bin i trn pixel quan st t cc gc nhn khc nhau
o Hiu chnh v thuc tnh hnh hc, kch thc phc tp

Mt s chng trnh ng dng: PaitBrush, Photoshop

b. ha vector
- Cc i tng c xy dng bng m hnh v thuc tnh ca chng.
o M hnh ca i tng chnh l nhng m t ton hc (cc c trng
hnh hc nh to tm, bn knh, ) ca i tng .
o Thuc tnh ca i tng qui nh cch thc i tng c hin th
(mu sc , kiu ng).
-

c im:
o C th bin i trn m hnh gc quan st t cc gc nhn khc
nhau hay hiu chnh v thuc tnh hnh hc ca i tng.
o Ch c th thao tc trn cc thnh phn hnh hc ca i tng.
o Phi chuyn sang ho im khi hin th.

Mt s chng trnh ng dng: AutoCAD, Illustrator

1.2. Mt s ng dng ca ha my tnh


1.2.1. H tr thit k
Mt trong nhng ng dng ln nht ca ha my tnh l h tr thit k
(CAD computer-aided design). Ngy nay CAD c s dng hu ht trong vic
thit k cc cao c, t, my bay, tu thy, tu v tr, my tnh, trang tr mu vi, v
rt nhiu sn phm khc.
1.2.2. Biu din thng tin
y l cc ng dng s dng ha my tnh pht sinh cc biu , th,
dng minh ha mi quan h gia nhiu i tng vi nhau. Cc ng dng ny
thng c dng tm lc cc d liu v ti chnh, thng k, kinh t, khoa hc,
ton hc, gip cho vic nghin cu, qun l, mt cch c hiu qu.

Hnh I-1 Thng tin tm lc c biu din qua cc biu

1.2.3. Lnh vc gii tr, ngh thut


Trong lnh vc ngh thut, cc chng trnh my tnh nh Paint Shop Pro,
Adobe Photoshop, 3D Studio, h tr rt c lc cho cc ha s, cc nh to mu
trong vic thit k cc hnh nh sng ng, v rt thc.
Ngoi ra ha my tnh cn gip to ra cc chng trnh tr chi, gii tr; h
tr vic to ra cc k xo in nh cho cc nh lm phim.
1.2.4. Gio dc v o to
Hin nay cc chng trnh m phng cu trc ca cc vt th, tin trnh ca cc
phn ng ha hc, hot ng ca cc gi tin trn mng my tnh, c dng rt
nhiu trong vic h tr ging dy.
Trong o to, cc ng dng m phng c dng kim tra trnh ngi
li, hun luyn phi cng, iu khin giao thng,
1.2.5. Thit k giao din ng dng
Nh chng ta bit, a s cc cc ng dng s dng giao din ha giao
tip vi ngi dng, mang li s thun tin v thoi mi cho ngi dng ng dng.
Chng hn nh cc ng dng da trn h iu hnh MS Windows. Cc chc nng ca
cc ng dng ny c thit k cho ngi dng lm vic thng qua cc biu tng m
t chc nng .
V d, chc nng lu tp tin c hiu thng qua biu tng a mm, chc
nng in n c hiu thng qua biu tng my in, chn cc chc nng, ngi
dng s dng chut tr n v nhn vo cc biu tng tng ng.
im thun li chnh khi dng biu tng l kch thc khng gian m n
chim t hn nhiu so vi dng vn bn m t cho cng mt chc nng, ngoi ra
vic nm bt cc chc nng qua cc biu tng s d dng hn rt nhiu khi ngi
dng gp tr ngi v mt ngn ng.

1.3. Khi qut v mt h ha


Mt h ha gm hai thnh phn chnh:
Phn cng: cc thit b hin th v nhp d liu,
Phn mm: cc cng c lp trnh v cc trnh ng dng ha.

1.3.1. Cc thnh phn phn cng


a. Thit b hin th
Thit b hin th thng dng nht trong mt h ha l mn hnh CRT
(Cathode Ray Tube), da trn thit k ca ng tia m cc.

Hnh I-2. Cu to ca mn hnh CRT

Cc tnh cht ca mn hnh CRT:


Pht sng nh tng tc gia cc tia in t vi ht phosphor. Mi v tr
tng tc l mt im nh (pixel).
Tc v li nh c gi l tc lm ti mn hnh (refresh rate),
thng t 60 85Hz.
S lng ti a cc im nh c th hin th gi l
phn gii (resolution). V d: 680x480; 800x600.
Tng s cc mu khc nhau mn hnh c th hin th gi l phn gii
mu (Pallette) (4 bit-32 bit mu).
Kch thc vt l ca mn hnh l di ng cho ca n (12 17 inches)
b. Cc thit b nhp
Bn phm (keyboard): dng nhp d liu dng vn bn v s nhng
tnh tng tc khng cao.
Chut (mouse): Thch hp vi cc cc ng dng ha, tao ra s giao
tip gia ngi dng v my tnh cng ngy cng thn thin v d dng
hn.
Ngoi ra chng ta cng c mt s thit b nhp khc cng h vi chut nh
track ball,
1.3.2. Cc cng c phn mm
Phn mm ha c th phn thnh 2 loi:
Cc cng c lp trnh: cung cp mt tp cc hm ha dng cc th
vin ha ca cc ngn ng cp cao nh C (GRAPH.LIB), Pascal(GRAPH.TPU),
Cc hm ny cung cp kh nng to v thao tc hnh nh c s, bao gm:
Tp cc cng c to ra cc i tng ha c s nh im, on
thng, ng cong, vng t, k t,
Tp cc cng c thay i thuc tnh dng thay i thuc tnh ca
cc i tng ha c s nh mu sc, kiu ng, kiu ch, mu
t,

Tp cc cng c thc hin cc php bin i hnh hc dng thay


i kch thc v tr, hng ca cc i tng,
Tp cc cng c bin i h quan st dng xc nh v tr quan st
i tng v v tr trn thit b hin th c dng hin th i
tng.
Tp cc cng c nhp liu: Cc ng dng ha c th s dng
nhiu loi thit b nhp khc nhau nh bt v, bng, chut, bn
phm, iu khin v x l dng d liu nhp.
Tp cc cng c cha cc thao tc dng cho vic qun l v iu
khin v d nh xa ton b mn hnh, thit lp ch ha,
Cc trnh ng dng ha: c thit k cho nhng ngi dng c th
to cc i tng, hnh nh, m khng cn quan tm ti vic chng c to ra nh
th no. V d nh l Photoshop, AutoCAD,
Cc chun phn mm: Cc chun phn mm ra i p p ng tnh
tng thch cho vic pht trin cc phn mm ha: khi cc cng c c thit k
vi cc hm ha chun, phn mm c th c di chuyn mt cch d dng t h
phn cng ny sang h phn cng khc v c dng trong nhiu mi trng khc
nhau.
Chun u tin l GKS (Graphics Kernel System):
Cc hm ca GKS thc s ch l cc m t tru tng, c lp vi bt k
ngn ng lp trnh no. ci t mt chun ha cho ngn ng c
th no, cc c php tng ng s c xc nh v c th ha.
GKS khng cung cp mt cch thc chun cho vic giao tip ha vi
cc thit b xut v cc cch thc cho cc m hnh thi gian thc cng
nh cc cch thc lu tr v chuyn i hnh nh.
1.3.3. Mu sc trong ho
a. S cm nhn mu sc
Vic nghin cu mu sc ngoi cc yu t v mt vt l nh bc sng, cng
cn lin quan n cc yu t khc c lin quan n sinh l ca mt ngi di tc
ng ca chm tia sng mu i n t vt nh: Hue-sc mu, Saturation- bo ho,
Lightness- sng.
Hue (Sc mu): dng phn bit s khc nhau gia cc mu nh xanh,
, vng,
Saturation ( bo ho): ch ra mc thun ca mt mu hay khong
cch ca mu n im c cng cn bng.
Lightness ( sng): m t cng sng t nh sng phn x nhn
c t i tng.
Chun mu c s dng cho b pht sinh mu ca phn cng ca mn hnh
CRT da trn l thuyt 3 mu: mt mu bt k c th to ra t 3 mu c bn l mu
, lc, lam (Red, Green, Blue). D nhin khng phi tt c cc mu u c th biu
din qua 3 thnh phn ny, nhng hu ht u c th chuyn v c.y l nn tng
cho vic tng hp mu sc.
7

b. Cc h mu (khng gian mu)


m t ch s k thut qui c ca vic biu din mu sc hin th trn my
tnh ta c cc khng gian (m hnh) mu khc nhau. Khng gian mu c th c thit
k da trn c s ca b pht sinh mu ca phn cng (v d nh khng gian RGB)
hoc l da trn s cm nhn mu sc ca con ngi (nh khng gian HSL).
i)

Khng gian RGB (RGB space):

M t mu sc bng ba thnh phn Red, Green, Blue

M hnh l mt khi lp phng vi cc trc chnh R, G, B. Mi mu trong


khng gian RGB u c biu din nh l mt vector thng qua ba vector
c s l Red, Green, Blue. Mi mu gc (Red, Green, Blue) c t vo
gc i din vi cc mu b n (hai mu b nhau l hai mu m khi kt hp
to thnh mu trng hay xm (grey)).

Khi kt hp hai mu li vi nhau th mu sinh ra c vector bng tng cc


vector thnh phn.

Hnh I-3 M hnh khng gian RGB

Mt s thun li khi dng khng gian RGB :


o Chun cng nghip cho cc thao tc ha my tnh
o C th chuyn i qua li gia khng gian RGB vi cc khng gian
mu khc nh CIE, CMY, HSL, HSV,
o Cc thao tc tnh ton trn khng gian RGB thng n gin hn.

Mt s bt li :
o Cc gi tr RGB ca mt mu l khc nhau i vi cc mn hnh
khc nhau.
o S m t cc mu trong th gii thc i vi khng gian RGB cn
nhiu hn ch bi v khng gian RGB khng hon ton ph hp vi
s cm nhn mu sc ca con ngi. Hai im phn bit trong khng
gian RGB, vi mt ngi c th hoc khng th l th hin ca hai
mu khc nhau.
ii)

Khng gian HSL

M hnh l hai hnh nn p vo nhau. H (Hue) l to ng vi gc quay, S


(Saturation) l ta gc, L l trc thng ng. Hu ht cc mu t bo
ha khi S = 1 v L = 0.5.
8

Hnh I-4 M hnh khng gian HSL

Mt s thun li ca khng gian HSL :


o Khng gian HSL gn vi s cm nhn cc thuc tnh mu sc ca
con ngi hn khng gian RGB (tuy cch tip cn n gin ha i
nhiu). Cc mu c xc nh d dng hn chng hn do H quay
quanh trc ng nn cc mu b c xc nh mt cch d dng,
i vi cc gi tr lightness cng vy.
o Vic kim sot cc mu c s HSL d hn cho nhng ngi mi lm
quen vi cc chng trnh ha.

Mt s bt li :
o Vic thm vo mt vector khng th thc hin n gin nh khng
gian RGB (ch thm vo cc thnh phn mu). Cc thao tc lng
gic khi bin i s nh hng ng k n tc ca chng trnh.
o Cn phi qua hiu chnh gamma trc khi hin th (ging nh cc
khng gian khc).
iii)

Khng gian HSV

Khng gian HSV c m hnh bng hnh lp phng RGB quay trn nh
Black ca n. H (Hue) l gc quay quanh trc Values, S (Saturation) i t 0
n 1, trc V (Values) do vy tng ng vi ng cho ni nh White v
Black. Cc mu t bo ha khi S=1 v V=1

Hnh I-5 M hnh khng gian HSV

Mt s thun li ca khng gian HSV :


o D dng p ng cc mu sc ca cc chng trnh ha.
V d : Khi cn thm mu trng vo, phi t V=S=1 sau gim S
t t cho ti khi t c mu va ; hay khi cn thm mu en vo,
iu c ngha l gim V (cng sng) v c nh S,...
o Do khng cn s dng cc php bin i lng gic khi mun
chuyn sang khng gian RGB.

10

2. CC I TNG HA C S
y

2.1. im
- Mi im c xc nh bi mt cp ta (x, y).

yo

- Thuc tnh duy nht ca im mu sc.

(xo, yo)
xo

2.2. on thng, ng gp khc


-

Mt on thng c th xc nh khi bit hai im u mt (x1, y1) v (x2, y2)

Phng trnh ng thng cha on thng:

(x1, y1)

o Phng trnh on chn: y = mx + b

(x2, y2)

Dy
trong , m = Dx vi Dy = y2 - y1, Dx = x2 - x1; b = y1 - mx1
o Phng trnh tng qut: Ax + By + C = 0
Trong : A = y2 - y1, B = - (x2 - x1), C = x2y1 - x1y2
o Phng trnh tham s:

- ng gp khc l tp cc on thng ni vi nhau mt cch tun t (khng


nht thit khp kn v cc on c th ct ln nhau), c xc nh qua danh sch cc
nh (giao ca hai on thng), mi nh c cho bi cc cp ta (xi, yi). Cc on
thng trong cng mt ng gp khc th c cng mt thuc tnh
-

Mt a gic l mt ng gp khc c im u v im cui trng nhau.

Hnh I-6 ng gp khc (a) v a gic (b)

Cc thuc tnh ca on thng bao gm :


o Mu sc
o rng ca nt v.
o Kiu nt v ca on thng.

2.3. Vng t
- Mt vng t bao gm ng bin v vng bn trong. ng bin l mt
ng khp kn v d nh a gic.
-

Cc thuc tnh ca vng t bao gm:


o Thuc tnh ca ng bin l cc thuc tnh ca on thng.
o Thuc tnh ca vng bn trong: mu t v mu t.
11

Hnh I-7 Vng t vi cc dng ng bin v mu t khc nhau

2.4. K t, chui k t
no .

Cc chui k t gip hin th ni dung cc thng ip theo mt ngn ng

- Cc thuc tnh ca k t bao gm: Mu sc, Font ch (kiu, kch thc ca


k t), kch thc, khong cch gia cc k t, s canh chnh (ging l), cch hin th
tun t ca cc k t, hay hng ca k t.

3. HIN TH CC I TNG HA
3.1. Mt s khi nim
3.1.1. Khi nim
- Ca s (window): l mt vng c chn hin th trong h ta th
gii thc.
- Vng quan st (viewport) l vng c chn trn thit b hin th cc i
tng trong ca s nh x vo.
Thng thng ca s v vng quan st c dng hnh ch nht, c cc cnh song
song vi cc trc ta . Tuy nhin chng cng cn c mt s dng khc nh a gic,
hnh trn,
- Qu trnh nh x mt vng nh ngha trong h ta th gii thc vo mt
vng trong h ta thit b c gi l php bin i h quan st (viewing
transformation).

Hnh I-8 Php bin i h quan st vi ca s v vng


quan st c dng l cc hnh ch nht

3.1.2. H to th gii thc


H ta th gii thc (hay h ta thc) l h ta c dng m t cc
i tng th gii thc. Mt trong cc h ta thc thng c dng nht l h
ta Descartes. Vi h ta ny, bt k mt im no trong mt phng cng c
m t bng mt cp ta (x, y) trong x, y R.

12

Cc ta th gii thc cho php ngi dng s dng bt k mt th nguyn


(dimension) quy c nh foot, cm, mm, km, inch, ... no v c th ln nh ty .
3.1.3. H ta thit b
H ta thit b l h ta c dng bi mt thit b xut c th no
nh my in, mn hnh, ...
c im chung ca cc h ta thit b ny l :
- Cc im trong h ta thit b cng c m t bi mt cp ta (x, y),
trong x, y N.
- Cc ta x, y ca h ta thit b gii hn trong mt khong no ty
theo tng loi thit b.

Hnh I-9 H ta thc (a) v h ta thit b (b)

Do cch t chc b nh nn thng thng cc h ta thit b thng da trn


h ta c trc tung Oy hng xung di.

H ta thit b chun l h ta thit b chun i din chung cho cc thit


b c th m t cc hnh nh ca th gii thc m khng ph thuc vo bt c thit
b no.
Trong h ta ny, bt k mt im no trong mt phng cng c m t
bng mt cp ta (x, y) trong x, y [0, 1].

3.2. Quy trnh hin th i tng


Thng thng, cc h ha chuyn cc m t trong h ta th gii thc ti
h ta thit b chun (normalized device coordinates) c cc chiu l n v trc
khi chuyn ti h ta thit b. iu ny lm cho h thng c lp vi nhiu loi
thit b khc nhau.

13

Hnh I-10 Quy trnh hin th i tng hai chiu

14

CHNG II.

CC THUT TON V NG

1. NGUYN L CHUNG
1.1. t vn

- i tng m t trong h to thc l i tng lin tc, cn i tng

trong h to thit b l i tng ri rc. Do cn phi thc hin vic ri rc ho


v nguyn ho cc i tng mt cch tt nht, m bo tnh lin tc ca ng khi
hin th. Bn cht ca qu trnh ny l xc nh cc im nguyn lin tip xp x vi
i tng thc tt nht c th c.
- Cc i tng c s ny cu trc nn cc i tng phc tp hn nn cn
xy dng cc thut ton ti u v mt tc v s chnh xc.

Gi s ta cc im nguyn sau khi xp x i tng thc ln lt l ( xi , yi ) ,


vi i = 0, 1, y l cc im nguyn s c hin th trn mn hnh.
- Bi ton t ra l nu bit c ( xi , yi ) l ta nguyn xc nh bc th
i, im nguyn tip theo ( xi +1 , yi +1 ) s c xc nh nh th no.
- i tng hin th trn li nguyn c lin nt, cc im ( xi +1 , yi +1 ) c
th chn ch l mt trong 8 im ln cn nh hnh v.
xi
y
v yi +1 = i
yi 1
xi 1

Tc l: xi +1 =

1.2. tng chung


Cho mt thnh phn to (x hay y) bin i theo tng n v v tnh to
nguyn cn li sao cho gn vi to thc nht
Xt:
bin thin honh : x = xi+1 - xi;
bin thin tung : y = yi+1 - yi
dc: m = y(x) = lim(y/x)
Da vo dc m (so snh vi 1) quyt nh bin thin ca cc to
y > x: Chn bc tng theo y ( yi +1 = yi + 1)
y < x: Chn bc tng theo x (xi+1 = xi + 1)
15

m<
m< 11

m
m >> 11

Hnh II-1 dc ca ng thng

2. CC THUT TON V NG THNG


minh ha thut ton ta ch xt on thng trong trng hp:
- H s gc 0 < m < 1
-

Dx > 0 (x2 > x1).

Khi , nu ( xi , yi ) l im xc nh c bc th (im mu en) i:


- Chn x l thnh phn bin thin n v tnh y, tc l xi +1 = xi + 1
- Thnh phn ta cn li yi +1 bc th (i+1) s l yi hoc yi + 1 tng
ng vi mt trong hai trng hp nh hnh v.

Hnh II-2 Cc im ( xi +1 , yi +1 ) chn bc (i+1) cho trng hp


on thng c h s gc 0<m<1

xi +1 = xi + 1

Nh vy:
(0 < m < 1)
yi
y
=
i +1 y + 1
i

2.1. Thut ton DDA (Digital Differential Analyzer)


Vi thut ton DDA, vic quyt nh chn yi +1 l yi hay yi + 1 , da vo phng
trnh ca on thng y = mx + b.
Phng php:
-

Tnh ta ca im ( xi +1 , y ) thuc v on thng thc, vi y = m( xi + 1) + b


l tung thc.

yi +1 s l gi tr sau khi lm trn gi tr tung thc y. y ta s dng hm

Round lm trn n s nguyn gn nht.

16

Hnh II-3 Minh ha thut ton DDA

xi +1 = xi + 1

Nh vy :
, trong y = m( xi + 1) + b
yi
yi +1 = y + 1 = Round ( y )
i

Ci tin:

ytrc = m xi + b
ysau = m xi +1 + b = m( xi +1) + b
ysau = ytrc + m

Lu thut ton DDA (0<m<1):

17

Ci t minh ha thut ton:


Trng hp 0 < m < 1:
const Color = GREEN;
procedure LineDDA (x1, y1, x2, y2: integer);
var x, i: integer;
y, m: real;
begin
x:= x1;
y:= y1;
m:= (y2-y1)/(x2-x1);
putpixel(x, Round(y), Color);
while x < x2 do
begin
x:= x + 1;
y:= y + m;
putpixel(x, Round(y), Color);
end;
end; {LineDDA}

Trng hp tng qut:


const Color = GREEN;
procedure DDA (x1, y1, x2, y2: integer);
var dx, dy, Step, k: integer;
x_inc, y_inc, x, y: real;
begin
dx:= x2 - x1;
dy = y2 - y1;
if abs(dx) > abs(dy) then Step:= abs(dx)
else Step:= abs(dy);
x_inc:= dx/Step;
y_inc:= dy/Step;
x:= x1;
y:= y1;
putpixel(Round(x), Round(y), Color);
while x < x2 do
begin
x:= x + x_inc;
y:= y + y_inc;
putpixel(Round(x), Round(y), Color);
end;
end; {LineDDA}

18

2.2. Thut ton Bresenham


tng chnh ca thut ton Bresenham l hn ch ti a cc php ton trn s
thc trong thut ton ti u ha v mt tc so vi thut ton DDA.
Phng php:
Gi ( xi +1 , y ) l im thuc on thng thc. Ta c: y = m( xi +1) + b.
yi +1

Xt cc hiu khong cch ca tung thc y so vi cc tung nguyn yi v


chn im S( xi + 1, yi ) hay P( xi + 1, yi + 1) gn vi im thc nht.

d1 = y - yi
d 2 = ( yi + 1) - y

Xt

Nu d1 - d 2 < 0: Chn im S, tc l yi +1 = yi .

Nu d1 - d 2 0: Chn im P, tc l yi +1 = yi + 1.

pi = Dx ( d1 - d 2 )

Do Dx > 0 nn du ca d1 - d 2 cng l du ca pi . Nh vy, nu ti bc th i ta


xc nh c du ca pi th xem nh ta xc nh c im cn chn bc (i + 1).
Ta c pi = Dx(2y - 2 yi - 1)
pi = Dx {2[m( xi +1) + b]} - 2 yi - 1}
pi = 2Dy xi - 2Dx yi + 2Dy + (2b 1)Dx

(do m =

Dy
)
Dx

Suy ra p0 = 2Dy - Dx
Tht vy p0 = 2Dy x0 - 2Dx y0 + c = 2Dy x0 - 2Dx y0 + 2Dy (2b - 1)Dx
im v u tin ( x0 , y0 ) l im nguyn thuc on thng nn thay y0 = m xo
+b=

Dy
xo + b vo biu thc trn ta cng thc cui cng ca p0 .
Dx

Ci tin: Ta c th ci tin tc tnh pi mi bc lp nh sau:


t c = 2Dy + (2b 1)Dx
Khi : pi = 2Dy xi - 2Dx yi + c
19

Ta c:
pi +1 - pi = (2Dy xi +1 - 2Dx yi +1 + c) - (2Dy xi - 2Dx yi + c)

pi +1 - pi = 2Dy( xi +1 - xi ) - 2Dx( yi +1 - yi )
pi +1 - pi = 2Dy - 2Dx( yi +1 - yi )
(do xi +1 = xi + 1)
T y ta c:
-

Nu pi < 0 : pi +1 = pi + 2Dy v yi +1 = yi .
Nu pi 0 : pi +1 = pi + 2Dy 2Dx v yi +1 = yi + 1.

Lu thut ton Bresenham

20

Ci t minh ha thut ton Bresenham


const Color = GREEN;
procedure LineBres (x1, y1, x2, y2: integer);
var Dx, Dy, p, Const1, Const2: integer;
x, y: integer;
begin
Dx:= x2 - x1;
Dy:= y2 - y1;
p:= 2*Dy - Dx;
Const1:= 2*Dy;
Const2:= 2*(Dy-Dx);
x:= x1;
y:= y1;
putpixel(x, y, Color);
while x < x2 do
begin
if (p<0) then
p:= p + Const1;
else
begin
p:= p + Const2;
y:= y + 1;
end;
x:= x + 1;
putpixel(x, y, Color);
end;
end; {LineBres}

2.3. Thut ton MidPoint


Thut ton MidPoint a ra cch chn yi +1 l yi hay yi +1 bng cch so snh im
thc Q( xi +1 , y) vi im MidPoint l trung im ca S v P. Ta c :
-

Nu im Q nm di im MidPoint, ta chn S.
Ngc li, nu im Q nm trn im MidPoint ta chn P.

Phng php:
Ta c dng tng qut ca phng trnh ng thng :
Ax + By + C = 0
vi A = y2 - y1 , B = - ( x2 - x1 ), C = x1 y2 - x2 y1
21

t F(x, y) = Ax + By + C ta c nhn xt :

Lc ny vic chn cc im S, P trn c a v vic xt du ca:


.
- Nu pi < 0: im thc Q nm di im MidPoint chn S: yi +1 = yi
- Nu pi 0: im thc Q nm trn im MidPoint chn P: yi +1 = yi + 1.
Ta cng d dng tnh c p0 nh sau:

Mt khc :

Vy :
- Nu pi < 0: pi +1 = pi + 2Dy v yi +1 = yi
- Nu pi 0: pi +1 = pi - 2Dx v yi +1 = yi + 1.
Thut ton MidPoint cho kt qu tng t nh thut ton Bresenham.

3. THUT TON V NG TRN


3.1. Mt s nhn xt
- Ch cn xt dng phng trnh ng trn c tm l gc ta , bn knh R
(ch cn tnh tin cc im sau khi v theo vector tnh tin ( xc , yc ) ta s c ng trn
c tm ( xc , yc ) bt k):
x 2 + y 2 = R 2 (1)
x = Rcos
hoc
(0 2 ) (2)
y = Rsin
- Mt cch tng qut ta, v ton b ng trn, ta ch cn v cung
ng trn sau ly i xng xc nh cc im cn li Trong mt s trng hp,
ta ch cn v cung (C1/8) l cung 1/8 ng trn, sau ly i xng.
22

(C1/8):

Nh vy:
(C) = {(x, y), (y, x), (y,-x), (x,-y), (-x,-y), (-y,-x), (-y,x), (-x,y) | (x, y)(C1/8)}.
- i vi dng (2) ta c th cho chy t 00 n 900, tuy nhin im hn ch
chnh ca thut ton ny l chn bc nhy cho nh th no cho ph hp khi bn
knh thay i (thng ta chn bc nhy l 1/R) .

3.2. Thut ton MidPoint


Tng t nh thut ton MidPoint v on thng, vic quyt nh chn mt
trong hai im S v P s c thc hin thng qua vic xt du ca mt hm no ti
im MidPoint l im nm gia chng.

Phng php:
Chn im bt u v l im (0,R). Da vo hnh v, nu
l im
nguyn tm c bc th i, th im
bc th (i+1) l s la chn
gia S v P.
xi +1 = xi + 1

Nh vy :
yi
y
=
i
+
1
y 1

t F(x, y) = x 2 + y 2 - R 2 , ta c :

23

Xt biu thc:

- Nu pi < 0: im MidPoint nm trong ng trn, Q gn S hn nn


chn S: yi +1 = yi
- Nu pi 0: im MidPoint nm ngoi ng trn, im thc Q gn P hn
chn P: yi +1 = yi - 1.
Ta tnh gi tr p0 ng vi im ban u ( x0 , y0 ) = (0, R).

Mt khc :

Nh vy :
Nu

th

Nu

th

24

Lu thut ton MidPoint v ng trn

25

Ci t minh ha thut ton MidPoint v ng trn

const Color = GREEN;

{Ve duong tron theo thuat toan MidPoint}

procedure CircleMidPoint (xc, yc, R: integer);

{Ve 8 diem doi xung}

procedure Put8Pixel(x: integer, y: integer);


begin
putpixel(xc + x, yc + y, Color);
putpixel(xc + y, yc + x, Color);
putpixel(xc + y, yc - x, Color);
putpixel(xc + x, yc - y, Color);
putpixel(xc - x, yc - y, Color);
putpixel(xc - y, yc - x, Color);
putpixel(xc - y, yc + x, Color);
putpixel(xc - x, yc + y, Color);
end;
{Put8Pixel}
var x, y: integer;
begin
x = 0;
y = R;
Put8Pixel(x, y);
p = 1 - R; {thay cho 5/4-R}
while (x < y) do
begin
if (p < 0) then p:= p + 2*x + 3
else
begin
p:= p + 2*(x -y) + 5;
y:= y - 1;
end;
x:= x + 1;
Put8Pixel(x, y);
end;
end; {CircleMidPoint}

26

4. THUT TON V ELLP


4.1. Phng trnh Ellp
Ta ch xt phng trnh Ellp c tm O v bn knh cc trc l a, b. Khi
phng trnh ca Ellp c dng sau:
x2
y2
+
=1
a2
b2

Tng t thut ton v ng trn, y ta ch v cung Ellp gc phn t th


nht, sau ly i xng qua cc trc ta s c ton b Ellip cn v.

4.2. Thut ton Bresenham


Xt Ellip gc phn t th nht:
b2
x
Ta c: y = - 2 . < 0, v
y
a

Nu y =

b2
x
. < 1 th ta chn bc tng tng n v theo trc x,
2
y
a

tc l:
xi +1 = xi + 1

yi

yi +1 = y 1
i

b2
x
.
1 th ta chn bc tng tng n v theo trc y.
2
y
a
b2
x
< 1 bng cch i h ta (X, Y)
Trng hp ny c th a v trng hp 2 .
y
a

Nu y =

thnh (Y, X), tc l c s thay i vai tr gia x v y.


Nh vy, ta chia cung ellp ra lm 2 phn da vo vic so snh o hm vi 1.
Ta xt trng hp c trng c y =

b2
x
. < 1.
2
y
a

Tng t thut ton Bresenham khc, ta t:


d 1 = y i2 - y i2+1
d 2 = y i2+1 - ( y 1)

Pi = d 1 - d 2

Ta c kt qu sau:
2b 2
(2 xi + 3) v yi +1 = y i
a2
2b 2
Nu Pi 0 th Pi +1 = Pi + 2 (2 xi + 3) + 4(1 - yi ) v y i +1 = yi - 1
a
2b 2
Thay ta im u tin (0, b), ta c P0 = 2 - 2b + 1.
a

Nu Pi < 0 th Pi +1 = Pi +

27

Ci t minh ha
procedure Ellip(xc, yc, a, b: integer);
var

x, y: integer;
z1, z2, P: real;
{Ve 4 diem doi xung}
procedure Put4Pixel(x: integer, y: integer);
begin
putpixel(xc + x, yc + y, Color);
putpixel(xc + x, yc - y, Color);
putpixel(xc - x, yc - y, Color);
putpixel(xc - x, yc + y, Color);
end;
{Put4Pixel}

begin
x:= 0; y:= b;
z1:= (b*b)/(a*a);
z2:= (a*a)/(b*b);
P:= 2*z1 2*b + 1;
while (z1*(x/y) <= 1) do
begin
Put4Pixel(x, y, color);
If P < 0 then P:= P + 2*z1*(2*x + 3)
Else
begin
P:= P + 2*z1*(2*x + 3) + 4*(1 - y);
y:= y -1
end;
x:= x + 1;
end;
{i vai tr x v y}
x:= a; y:= 0;
P:= 2*z2 2*a + 1;
while (z2*(y/x) < 1) do
begin
Put4Pixel(x, y, color);
If P < 0 then P:= P + 2*z2*(2*x + 3)
Else
begin
P:= P + 2*z2*(2*y + 3) + 4*(1 - x);
x:= x -1
end;
y:= y + 1;
end;
end;

28

5. THUT TON V CC NG CONIC KHC


Phng trnh tng qut ca cc ng conics c dng :
Gi tr ca cc hng s A, B, C, D, E, F s quyt nh dng ca ng conics,
c th l nu:

Ta s p dng tng ca thut ton MidPoint v cc ng conics v mt


s ng cong khc, theo cc bc tun t sau:
Bc 1 : Da vo dng iu v phng trnh ng cong rt gn phn
ng cong cn v (tnh i xng, tnh cht ca hm chn, hm l, ...)
Bc 2 : Tnh o hm t phn thnh cc vng v :
Cc trng hp ca o hm

Tnh bin thin ca ta

Bc 3 : Xc nh cng thc ca pi cho tng trng hp quyt nh (*) da


trn du ca pi c xy dng t phng trnh ng cong cho pi = 0 nu ( xi , yi )
thuc v ng cong. Vic chn pi cn phi ch sao cho thao tc tnh pi sau ny
hn ch php ton trn s thc.
Bc 4 : Tm mi lin quan ca pi +1 v pi bng cch xt hiu pi +1 - pi .
Bc 5 : Tnh p0 v hon chnh thut ton

29

CHNG III.

CC THUT TON T MU

1. MT S THUT TON LIN QUAN


1.1. Thut ton kim tra a gic li hay lm
1.1.1. nh ngha
- nh ngha 1: Mt a gic l a gic li nu bt k ng thng no i
qua mt cnh ca a gic th ton b a gic nm v mt pha ca ng thng .
Ngc li s tn ti mt cnh chia a gic thnh 2 phn nu a gic l lm.

- nh ngha 2: Mt a gic l li nu khi ta i dc theo bin ca n th ch


i theo mt hng m thi; ngha l ch quo phi hay ch quo tri m thi. Ngc li
a gic l a gic lm.

1.1.2. Thut ton


a. Thut ton 1
Input: a gic (danh sch nh v s nh ca a gic)
Output: a gic l li hay lm
Bc 1: Ln lt lp tt c cc phng trnh ng thng qua
cc cnh ca a gic.
Bc 2: ng vi tng phng trnh ng thng cha cnh ca a
gic, ta xt xem cc im (nh) cn li ca a gic c nm v
cng mt pha i vi ng thng hay khng. Nu tn ti mt
nh nm khc pha th a gic ang xt l a gic lm. Ngc
li a gic l li.

30

b. Thut ton 2

Xt 2 vector a ( ax , a y ) v b ( bx , by ) trong mt phng Oxy.


r r

t T( a , b ) =
Khi :

ax

ay

bx

by

= ax by - a y bx

r
r r
r
a quo tri sang b nu T( a , b ) 0
r
r r
r
a quo phi sang b nu T( a , b ) < 0

r
b

r
a

r
b

r
a

Thut ton:
Input:

n: s nh ca a gic
P0 , P1 , ..., Pn , Pn +1 P0 cc nh ca a gic
Output: a gic l li hay lm?

uuuuur

Bc 1: Tnh vi = Pi +1 Pi vi i = 0, 1, ..., n

Bc 2: Tnh Ti = ( vi , vi +1 ) vi i = 0, 1, ..., n -1
Bc 3: Nu mi Ti u cng du th a gic l li. Ngc li a gic
l lm

31

1.2. Thut ton kim tra im nm trong


Input:
P: im cn xt
Points: Danh sch cc nh ca a gic (Point[n+1] Points[0])
n: S nh ca a gic
Output:
True: Nu nh P nm trong a gic
False: Nu nh P nm ngoi a gic

function PointInPoly(P: Point; Points: array of Point;


n: integer):Boolean;
var Check, count, i:integer;
x_cut:integer;
a,b,c:real;
begin
count:=0;
for i:=0 to n-1 do
if Points[i].y = P.y then
Begin
if points[i].x >= P.x then
begin
if (((points[(i+n-1)mod n].y<points[i].y)and
(points[i].y<points[(i+n+1)mod n].y))or
((points[(i+n-1)mod n].y>points[i].y)and
(points[i].y>points[(i+n+1)mod n].y)))
then count:=count+1;
if points[(i+n+1)mod n].y = p.y then
if (((points[(i+n-1)mod n].y<points[i].y)and
(points[i].y<points[(i+n+2)mod n].y))or
((points[(i+n-1)mod n].y>points[i].y)and
(points[i].y>points[(i+n+2)mod n].y)))
then count:=count+1;
end;
end
else
if (((points[i].y<p.y)and(p.y<points[(i+n+1)mod n].y))or
((points[i].y>p.y)and(p.y>points[(i+n+1)mod n].y)))then
begin
a:=(points[(i+n+1)mod n].x-points[i].x);
b:=(p.y-points[i].y);
c:=(points[(i+n+1)mod n].y-points[i].y);
x_cut:=points[i].x+Round(a*b/c);
if x_cut>p.x then count:=count+1;
end;
Check:=count mod 2;
PointInPoly:=(check <>0);
End;

32

2. CC THUT TON C BN
Mt vng t thng c xc nh bi mt ng khp kn no gi l
ng bin. Mt trong nhng dng ng bin n gin nht l a gic.
t mu mt vng t, ngi ta thng chia lm hai cng on : cng on
th nht l xc nh cc im no t v cng on cn li n gin hn l quyt
nh t cc im bng gi tr mu no. Cng on th hai ch thc s phc tp nu
ta t theo mt mu t no khng phi l t thun mt mu.

2.1. Thut ton t n gin


tng ca thut ton l xc nh cc pixel tng ng thuc vng t t mu
cho n. Ta c thut ton t n gin nh sau:
Thut ton
Bc 1: T hnh ch nht nh nht c cc cnh song song
vi hai trc ta cha a gic cn t. T y ta xc nh
c 2 ta ( xmin , ymin ) v ( xmax , ymax ). N chnh l ta gc
trn bn tri v gc di bn phi ca hnh ch nht (trn mn
hnh thit b.
Bc 2: Cho

x = xmin , xmin + 1,K , xmax


. T mu nhng im (x,y)

y = ymin , ymin + 1,K , ymax

thuc a gic

2.2. Thut ton t mu theo dng qut


Gi s vng t c cho bi mt a gic N nh :
ny c th l a gic li, a gic lm, v c a gic t ct,

. a gic

Hnh sau minh ha tng chnh ca thut ton. Vi mi dng qut, ta s xc


nh phn giao ca a gic v dng qut ri t mu cc pixel thuc on giao .
xc nh cc on giao ta tin hnh vic tm giao im ca dng qut vi cc cnh ca
a gic, sau cc giao im ny s c sp theo th t tng dn ca honh giao
im. Cc on giao chnh l cc on thng c gii hn bi tng cp giao im
mt, v d nh (0,1), (2,3), .

Hnh III-1. Thut ton scan-line vi mt dng qut no

Ta c th tm bt cc bc chnh ca thut ton :


,
ln lt l gi tr ln nht, nh nht ca tp cc tung ca cc
Tm
,
.
nh ca a gic cho
33

ng vi mi dng qut

, vi k thay i t

Tm tt c cc honh giao im ca dng qut


gic.

, lp :
vi cc cnh ca a

Sp xp cc honh giao im theo th t tng dn : x0, x1,


T mu cc on thng trn ng thng
.
cc cp

ln lt c gii hn bi

Nu ch dng mc ny v chuyn sang ci t, chng ta s gp mt s vn


sau :
Nhn xt rng, ng vi mi dng qut, khng phi lc no tt c cc cnh ca
a gic cng tham gia ct dng qut. Do ci thin tc cn phi c mt cch
no hn ch c s cnh cn tm giao im ng vi mi dng qut.
Vic tm giao im ca cnh a gic vi mi dng qut s gp cc php ton
phc tp nh nhn, chia, trn s thc nu ta dng cch gii h phng trnh tm
giao im. iu ny s lm gim tc thut ton khi phi lp i lp li nhiu ln thao
tc ny khi dng qut qut qua a gic.
Nu s giao im tm c gia cc cnh a gic v dng qut l l th vic
nhm tng cp giao im k tip nhau hnh thnh cc on t c th s khng chnh
xc. iu ny ch xy ra khi dng qut i ngang qua cc nh ca a gic. Nu tnh s
giao im ti nh dng qut i ngang qua l hai th c th s cho kt qu t khng
chnh xc. Ngoi ra, vic tm giao im ca dng qut vi cc cnh nm ngang l mt
trng hp c bit cn phi c cch x l thch hp.
gii quyt cc vn trn, cn phi xy dng mt cu trc d liu v thut
ton thch hp i vi chng.

Hnh III-2. Dng qut y=k2 i ngang qua nh c th s cho kt qu t


khng chnh xc so vi dng qut y=k1

2.3. Thut ton t mu da theo ng bin


2.3.1. Thut ton
Bt u t im nm bn trong vng t, ta s kim tra cc im ln cn ca n
c t mu hay c phi l im bin hay khng, nu khng phi l im t v
khng phi l im bin ta s t mu n. Qu trnh ny c lp li cho ti khi no
khng cn t c im no na th dng. Bng cch ny, ton b cc im thuc
vng t c kim tra v s c t ht.

34

Hnh III-3. Thut ton t mu da theo ng bin

C hai quan im v cch t ny, l dng 4 im ln cn hay 8 im ln cn


i vi im ang xt c t bng mu trng.

( xi -1, y i +1)
( xi -1, y i )
( xi -1, y i -1)

( xi , y i +1)
( xi , y i )
( xi , y i -1)

( xi +1, y i +1)
( xi +1, y i )
( xi +1, y i -1)

Hnh III-4. 4 im ln cn (a) v 8 im ln cn (b)

on chng trnh sau minh ha ci t thut ton t mu da theo ng bin


s dng phng php t 4 im ln cn.
2.3.2. Ci t minh ha thut ton t mu da theo ng bin
procedure BoundaryFill(x, y, FillColor, BoundaryColor: integer);
var CurrentColor: integer;
begin
CurrentColor:= getpixel(x,y);
if
(CurrentColor <> BoundaryColor) and
(CurrentColor <> FillColor)then
begin
putpixel(x, y, FillColor);
BoundaryFill(x-1, y, FillColor, BoundaryColor);
BoundaryFill(x, y+1, FillColor, BoundaryColor);
BoundaryFill(x+1, y, FillColor, BoundaryColor);
BoundaryFill(x, y-1, FillColor, BoundaryColor);
end;
end; {Boundary Fill}

Thut ton ny c tnh quy, do khi ci t thng gy li trn b nh khi


vng t kh ln, do ci tin chng ta c th tin hnh loang dn v ln lt t
tng on giao theo dng qut ngang thay v t theo 4 im ln cn.

35

CHNG IV.

CC THUT TON XN NH

1. KHI NIM
Thao tc loi b cc phn hnh nh nm ngoi mt vng cho trc c gi l
xn hnh. Vng c dng xn hnh gi l ca s xn (clip window) hay ca s.
Ty thuc vo tng ng dng c th m ca s xn c th c dng l a gic
hay l ng cong khp kn. Trong phn ny chng ta s kho st cc thut ton xn
hnh vo ca s xn l hnh ch nht.

2. CC THUT TON XN ON THNG


Gi s ca s xn l ca s hnh ch nht c ta ca cc im di bn tri
v im trn bn phi ln lt l
v
.
c coi l nm bn trong ca s nu tha h bt phng trnh:
Mt im

By gi, ta s xt bi ton xn on thng c cho bi hai im


vo ca s hnh ch nht trn.

Hnh IV-1. Minh ha thao tc xn cc on thng vo mt ca s hnh ch nht.


Trc khi xn (a). Sau khi xn (b).

tng chung ca cc thut ton xn on thng l loi b php ton tm


giao im gia on thng vi bin ca ca s mt cch nhanh nht i vi cc on
thng c bit nh nm hon ton trong hoc hon ton bn ngoi ca s (v d nh
on P1P2 v P3P4 trong hnh 4.6). i vi cc on thng c kh nng ct ca s, cn
phi a ra cch tm giao im tht nhanh.
Nhn xt rng, cc on thng m c c hai im nm hon ton trong ca s
th c on thng nm trong ca s, y cng chnh l kt qu sau khi xn (v d nh
on thng P1P2), mt khc i vi cc on thng m c hai im nm v cng mt
pha ca ca s th lun nm ngoi ca s v s b mt sau khi xn (v d nh on
thng P3P4). Vi cc on thng c kh nng ct ca s (v d nh on thng P5P6 v
P7P8) vic tm giao im nhanh cn rt gn vic tm giao im vi nhng bin ca
s khng cn thit xc nh phn giao nu c ca on thng v ca s.
Ngi ta thng s dng phng trnh tham s ca on thng trong vic tm
giao im gia on thng vi ca s.

Nu giao im ng vi gi tr t nm ngoi on
thuc v ca s.
36

th giao im s khng

2.1. Thut ton Cohen-Sutherland


2.1.1. Khi nim m vng (area code)
Mt con s 4 bit nh phn gi l m vng s c gn cho mi vng m t v
tr tng i ca vng so vi ca s. Bng cch nh s t 1 n 4 theo th t t
phi qua tri, cc bit ca m vng c dng theo quy c sau ch mt trong bn v
tr tng i ca vng so vi ca s bao gm : tri, phi, trn, di.
Bit 1 : tri (LEFT)
Bit 2 : phi (RIGHT)
Bit 3 : trn (TOP)
Bit 4 : di (BOTTOM)
Gi tr 1 tng ng vi v tr bit no trong m vng s ch ra rng im v tr
tng ng, ngc li bit s c t bng 0. V d mt vng c m l 1001, th n
s nm pha di (bit 4 bng 1), bn tri (bit 1 bng 1) so vi ca s, vng c m l
0000 chnh l ca s.

Hnh IV-2. M vng quy nh v tr tng i ca vng so vi ca s

Cc gi tr bit trong m vng c tnh bng cch xc nh ta ca im


thuc vng vi cc bin ca ca s. Bit 1 c t l 1 nu
, cc bit khc
c tnh tng t.
2.1.2. Thut ton
Gn m vng tng ng cho cc im u cui
. Ta c nhn xt :
lt l

ca on thng cn xn ln

Cc on thng nm hon ton bn trong ca s s c


vi cc on ny, kt qu sau khi xn l chnh n.

, ng

, sao cho vi bit th k ca


u c gi tr 1, lc
Nu tn ti
ny on thng s nm v cng pha ng vi bit k so vi ca s, do nm hon ton
ngoi ca s. on ny s b loi b sau khi xn. V d, nu
, r rng
bit 1 ca chng u bng 1 (ng vi bin tri), do on thng nm hon ton v
bin tri ca ca s. xc nh tnh cht ny, n gin ch cn thc hin php ton
logic AND trn
. Nu kt qu khc 0000, on thng s nm hon ton ngoi ca
s.
khng thuc v hai trng hp trn, on thng c th hoc
Nu
) chc chn s tn ti mt im nm
khng ct ngang ca s (v d on
ngoi ca s, khng mt tnh tng qut gi s im l . Bng cch xt m vng
ca l ta c th xc nh c cc bin m on thng c th ct t chn
37

ca on thng vi bin . Lc ny, on


mt bin v tin hnh tm giao im
. Ti y chng ta li lp li thao tc xt cho
thng ban u c xn thnh
cho ti khi xc nh c phn nm trong hoc loi b ton b
on thng mi
on thng.
, ta s
Chng ta minh ha thut ton bng hnh di y. Vi on thng
ln lt vi cc bin tri, phi, di, trn v tm ra im ny nm di ca
kim tra
ca on thng vi bin di. Lc ny on
s, sau chng ta tm giao im
. V
nm ngoi ca s nn bng cch
thng ban u c xn ngn li thnh
ca
vi bin trn v lc ny
xt tng t, chng ta s tin hnh tm giao im
, chnh l phn nm hon ton trong ca s.
on
Trong trng hp on
,
nm bn tri ca s nn chng ta c th xc
, v t loi b on thng
. Bng cch kim tra m vng,
nh im giao
nm hon ton bn di ca s nn
chng ta d dng xc nh c on thng
c th b i ton b.

Hnh IV-3. Minh ha thut ton Cohen - Sutherland

Cc im giao vi cc bin ca s ca on thng c th c tnh t phng


trnh tham s nh cp phn trn. Tung y ca im giao on thng vi bin
ng ca ca s c th tnh t cng thc
, trong x c th l
hay
. Tng t, honh x ca im giao on thng vi bin ngang ca ca s c th
, trong y c th l
hay
.
tnh t cng thc :
Ci t minh ha thut ton Cohen - Sutherland
const

LEFT = 1;
RIGHT = 2;
TOP = 4;
BOTTOM = 8;

{0001}
{0010}
{0100}
{1000}

type POINT = record


x, y: integer;
end;
RECT = record
Left, Top, Right, Bottom: integer;
end;
CODE = integer;

38

funtion Accept(a,b: integer): integer;


begin Accept:= (not (a or b)); end;
funtion Reject(a,b: integer): integer;
begin Reject:= (a and b); end;
{Tra ve ma vung cua p la c}
procedure EnCode(p: POINT; var c: CODE; rWin: RECT)
begin
c:= 0;
if(p.x < rWin.Left) then
c:= c or LEFT;
if(p.x > rWin.Right) then
c:= c or RIGHT;
if(p.y > rWin.Top) then
c:= c or TOP;
if(p.y < rWin.Bottom) then
c:= c or BOTTOM;
end;
{Hoan vi hai diem p1 va p2 sao cho p1 luon nam ngoai cua so}
procedure SwapPoint(var p1: POINT; var p2: POINT;var c1, c2: CODE)
var p: POINT; c: CODE;
begin
if (not c1) <>0 then {Neu p1 nam hoan toan trong cua so}
begin
P:= p1;
p1:= p2;
p2:= p;
c:= c1;
c1:= c2;
c2:= c;
end;
end;
{Tra ve TRUE neu co cat cua so. Nguoc lai tra ve FALSE}
function CohenSutherlandClipping(P1: POINT; P2: POINT;var Q1, Q2: POINT;
rWin: RECT): Boolean;
var c1, c2: CODE;
fStop, fResult: boolean;
m: real;
begin
fStop:= FALSE;
fResult:= FALSE;
while (not fStop) do
begin
EnCode(P1, c1, rWin);
EnCode(P2, c2, rWin);
{Neu duong thang nam hoan toan ben trong cua so}
If (Accept(c1, c2) <> 0) then
begin
fStop:= TRUE; {break}
fResult:= TRUE;
end {Accept}
else
begin
{Neu duong thang nam hoan toan ben ngoai cua so}

39

If (Reject(c1,c2) <> 0) then


begin
fStop:= TRUE; {break}
end {Reject}
else {Xet truong hop duong thang co the cat cua so}
begin
SwapPoint(P1, P2, c1, c2);
If (P2.x<>P1.x) then
m:= (P2.y-P1.y)/(P2.x-P1.x);
if (c1 and LEFT) <> 0 then
begin
P1.y:= P1.y + (rWin.Left-P1.x)*m;
P1.x:= rWin.Left;
end {Left}
else
begin
if (c1 and RIGHT) <> 0 then
begin
P1.y:= P1.y + (rWin.Right-P1.x)*m;
P1.x:= rWin.Right;
end {Right}
else
begin
if (c1 and TOP) <> 0 then
begin
if (P2.x<>P1.x) <> 0 then
P1.x:= P1.x+(rWin.Top-P1.y)/m;
P1.y:= rWin.Top;
end {Top}
else {Bottom}
begin
if (P2.x <> P1.x) then
P1.x:= P1.x+(rWin.BottomP1.y)/m;
P1.y:= rWin.Bottom;
end {Bottom}
end
end
end {Xet truong hop duong thang co the cat cua so}
end
end; {while}
Q1:= P1;
Q2:= P2;
CohenSutherlandClipping:= fResult;
end; {CohenSutherlandClipping}

40

2.2. Thut ton Liang-Barsky


Thut ton Liang-Barsky c pht trin da vo vic phn tch dng tham s
ca phng trnh on thng.

ng vi mi gi tr t, ta s c mt im P tng ng thuc ng thng.


Cc im ng vi

s thuc v tia P2x.

Cc im ng vi

s thuc v tia P2x.

Cc im ng vi

s thuc v on thng

Hnh IV-4. Phng trnh tham s ca on thng

Tp hp cc im thuc v phn giao ca on thng v ca s ng vi cc gi


tr t tha h bt phng trnh :

t:

Lc ny ta vit h phng trnh trn di dng :

Nh vy vic tm on giao thc cht l tm nghim ca h bt phng trnh


ny. C hai kh nng xy ra l :
H bt phng trnh v nghim, ngha l ng thng khng c phn giao vi
ca s nn s b loi b.
H bt phng trnh c nghim, lc ny tp nghim s l cc gi tr t tha
.
41

Ta xt cc trng hp :
Nu
v nghim, do h v nghim.

th r rng bt phng trnh ng vi k trn l

th vi cc bt phng trnh m ng vi
Nu
pk = 0 l cc bt phng trnh hin nhin, lc ny h bt phng trnh cn gii tng
ng vi h bt phng trnh c pk 0.
Vi cc bt phng trnh

Vi cc bt phng trnh
m
Vy nghim ca h bt phng trnh l

Nu h trn c nghim th on giao

, ta c

, ta c
vi :

s l:
.

Nu xt thut ton ny kha cnh hnh hc ta c :


tng ng vi trng hp on thng
Trng hp
) v nm ngoi ca s
cn xt song song vi mt trong cc bin ca ca s (
) nn s b loi b sau khi xn.
(
Vi
, gi tr
s tng ng vi giao im ca on thng vi
, ko di cc bin ca s v on thng
bin k ko di ca ca s. Trng hp
v v cc, ta c ng thng ang xt s c hng i t bn ngoi vo bn trong ca
s. Nu
, ng thng s c hng i t bn trong ca s i ra. Do hai u
c tnh nh sau : Gi tr chnh l gi
mt ca on giao s ng vi cc gi tr
m
(ng thng i t ngoi vo trong ca s) v
tr ln nht ca cc
0; gi tr chnh l gi tr nh nht ca cc
m
(ng thng i t
trong ca s i ra) v 1.

Hnh IV-5. Xt vi bin tri on thng P1P2 c hng i t ngoi vo trong, nhng so vi bin phi on
thng P1P2 li c hng i t trong ca s i ra

42

Khi ci t thut ton Liang-Barsky, ban u cc gi tr t1, t2 c khi ng


. Vi mi ln xn on thng vi mt bin ca ca s, cc gi tr
s
c truyn cho hm ClipTest xc nh on thng c b loi b hay b xn bt mt
on hay khng. Khi
, tham s
s c xem xt cp nht , khi
,
, on thng s b loi b. Ngoi
r dng cp nht . Khi cp nht v nu
ra nu (p=0 v q<0), chng ta cng s loi b on thng v n song song v nm
ngoi ca s. Nu on thng khng b loi b sau bn ln gi vi cc tham s p, q
tng ng vi cc bin ca ca s, cc gi tr v s c dng suy ra ta hai
im u mt ca on giao.
Ci t minh ha thut ton Liang - Barsky
{Tra ve TRUE neu khong xay ra truong hop nam ngoai cua so}
function ClipTest(p, q: integer; var t1, t2: real): Boolean;
var r: real;
begin
if (p < 0) then
begin
r:= q/p;
if (r > t2) then
ClipTest:= FALSE
else
if (r > t1) then
t1:= r;
end
else
begin
if (p > 0) then
begin
r:= q/p;
if (r < t1) then
ClipTest:= FALSE
else
if (r < t2) then
t2:= r;
end
else {p=0}
begin
if (q < 0) then
ClipTest:= FALSE
end
end;
ClipTest:= TRUE
end;

43

function LiangBarskyClipping(P1, P2: POINT; R: RECT;


var Q1, Q2:POINT): Boolean;
var t1, t2: real;
Dx, Dy, x1, y1, x2, y2: integer;
xmin, ymin, xmax, ymax: integer;
begin
t1:= 0;
t2:= 1;
x1:= P1.x;
y1:= P1.y;
x2:= P2.x;
y2:= P2.y;
Dx:= x2 - x1;
Dy:= y2 - y1;
xmin:= R.Left;
ymin:= R.Top;
xmax:= R.Right;
ymax:= R.Bottom;
if (ClipTest(-Dx, x1 - xmin, t1, t2)) then
{Giai he bat phuong trinh 1}
begin
if (ClipTest(Dx, xmax - x1, t1, t2)) then
{Giai he bat phuong trinh 2}
begin
if (ClipTest(-Dy, y1 - ymin, t1, t2)) then
{Giai he bat phuong trinh 3}
begin
if (ClipTest(Dy, ymax - y1, t1, t2)) then
{Giai he bat phuong trinh 4}
begin
Q1.x:= x1 + t1. Dx;
Q1.y:= y1 + t1. Dy;
Q2.x:= x1 + t2. Dx;
Q2.y:= y1 + t2. Dy;
LiangBarskyClipping := TRUE;
end {Giai he bat phuong trinh 4}
end {Giai he bat phuong trinh 3}
end {Giai he bat phuong trinh 2}
end {Giai he bat phuong trinh 1}

LiangBarskyClipping := FALSE;
end; {LiangBarskyClipping}

Thng thng, thut ton Liang-Barsky cho tc tt hn thut ton CohenSutherland v rt gn c s giao im cn tnh. Mi ln cp nht cc gi tr
, ch
cn mt php chia, v giao im ca on thng vi ca s ch c tnh duy nht mt
ln sau khi tm ra c gi tr
. Trong khi thut ton Cohen-Sutherland i
lc phi tnh giao im cho cc im khng nm trong bin ca ca s i hi nhiu
php ton hn.

44

CHNG V.

CC PHP BIN I TRONG


HA HAI CHIU

Ta c th d dng thao tc ln cc i tng c to ra nh vo cc php


bin i hnh hc. Cc php bin i hnh hc s lm thay i m t v ta ca cc
i tng, t lm cho i tng b thay i v hng, kch thc v hnh dng. Cc
php bin i hnh hc c s bao gm : tnh tin (translation), quay (rotation) v bin
i t l (scaling).
C hai quan im v php bin i hnh hc l : bin i i tng (object
transformation) v bin i h ta (coordinate transformation). Bin i i tng
l thay i ta ca cc im m t n theo mt quy tc no , cn bin i h ta
l to ra mt h ta mi v tt c cc im m t i tng s c chuyn v
h ta mi. Hai cch ny c nhng mi lin h cht ch vi nhau v mi cch u
c nhng li th ring. y ta ch xt cc php bin i i tng.

1. CC PHP BIN I HNH HC C S


1.1. nh ngha
Mt php bin i im l mt nh x T c nh ngha :

tc l T l hm 2 bin bin im (x, y) thnh im (x, y) theo dng:

Php bin i affine l php bin i vi


tnh. Php bin i ny c dng:

f(x, y) v g(x, y) l cc hm tuyn

.
Sau y ta ch kho st cc php bin i affine.

1.2. Php tnh tin


-

Php tnh tin dch chuyn i tng t v tr ny sang mt v tr khc.

- Biu thc ca php tnh tin mt im P(x, y) thnh im Q(x, y) theo


di trx , try :

trx , try : di theo trc honh v trc tung;


( trx , try ): Vector tnh tin (vector di).
Chng ta c th dch chuyn ton b mt i tng bng cch p dng quy tc
trn cho mi im thuc i tng.
45

Hnh V-1. Php tnh tin mt im (a) v i tng (b)

1.3. Php bin i t l


- Php bin i t l lm thay i kch thc i tng bng cch co hay dn
cc thnh phn ta theo cc h s.
- Biu thc ca php bin i t l im P(x, y) thnh im Q(x, y) vi cc
h s t l sx v s y :

sx , s y : H s t l theo trc x v trc y;


sx < 1, s y < 1: Php bin i s thu nh i tng
sx < 1, s y < 1: Php bin i s phng to i tng
sx = s y : Php ng dng (uniform scaling).

Tm t l l im khng b thay i qua php bin i t l.

Hnh V-2. Php bin i t l

1.4. Php quay quanh gc ta


-

Php quay lm thay i hng ca i tng

- Biu thc ca php quay im P(x, y) quanh gc ta mt gc thnh


im Q(x, y):

Mt php quay i hi phi c tm quay, gc quay. Gc quay dng thng


c quy c l chiu ngc chiu kim ng h.

Hnh V-3. Php quay mt i tng quanh gc ta

46

2. BIU DIN CC PHP BIN I


2.1. H ta thun nht
Ta thun nht ca mt im c ta (x, y) trn mt phng c biu din
bng b ba s t l ( xk , yk , h) khng ng thi bng 0 cho bi cng thc :

Nu mt im c ta thun nht l (x, y , z) th n cng c ta thun nht


l (h.x, h.y, h) trong h l s thc khc 0 bt k. Ta thun nht ca mt im
trong khng gian ba chiu hay c s chiu ln hn cng c xc nh tng t.
n gin ha chng ta c th chn h = 1, lc ny mi im P(x, y) s c
biu din di dng ta thun nht l P(x, y, 1).

2.2. Biu din ma trn ca cc php bin i


Trong nhiu ng dng ha, ngi dng thng xuyn c nhu cu thc hin
nhiu php bin i hnh hc khc nhau trn mt i tng. Chng hn nh chng ta
cn phi thc hin nhiu php tnh tin, quay, t l, hay sau khi thc hin cc php bin
i nhng khng c ng , ngi dng mun tr li hin trng trc khi bin i
(undo), Do cn phi c mt cch no c th x l dy cc php bin i
trn c nhanh chng v hiu qu.
Ta biu din ta ca im P(x, y) v Q(x, y) di dng cc vector dng ln
lt l (x, y) v (x, y).
2.2.1. Php tnh tin

vi

hay
2.2.2. Php bin i t l

vi

hay

2.2.3. Php bin quay quanh gc ta

hay

vi

47

2.3. Biu din cc php bin i di dng ta thun nht


Trong h ta thun nht, c ba php bin i trn u c biu din di
dng tch cc ma trn. iu ny gip cho vic kho st cc tnh cht v s kt hp ca
cc php bin i ny c thun tin do mi php bin i c i din bi mt ma
trn duy nht.
2.3.1. Php tnh tin

hay

vi

2.3.2. Php bin i t l

hay

vi

2.3.3. Php quay quanh gc ta

hay

vi

3. KT HP CC PHP BIN I
3.1. Kt hp cc php tnh tin
Nu ta thc hin php tnh tin ln
php tnh tin khc ln P, ta c im
kt hp hai php tnh tin lin tip

48

c P , ri li thc hin tip mt


. Nh vy, Q l nh ca php bin i
v
c ta :

Ta c :

hay :
Vy kt hp hai php tnh tin l mt php tnh tin. T ta c kt hp ca
nhiu php tnh tin cng l mt php tnh tin.

3.2. Kt hp cc php t l
Tng t nh php tnh tin, ta c ta im
v
l :
kt hp hai php t l

l im c c sau khi

Ta c :

hay :
Vy kt hp hai php t l l mt php t l. D dng m rng cho kt qu : kt
hp ca nhiu php t l cng l mt php t l.

3.3. Kt hp cc php quay


Tng t, ta c ta im
v
quay quanh gc ta

l im pht sinh sau khi kt hp hai php


l :

49

Ta c :

hay :
Vy kt hp hai php quay quanh gc ta l mt php quay quanh gc ta
. T d dng suy ra kt hp ca nhiu php quay quanh gc ta cng l mt
php quay quanh gc ta .

3.4. Php quay c tm quay l im bt k


Gi s tm quay c ta
, ta c th xem php quay quanh tm I mt
gc c kt hp t cc php bin i c s sau:
dch chuyn tm quay v gc ta
Tnh tin theo vector tnh tin
(a v trng hp quay quanh gc ta ).
Quay quanh gc ta mt gc .
a tm quay v li v tr ban u.
Tnh tin theo vector tnh tin

Hnh V-4. Php quay quanh tm l im bt k.


(i tng trc khi bin i(a), Sau khi tnh tin v gc ta (b),
Sau khi quay gc (c), Sau khi tnh tin v tm quay ban u(d))

Ta c ma trn ca php bin i :

50

4. MT S TNH CHT CA PHP BIN I AFFINE


Php bin i affine bo ton ng thng
nh ca ng thng qua php bin i affine l ng thng.
Tht vy, ta c phng trnh tham s ca ng thng qua hai im A, B l :
.
cc im nhn c sau php bin i M.
Nu gi A, B ln lt l nh ca A, B qua php bin i M, ta s c
. Lc ny
. y chnh l dng ca phng trnh tham
s on thng qua A, B.
T kt qu trn, bin i mt on thng i qua hai im A v B, ta ch cn
p dng php bin i cho hai im A, B ri v li on thng qua hai im mi.
Tnh song song ca cc ng thng c bo ton
nh ca hai ng thng song song l hai ng song song.
Chng ta c th vit li phng trnh tham s ca ng thng di dng tia
xut pht t A ng vi t=0 v theo phng
nh sau :
. Lc ny ta biu
v
c cng
din hai ng thng song song di dng tia :
phng nhng xut pht t hai im khc nhau. Lc ny p dng php bin i ln
hai ng thng song song ny, d dng nhn ra nh ca chng s c phng nn
chng song song.
Mt h qu quan trng ca tnh cht ny l nh ca cc hnh bnh hnh sau
php bin i l cc hnh bnh hnh.
Tnh t l v khong cch c bo ton
Gi s C l im chia on AB theo t s t. Nu A, B, C ln lt l nh A, B,
C qua php bin i th C cng s chia AB theo t s t.
Trong trng hp c bit, nu C l trung im ca AB th C cng l trung
im ca AB, t ta c th suy ra mt s tnh cht sau :
Trong hnh vung, cc ng cho ct nhau ti trung im ca mi ng
nn cc ng cho ca bt c hnh bnh hnh no cng ct nhau ti trung im ca
mi ng.
Trong tam gic u, giao im ca ba ng trung tuyn chia mi ng
theo t s 1:2. Mt khc, mt tam gic bt k l nh ca tam gic u qua php bin i
affine, nn giao im ca cc ng trung tuyn ca n cng s chia chng theo t l
1:2.

51

TI LIU THAM KHO


[1] Dng Anh c, L nh Duy Bi ging ha my tnh i hc
Khoa hc T nhin, HQGTPHCM, 2002.
[2] Hong Kim, Dng Anh c, L nh Duy C s ha my tnh
NXBGD, 2002.
[3] L Tn Hng, Hunh Quyt Thng K Thut ha NXBKHKT, 2000.
[4] Phan Tn Ti Bi ging K thut ha HCT.
[5] Hunh Vn c Thit k ha nh hng i tng vi C++ NXBGD, 2000.

52

You might also like