You are on page 1of 173

HC VIN CNG NGH BU CHNH VIN THNG

K THUT HA
(Dng cho sinh vin h o to i hc t xa)
Lu hnh ni b









H NI - 2006




HC VIN CNG NGH BU CHNH VIN THNG







K THUT HA

Bin son : THS. TRNH TH VN ANH
Li ni u


3
LI NI U
Hin nay ho my tnh (Computer Graphics) l mt trong nhng chng trnh thng
dng nht, n gp phn quan trng lm cho giao tip gia con ngi v my tnh tr nn thn
thin hn. Tht vy, giao din kiu vn bn (text) c thay th hon ton bng giao din
ho, cng vi cng ngh a phng tin (multimedia) a ngnh Cng Ngh Thng Tin sang
mt phin bn mi.
Cun ti liu ging dy ny, ti mun mang li cho bn c cc c s l thuyt v ho
my tnh t n gin nht nh cc thut ton v ng thng, ng trn, a gic, k t..... Tip
n cc k thut xn ta, cc php bin i ho trong khng gian 2D v 3D.... Chng ta ln lt
lm quen vi th gii mu sc thng qua cc h mu: RGB, CMYK, HSV.... Phc tp hn na l
cc php chiu, cc phng php xy dng ng cong v mt cong cho i tng.
Ti liu gm by chng, trong chng mt gip bn c ci nhn tng quan v k thut
ho t trc n gi cng nh hng tng lai cho lnh vc ny. Cc chng tip theo, mi
chng s l mt vn t n gin n phc tp. Cui mi chng u c phn bi tp cho
chng ta kim tra li kin thc va c c. Bi tp gm hai dng: dng tnh ton v dng lp
trnh, i vi dng lp trnh bn c th vit bng C/C++ hay BC thm ch bng VB u c.
Cui cng l phn ph lc gm cc hng dn chng ta lm bi tp lp trnh, ngn ng hay
dng y l C/C++ hay BC.
B cc r rng, hnh nh phong ph, a dng. D cho bn cha tng bit v ho my
tnh hay bn nhiu nm lm vic trong lnh vc ny, bn u c th nhn thy rng cun sch
ny l mt b tham kho y cc thng tin hu ch v c tnh cht thc tin cao.
Trong qu trnh bin son mc d c gng ht sc nhng vn khng trnh khi nhng sai
st, rt mong nhn c s ng gp chn thnh t qu bn c.
Xin chn thnh cm n.


Tc gi




Chng 1: Tng quan v k thut ha


4
CHNG 1: TNG QUAN V K THUT HO
1. CC KHI NIM TNG QUAN CA K THUT HO MY
TNH (COMPUTER GRAPHICS)
1.1. L ch s pht trin
- Graphics nhng nm 1950-1960
1959 Thit b ho u tin l mn hnh xut hin ti c.
1960 - SAGE (Semi-Automatic Ground Environment System) xut hin bt sng thao tc
vi mn hnh.
1960 William Fetter nh khoa hc ngi M, ng ang nghin cu xy dng m hnh
bung li my bay cho hng Boeing ca M. ng da trn hnh nh 3 chiu ca m hnh ngi
phi cng trong bung li ca my bay xy dng nn mt m hnh ti u cho bung li my
bay. Phng php ny cho php cc nh thit k quan st mt cch trc quan v tr ca ngi li
trong khoang. ng t tn cho phng php ny l ho my tnh (Computer Graphics) .
Mn hnh l thit b thng dng nht trong h ho, cc thao tc ca hu ht cc mn hnh
u da trn thit k ng tia m cc CRT (Cathode ray tube).
Khi gi lm ti mn hnh l rt cao, my tnh x l chm, t v khng chc chn
(khng ng tin cy).
- Graphics: 1960-1970
1963 Ivan Sutherland (hi ngh Fall Joint Computer - ln u tin c kh nng to mi, hin
th v thay i c thc hin trong thi gian thc trn mn CRT).
H thng ny c dng thit k mch in: CRT, LightPen (bt sng), computer (cha
chng trnh x l thng tin). Ngi s dng c th v mch in trc tip ln mn hnh thng
qua bt sng.
- Graphics:1970-1980
Raster Graphics ( ho im). Bt u chun ho v d nh: GKS(Graphics Kernel
System): European effort (kt qu ca chu u), Becomes ISO 2D standard.
- Graphics: 1980-1990
Mc ch c bit v phn cng, thit b hnh hc ho Silicon. Xut hin cc chun cng
nghip: PHIGS (Programmers Hierarchical Interactive Graphics Standard) xc nh cc phng
php chun cho cc m hnh thi gian thc v lp trnh hng i tng.
Giao din ngi my Human-Computer Interface (HCI)
- Computer Graphics: 1990-2000
OpenGL API (Application Program Interface giao din chng trnh ng dng).
Completely computer-sinh ra ngnh in nh phim truyn (Toy Story) rt thnh cng.
Cc tim tng phn cng mi: Texture mapping (dn cc nh ca cnh tht ln b mt ca
i tng),blending (trn mu).
- Computer Graphics: 2000- nay
Chng 1: Tng quan v k thut ha


5
nh hin thc.cc cc ho cho my tnh (Graphics cards for PCs), game boxes and game
players
Cng nghip phim nh nh vo ho my tnh (Computer graphics becoming routine in
movie industry): Maya (th gii vt cht tri gic c).
1.2. K thut ha vi tnh.
Definition (ISO): Phng php v cng ngh chuyn i d liu t thit b ho sang my
tnh.
Computer Graphics l phng tin a nng v mnh nht ca giao tip gia con ngi v
my tnh.
Computer Graphics (K thut ho my tnh) l mt lnh vc ca Cng ngh thng tin m
nghin cu, xy dng v tp hp cc cng c (m hnh l thuyt v phn mm) khc nhau
: kin to, xy dng, lu tr, x l Cc m hnh (model) v hnh nh (image) ca i tng.
Cc m hnh (model) v hnh nh ny c th l kt qu thu c t nhng lnh vc khc nhau ca
rt nhiu ngnh khoa hc (vt l, ton hc, thin vn hc)
Computer graphics x l tt c cc vn to nh nh my tnh.
2. CC K THUT HO
2.1. K thut ho im (Sample based-Graphics)
- Cc m hnh, hnh nh ca cc i tng c hin th thng qua tng pixel (tng mu
ri rc)
- c im: C th thay i thuc tnh
+ Xo i tng pixel ca m hnh v hnh nh cc i tng.
+ Cc m hnh hnh nh c hin th nh mt li im (grid) cc pixel ri rc,
+ Tng pixel u c v tr xc nh, c hin th vi mt gi tr ri rc (s nguyn)
cc thng s hin th (mu sc hoc sng)
+ Tp hp tt c cc pixel ca grid cho chng ta m hnh, hnh nh i tng m
chng ta mun hin th.








Hnh 1.1 nh ho im

Chng 1: Tng quan v k thut ha


6
Bitmap












Hnh 1.2 K thut ho im

Phng php to ra cc pixel
- Phng php dng phn mm v trc tip tng pixel mt.
- Da trn cc l thuyt m phng (l thuyt Fractal, v.v) xy dng nn hnh nh m
phng ca s vt.
- Phng php ri rc ho (s ho) hnh nh thc ca i tng.
- C th sa i (image editing) hoc x l (image processing) mng cc pixel thu c
theo nhng phng php khc nhau thu c hnh nh c trng ca i tng.
2.2. K thut ho vector









Hnh 1.3 M hnh ho vector

- M hnh hnh hc (geometrical model) cho m hnh hoc hnh nh ca i tng
- Xc nh cc thuc tnh ca m hnh hnh hc ny,
SRP
library
Pascal C
program
X Window
System
Graphics hardware
Image
image formats, compression, transfer
graphics algorithms
colour
positions



M hnh
ha
T trt
Thit b ra

Cc tham s
t trt
Chng 1: Tng quan v k thut ha


7
- Qu trnh t trt (rendering) hin th tng im ca m hnh, hnh nh thc ca i
tng
C th nh ngha ho vector: ho vector = geometrical model + rendering
So snh gia Raster v Vector Graphics
ho im(Raster Graphics)
- Hnh nh v m hnh ca cc vt th
c biu din bi tp hp cc im ca li
(grid)
- Thay i thuc tnh ca cc pixel =>
thay i tng phn v tng vng ca hnh nh.
- Copy c cc pixel t mt hnh nh
ny sang hnh nh khc.

ho vector(Vector Graphics)
- Khng thay i thuc tnh ca tng
im trc tip
- X l vi tng thnh phn hnh hc c
s ca n v thc hin qu trnh t trt v hin
th li.
- Quan st hnh nh v m hnh ca hnh
nh v s vt nhiu gc khc nhau bng
cch thay i im nhn v gc nhn.
V d v hnh nh ho Vector





















Hnh 1.4 V d v ho vector
Muscl e Model Wi r ef r ame Skel et al
Ski n Hai r Render and Touch
Chng 1: Tng quan v k thut ha


8
2.3. Phn loi ca ho my tnh
Phn loi theo cc lnh vc ca ho my tnh











Phn loi theo h to





- K thut ho hai chiu: l k thut ho my tnh s dng h to hai chiu (h to
phng), s dng rt nhiu trong k thut x l bn , th.
- K thut ho ba chiu: l k thut ho my tnh s dng h to ba chiu, i hi
rt nhiu tnh ton v phc tp hn nhiu so vi k thut ho hai chiu.
Cc lnh vc ca ho my tnh:
- K thut x l nh (Computer Imaging): sau qu trnh x l nh cho ta nh s ca i
tng. Trong qu trnh x l nh s dng rt nhiu cc k thut phc tp: k thut khi phc nh,
k thut lm ni nh, k thut xc nh bin nh.
- K thut nhn dng (Pattern Recognition): t nhng nh mu c sn ta phn loi theo cu
trc, hoc theo cc tiu tr c xc nh t trc v bng cc thut ton chn lc c th phn
tch hay tng hp nh cho thnh mt tp hp cc nh gc, cc nh gc ny c lu trong mt
th vin v cn c vo th vin ny ta xy dng c cc thut gii phn tch v t hp nh.
- K thut tng hp nh (Image Synthesis): l lnh vc xy dng m hnh v hnh nh ca
cc vt th da trn cc i tng v mi quan h gia chng.
- Cc h CAD/CAM (Computer Aided Design/Computer Aided Manufacture System): k
thut ho tp hp cc cng c, cc k thut tr gip cho thit k cc chi tit v cc h thng
khc nhau: h thng c, h thng in, h thng in t.
- ho minh ho (Presentation Graphics): gm cc cng c gip hin th cc s liu th
nghim mt cch trc quan, da trn cc mu th hoc cc thut ton c sn.
K thut phn tch v to nh
ho hot hnh v ngh thut
K thut nhn dng
X l nh
ho minh ho
CAD/CAM System
K thut ho
Kin to
ho
X l
ho
K thut ho
K thut ho 2 chiu
K thut ho 3 chiu
Chng 1: Tng quan v k thut ha


9
- ho hot hnh v ngh thut: bao gm cc cng c gip cho cc ho s, cc nh thit k
phim hot hnh chuyn nghip lm cc k xo hot hnh, v tranh... V d: phn mm 3D Studio,
3D Animation, 3D Studio Max.
2.4. Cc ng dng tiu biu ca k thut ha
ho my tnh l mt trong nhng lnh vc l th nht v pht trin nhanh nht ca tin
hc. Ngay t khi xut hin n c sc li cun mnh lit, cun ht rt nhiu ngi nhiu lnh
vc khc nhau nh khoa hc, ngh thut, kinh doanh, qun l...Tnh hp dn ca n c th c
minh ho rt trc quan thng qua cc ng dng ca n.
- Xy dng giao din ngi dng (User Interface)
Giao din ho thc s l cuc cch mng mang li s thun tin v thoi mi cho ngi
dng ng dng. Giao din WYSIWYG v WIMP ang c a s ngi dng u thch nh tnh
thn thin, d s dng ca n.
- To cc biu trong thng mi, khoa hc, k thut
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 nghin cu, qun l... mt cch c hiu qu.
- T ng ho vn phng v ch bn in t
- Thit k vi s tr gip ca my tnh (CAD_CAM)
- Lnh vc gii tr, ngh thut v m phng
- iu khin cc qu trnh sn xut (Process Control)
- Lnh vc bn (Cartography)
- Gio dc v o to
Mt s v d ca ng dng k thut ho:















Chng 1: Tng quan v k thut ha


10


















Hnh 1.5 Cc ng dng ca k thut ho













Hnh 1.6 H ng dng CAD - CAM
Chng 1: Tng quan v k thut ha


11
2.5. Cc chun giao din ca h ho
Mc tiu cn bn ca phn mm ho c chun l tnh tng thch. Khi cc cng c
c thit k vi hm ho 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 ci t v ng dng khc nhau.
GKS (Graphics Kernel System): chun xc nh cc hm ho chun, c thit k nh
mt tp hp cc cng c ho hai chiu v ba chiu.
GKS Functional Description, ANSI X3.124 - 1985.GKS - 3D Functional Description, ISO
Doc #8805:1988.
CGI (Computer Graphics Interface System): h chun cho cc phng php giao tip vi
cc thit b ngoi vi.
CGM (Computer Graphics Metafile): xc nh cc chun cho vic lu tr v chuyn i
hnh nh.
VRML (Virtual Reality Modeling Language): ngn ng thc ti o, mt hng pht trin
trong cng ngh hin th c xut bi hng Silicon Graphics, sau c chun ha nh
mt chun cng nghip.
PHIGS (Programmers Hierarchical Interactive Graphics Standard): xc nh cc phng
php chun cho cc m hnh thi gian thc v lp trnh hng i tng.
PHIGS Functional Description, ANSI X3.144 - 1985.+ Functional Description, 1988, 1992.
OPENGL th vin ha ca hng Silicon Graphics, c xy dng theo ng chun ca
mt h ha nm 1993.
DIRECTX th vin ho ca hng Microsoft, Direct X/Direct3D 1997
3. PHN CNG HO (GRAPHICS HARDWARE)
3.1. Cc thnh phn phn cng ca h ho tng tc
CPU:thc hin cc chng trnh ng dng.
B x l hin th (Display Processor): thc hin cng vic hin th d liu ho.
B nh h thng (System Memory): cha cc chng trnh v d liu ang thc hin.
Gi phn mm ho (Graphics Package): cung cp cc hm ho cho chng trnh ng
dng
Phn mm ng dng (Application Program): phn mm ho ng dng.
B m ( Frame buffer): c nhim v cha cc hnh nh hin th.
B iu khin mn hnh (Video Controller): iu khin mn hnh, chuyn d liu dng s
frame buffer thnh cc im sng trn mn hnh.






Chng 1: Tng quan v k thut ha


12










Hnh 1.7 Cc thnh phn cng ca h ho tng tc
3.2. My in
Dot size: ng knh ca mt im in b nht m my in c th in c
Addressability: kh nng a ch ho cc im in c th c trn mt n v di (dot per
inch)
S lng mu c th v trn mt im:
Dot size Point per inch
8 - 20/ 100inch 200, 600
5/1000inch 1500
My v 6,15/1000 inch 1000, 2000
3.3. Mn hnh CRT
Mt chm cc tia in t (tia m cc) pht ra t mt sng in t, vt qua cun li tia dn
n v tr xc nh trn mn hnh c ph mt lp phosphor. Ti mi v tr tng tc vi tia in
t ht phosphor s pht ln mt chm sng nh. Nhng chm sng s m dn rt nhanh nn cn
c cch no n duy tr nh trn mn hnh. Mt trong cc cch l: lp i lp li nhiu ln vic v li
nh tht nhanh bng cch hng cc tia in t tr li v tr c. Gi l lm ti (refresh CRT).
S lng ti a cc im c th hin th trn mt CRT c gi l phn gii
(Resolution). Hay phn gii l s lng cc im trn mt cm m c th c v theo chiu
ngang v chiu dc (c xem nh tng s im theo mi hng).
Chng 1: Tng quan v k thut ha


13























Hnh 1.8 Cng ngh mn hnh CRT
Kch thc vt l ca mn hnh ho c tnh t di ca ng cho mn hnh.
Thng dao ng t 12-27 inch, hoc ln hn.
Thuc tnh khc ca mn hnh l t s phng (aspect ratio). N l t l ca cc im dc
v cc im ngang cn pht sinh cc on thng c di n v theo c hai hng trn mn
hnh. Mn hnh c t s phng khc mt, th hnh vung hin th trn thnh hnh ch nht cn
hnh trn thnh hnh ellipse.
Mn hnh dng im (Raster Display): thng gp nht trong s cc dng mn hnh s dng
CRT trn cng ngh truyn hnh. Mi im trn mn hnh c gi l pixel. Cc thng tin v nh
hin th trn mn hnh c lu tr trong mt vng b nh gi l vng m lm ti (Refresh
buffer) hay l vng m khung (Frame Buffer). Vng lu tr tp cc gi tr cng sng ca
ton b cc im trn mn hnh v lun tn ti mt cch song nh gia mi im trn mn hnh v
mi phn t trong vng ny.
SONY Trinitron NEC Hybrid Hitachi EDP Standard Dot-trio
Chng 1: Tng quan v k thut ha


14
to ra hnh nh en trng, n gin ch cn lu thng tin ca mi Pixel l mt bt (0,1)
(xem hnh 1.9). Trong trng hp nh nhiu mu th cn nhiu bt hn, nu thng tin mi pixel
c lu bng b bt th ta c th c 2
b
gi tr mu phn bit cho pixel .
Trong cc mn hnh mu, ngi ta nh ngha tp cc mu lm vic trong mt bng tra (LookUp
Table - LUT). Mi phn t ca LUT c nh ngha mt b ba gi tr (RGB) m t mt mu no
. Khi cn s dng mt mu, ta ch cn ch nh s th t (index) tng ng ca mu trong
LUT, s phn t trong bng LUT chnh l s mu c th c hin th cng mt lc trn mn
hnh.
V d m hnh ho im ngi nh v ngi sao.















Hnh 1.9 Song nh gia vng m khung v mn hnh

X: 0 Xmax2 mu/ 1 bit
Y: 0 Ymax16 mu/ 4 bit ;256 mu/ 8bit
2
16
mu/ 16 bit ; 2
24
mu/ 24 bit
640 x 480 x 16 Video RAM = 2MB
1024 x 1024 x 24 Video RAM = 24MB
Vic lm ti trn mn hnh dng ny c thc hin tc 60 - 80 frame/giy. i khi
tc lm ti cn c biu din bng n v Hertz (Hz - s chu k trn/giy), trong mt chu
k tng ng vi mt frame. Vy tc lm ti 60 frame/giy n gin l 60 Hz. Khi t n
cui mi dng qut, tia in t quay tr li bn tri ca mn hnh bt u dng qut k tip.
Vic quay tr v bn tri mn hnh sau khi lm ti mi dng qut c gi l tia hi ngang
(Horizontal retrace). V ti cui mi frame, tia in t (tia hi dc - Vertical retrace) quay tr li
gc bn tri ca mn hnh chun b bt u frame k tip.


Display
processo
Interface to host
computer
(Display
commands)
(interaction data)
Keyboard
Data input
000000000000000
000000000010000
00
000000000000000
Bitmap refresh buffer
(the 1s are accentuated
for contrast)
CRT
Chng 1: Tng quan v k thut ha


15






Hnh 1.10 Qut mnh v qut dng ca mn hnh CRT

V d v vic tia qut trn mn hnh CRT:
MOVE 10,15
LINE 400,300
LINE 600,800
Refesh Buffer
DrawLine(A, B):
Turn beam off,
move to A.
Turn beam on,
move to B.
3.4. Mn hnh tinh th lng (Liquid Crystal Display LCD)
Da vo cng ngh truyn nh sng qua in cc m t gia l cun dy xon. Khi cha
c t trng (cha c dng in) cun dy th nh sng truyn thng, khi c t trng th nh
sng truyn i chiu.













Hnh 1.11 Cng ngh truyn nh sng trong mn hnh tinh th lng
Chng 1: Tng quan v k thut ha


16
CRT Displays (mn hnh CRT)
Advantages (u im)
p ng nhanh (c phn gii cao)
Mu sc a dng (C su v rng)
Mu sc bo ho v t nhin
Cng ngh khng qu t v hon thin
Gc nhn rng, tng phn v sng cao
Disadvantages (nhc im)
Ln v nng (typ. 70x70 cm, 15 kg)
Tiu tn ngun in cao (typ. 140W)
C hi cho sc kho v trng in t v t tnh
Mn hnh nhp nhy (at 50-80 Hz)
Hnh hay b mo ti 4 gc

LCD Displays (mn hnh tinh th lng)
Advantages (u im)
Hnh dng nh, trng lng nh (approx 1/6 of
CRT, typ. 1/5 of CRT)
Tiu tn ngun thp (typ. 1/4 of CRT)
Mn hnh phng tuyt i nn khng mo ti
cc gc
Mu sc u, nh sinh ng
Khng b hiu ng in t trng
C th mn hnh va ln va rng (>20 inch)
Disadvantages (nhc im)
Gi thnh cao (presently 3x CRT)
Gc nhn hp hn (typ. +/- 50 degrees)
tng phn thp (typ. 1:100)
chi ( ngi) thp hn (typ. 200 cd/m
2
)



Tm tt chng:
S ra i ca ho my tnh thc s l cuc cch mng trong giao tip gia ngi dng
v my tnh. Vi lng thng tin trc quan, a dng v phong ph c truyn ti qua hnh nh.
Cc ng dng ho my tnh li cun nhiu ngi nh tnh thn thin, d dng, kch thch
kh nng sng to v tng ng k hiu sut lm vic.
ho my tnh ngy nay c c ng dng rt rng ri trong nhiu lnh vc khao hc,
k thut, ngh thut, kinh doanh, qun lCc ng dng ho rt a dng, phong ph v pht
trin lin tc khng ngng. Ngy nay, hu nh khng c chng trnh ng dng no m khng s
dng k thut ho lm tng tnh hp dn cho mnh.
Mt h thng ho bao gi cng gm hai phn chnh l phn cng v phn mm. Phn
cng bao gm cc thit b hin th (thit b xut) v cc thit b nhp. Tiu biu nht l mn hnh,
c hai loi thng dng l CRT v LCD.

Bi tp:
1. Cu to v nguyn l hot ng ca mn hnh dng im. Nu cc khi nim vng m
khung, phn gii, t s phng.... ca mn hnh loi ny?
2. ngha v hot ng ca bng tra LUT?
Chng 1: Tng quan v k thut ha


17
3. Tnh Video Ram ca cc mn hnh ln lt c phn gii l 640x480, 1024x768,
1280x1024 m c mi pixel c m t l 8bt, 12 bit, 24 bit.
4. Nu chng ta dng cc gi tr 12bit cho mi pixel trong mt bng tham chiu lookup
table, c bao nhiu hng mc m lookup table c c?
5. Ti sao phi chun ho cc phn mm? Lit k v tm hiu cc chun h phn mm
ho.
Bi tp trc nghim:
1. T s phng (aspect ratio) ca mn hnh l 1,4 vy mt hnh trn khi hin th trn mn
hnh s cho:
a. Hnh trn
b. Hnh ellipse nm ngang (bn knh theo trc x di hn bn knh theo trc y)
c. Hnh ellipse ng (bn knh theo trc x ngn hn bn knh theo trc y)
d. Hnh thoi
2. Cho mn c phn gii 1024x1024 v mi pixel c m t 24bt vy video RAM ca
mn hnh l:
a. 1048576 bt
b. 2MB
c. 3MB
d. 4MB
3. Nu ta dng cc gi tr 24 bit cho mi pixel trong mt bng LUT. Th bng LUT c s
mu l:
a. 24 mu
b. 1024 mu
c. 16777216 mu
d. 16000000 mu
Chng 2: Cc gii thut sinh thc th c s


18
CHNG 2: CC GII THUT SINH THC TH C S
1. CC I TNG HO C S
1.1. H to th gii thc v h to thit b
a. H to th gii thc (WCS: World Coordinate System)
WCS hay h to thc l h to c dng m t cc i tng trong th gii thc.
Mt trong h to thc c dng nhiu nht l h to Descartes. Bt k im no trong mt
phng c m t bng cp to (x,y) trong x,y R. Gc to l im O c to (0,0),
Ox,Oy ln lt l trc honh v trc tung v x,y l honh v tung .
Cc to th gii thc cho php ngi s dng bt k mt th nguyn (dimension) qui
c: foot, cm, nm, km, inch....tu .
b. H to thit b (DCS: Device Coordinate System)
H to thit b l h to c dng bi mt thit b xut c th no nh my in,
mn hnh...
Cc im c biu din bi cp to (x,y), nhng x,y N. im trong to thc c
nh ngha lin tc, cn trong to thit b th ri rc do tnh cht ca tp cc s t nhin.
Cc to (x,y) c gii hn trong mt khong no .
1.2. im v on thng
a. im
Trong h to hai chiu (x,y), ngoi ra n cn c tnh cht mu sc.
b. on thng
+ Biu din tng minh: y = f(x)
Mt on thng c xc nh nu bit 2 im thuc n. Phng trnh on thng i qua 2
im P (x1,y1) v Q(x2,y2) nh sau:
(y-y
1
)/( x-x
1
) = ( y
2
-y
1
)/( x
2
-x
1
)
(y-y
1
)(x
2
-x
1
)=(x-x
1
)(y
2
-y
1
)
(x
2
-x
1
)y=(y
2
-y
1
)x + y
1
(x
2
-x
1
) - x
1
(y
2
-y
1
)
y = ((y
2
-y
1
)/(x
2
-x
1
))x + y
1
- ((y
2
-y
1
)/(x
2
-x
1
))x
1

y = kx + m
k = (y
2
-y
1
)/(x
2
-x
1
) dc hay h s gc ca ng
m = y
1
- kx
1
on chn trn trc y
y = kx (tc l khi x thay i th y thay i theo)









Hnh 2.1 V on thng PQ
+ Biu din khng tng minh: ax+by+c=0
m
P(x
1
, y
1
)
Q(x
2
, y
2
)
Chng 2: Cc gii thut sinh thc th c s


19
Ta c
(y
2
-y
1
)x - (x
2
-x
1
)y + (x
2
-x
1
)y
1
- (y
2
-y
1
)x
1
= 0
(y
2
-y
1
)x - (x
2
-x
1
)y + x
2
y
1
- x
1
y
2
= 0
hay rx + sy + t = 0
s = -(x
2
-x
1
)
r = (y
2
-y
1
) v t = x
2
y
1
- x
1
y
2

+ Biu din thng qua tham s:
P(u) = P
1
+ u(P
2
- P
1
)u [0,1]
x(u) = x
1
+ u( x
2
- x
1
)
y (u)= y
1
+ u( y
2
- y
1
)
2. CC GII THUT XY DNG THC TH C S
2.1. Gii thut v on thng thng thng
Nguyn l chung: cho mt thnh phn to x hay y bin i theo tng n v v tnh
nguyn cn li sao cho gn vi to thc nht.
Ta c ( )
1 1
1 2
1 2
y x x
x x
y y
y

=
Cho x thay i tm y, trong bi ny cho x
1
thay i tin ti x
2
ta chn n v nh nht ca
mn hnh x=1.
Gii thut thng thng:
void dline(int x1,int y1, int x2,int y2, int color)
{
float y;
int x;
for (x=x1; x<=x2; x++)
{
y = y1 + (x-x1)*(y2-y1)/(x2-x1) ;
putpixel(x, Round(y), color );
}
}
2.2. Thut ton DDA (Digital Differential Analizer)
Tin hnh tnh ti mi bc vn s dng kt qu t bc trc . Gi s bc i tnh
(x
i
,y
i
), bc tip (x
i+1
,y
i+1
) s nghim ng vi y/x=k.
y = y
i+1
-y
i
x = x
i+1
-x
i

Vy:y
i+1
=y
i
+kxv x
i+1
=x
i
+ y/k
- 0 < k < 1 (m bo s thay i ca x trn trc to s ln hn y)
- Bt u x=x
1
(x
1
<x
2
) v y=y
1

x
i
+1
= x
i
+ 1 t x=1 (gia s theo x)
y
i
+1
= y
i
+ k c nh th n x
2
Chng 2: Cc gii thut sinh thc th c s


20
- Khi k>1 bt u y=y
1
(y
1
<y
2
) v x=x
1

- t y =1 (gia s theo y)
x
i+1
=x
i
+ 1/k tip tc n y
2

Thut ton


















Hnh 2.2 S khi thut ton DDA
void ddaline (int x1,int y1,int x2,int y2,int c)
{ int x=x1;
float y=y1;
float k=(float)(y2-y1)/(x2-x1);
putpixel(x,round(y),c);
for(int i=x1;i<=x2;i++)
{
x++;
y=y+k;
putpixel(x,round(y),c);
}
}
Ch :
- y=y+k nhanh hn hn y=k*x+m (kh c
php nhn vi s thc)
- Hn ch v tc v cng s thc v lm trn
- Bi tp: vit thut ton cho c 4 trng hp k.
2.3. Gii thut Bresenham
1960 Bresenham thuc IBM theo nguyn l tm ra cc im gn vi ng thng da trn
phn gii hu hn. Gii thut ny loi b c cc php ton chia v php ton lm trn nh ta
thy trong gii thut DDA.
Xt on thng vi 0 < k < 1







Hnh 2.3 M t gii thut Bresenham

Begin
m=dy/dx;
x=x1;
y=y1;
x<x2
x=x+1;
y=y+m;
End
d2
d1
x
i
x
i+1

y
i
y
i
+1
Chng 2: Cc gii thut sinh thc th c s


21
Gi (x
i+1
,y) l im thuc on thng, ta c y=k(x
i
+1)+b
d
1
= y - y
i
= k(x
i
+1) + b - y
i

d
2
= y
i+1
- y = y
i + 1
- k(x
i
+ 1) - b
- Nu d
1
<= d
2
=> y
i
+1
= y
i

- Ngc li d
1
> d
2
=> y
i
+1
= y
i
+1
t D = d
1
- d
2
= 2k(x
i
+ 1) - 2y
i
+ 2b - 1
C k=y/x
t P
i
= xD = x (d
1
- d
2
)
P
i
= x(2y/x(x
i
+1)- 2y
i
+2b-1)
= 2yx
i
+2y -2xy
i
+ 2bx -x
Ta tnh bc tip:
P
i+1
= 2yx
i+1
+2y -2xy
i+1
+ 2bx -x
P
i+1
- P
i
= -2x(y
i+1
-y
i
) + 2y(x
i+1
-x
i
)
C x
i+1
=x
i
+1 nn:
P
i+1
- P
i
= - 2x(y
i+1
-y
i
) + 2y = 2y - 2x(y
i+1
-y
i
)
Nu P
i
<= 0 th y
i

+1
= y
i

P
i+1
= P
i
+ 2y
Nu P
i
> 0 th y
i+1
= y
i
+1
P
i+1
= P
i
+ 2y - 2x
Tnh gi tr u: P
1
?
P
1
= x(d
1
- d
2
)
= x(2y/x(x
1
+1)- 2y
1
+2b-1)
= 2yx
1
+2y -2xy
1
+ 2bx -x
C y
1
=kx
1
+ b = y/x x
1
+b
P
1
= 2yx
1
+2y -2x((y/x)x
1
+b) + 2bx -x
= 2yx
1
+2y -2yx
1
- 2bx + 2bx -x
P
1
= 2y - x
Chng 2: Cc gii thut sinh thc th c s


22

















Hnh 2.4 S khi thut ton Bresemham cho
ng thng
/*Thuat toan Bresenham ve dthang (0<k<1) */
void Bre_line(int x1, int y1, int x2, int y2, int c)
{int x, y, dx, dy,p,const1,const2;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dy - dx;
const1 = 2*dy;
const2 = 2*(dy-dx);
for (x=x1; x<=x2; x++) {
putpixel(x, y, c);
if (p < 0)
p += const1; // p=p + 2dy
else {
p +=const2; //p=p+2dy-2dx
y++;
}
}
}
2.4. Gii thut trung im-Midpoint
Jack Bresenham 1965 / Pitteway 1967, p dng cho vic sinh cc ng thng v ng
trn 1985.
Xt trung im ca on AB (M)
Nu M trn on thng AB th chn B cn
M di on thng AB chn A
Cng thc n gin hn, to c cc im tng t nh vi Bresenham
d = f(x
i
+ 1, y
i
+ 1/2) l trung im ca on AB







Hnh 2.5 M t gii thut Midpoint
So snh hay kim tra M s c thay bng vic xt gi tr d.
- d > 0 im B c chn khi y
i
+1
= y
i
P > 0
Bt u
x = x1 ;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
P = dx - 2dy;
Putpixel (x ,y);
x < x2
Kt thc
P = P - 2dy
P = P - 2dy + 2dx
y = y + 1
yes
no
No
yes
x = x + 1
p= p+2dy-2dx
p=p+2dy
x=x1;y=y1;
dx=x2-x1;
dy=y2-y1;
A
B
d<0 d>0
A
Chng 2: Cc gii thut sinh thc th c s


23
- nu d < 0 im A c chn khi y
i+1
= y
i
+ 1
Trng hp d = 0 chng ta c th chn im bt k hoc A, hoc B.
S dng phng php biu din khng tng minh
f(x,y)= ax +by +c =0 (1)dx =x
2
-x
1
dy =y
2
-y
1

Biu din tng minh:
y= (dy/dx)x +B hay
f(x,y)=0= xdy - ydx +Bdx (2)
So snh (1) v (2)
a=dyb=-dx c= Bdx
C f(x,y)=0 vi mi (x,y) thuc ng thng
t d
i
=f(x
i
+1,y
i
+1/2) = a(x
i
+1) +b(y
i
+1/2) +c
+ Nu chn A (d<0) th M s tng theo 2 hng x,y
d
i+1
=f(x
i
+2,y
i
+3/2) = a(x
i
+2) +b(y
i
+3/2) +c
d
i+1
d
i
= a+b
Hay d
i+1
= d
i
+ dy - dx
+ Nu chn B (d>0) th M s tng theo x
d
i+1
=f(x
i
+2,y
i
+1/2) = a(x
i
+2) +b(y
i
+1/2) +c
d
i+1
- d
i
= a
Hay d
i+1
= d
i
+ dy
Tnh d
1
?
d
1
= f(x
1
+1,y
1
+1/2) = a(x
1
+1) +b(y
1
+1/2) +c
= ax
1
+by
1
+c +a +1/2 b = f(x
1
,y
1
) +a +b/2
C (x
1
,y
1
) l im bt u, nm trn on thng nn f(x
1
,y
1
) = 0
Vy d
1
= a+ b/2 = dy - dx/2
Chng 2: Cc gii thut sinh thc th c s


24
Hnh 2.6 S khi gii thut Midpiont cho
on thng
/* Thuat toan Midpoint de ve doan thang
(0<k<1) */
void Mid_line(int x1, int y1, int x2, int y2, int c)
{ int x, y, dx, dy,d;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d= dy - dx/2;
for (x=x1; x<=x2; x++)
{
putpixel(x, y, c);
if (d <= 0)
d = d + dy;
else
{
y ++;
d = d + dy - dx;
}}
}
2.5. Gii thut sinh ng trn (Scan Converting Circles)(Bresenham)
- Phng trnh ng trn i qua tm c to (x
c
,y
c
) l:
(x - x
c
)
2
+ (y - y
c
)
2
= r
2

Hnh trn l hnh i xng tm cch








Hnh 2.7 Hnh trn i xng 8 phn
n gin ta xt tm trng gc 0:x
2
+ y
2
= r
2

Ta xt cc im to ra t gc phn t th 2: t 90
0
n 45
0
, thc hin theo hng +x, -y
Gi s bt u x
i
vy x
i+1
= x
i
+1
y
2
= r
2
- (x
i
+1)
2

d
1
= yi
2
- y
2
= y
i
2
- r
2
- (x
i
+1)
2

d <= 0
Bt u
x = x1 ;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d = dy - dx/2;
Putpixel (x ,y);
x < x2
Kt thc
d = d + dy
d = d + dy - dx
y = y + 1
yes
no
No
yes
x = x + 1
Chng 2: Cc gii thut sinh thc th c s


25
d
2
= y
2
- (yi - 1)
2
= r
2
- (xi +1)
2
- (yi - 1)
2

p
i
= d
1
- d
2
= 2(x
i
+1 )
2
+ y
i
2
+ (y
i
- 1)
2
-2r
2

Xt: p
i
<0 (d
1
<d
2
) chn im nm ngoi ng trn y
i+1
= y
i

p
i
>=0 (d
1
>=d
2
) chn im nm trong ng trn y
i+1
= y
i
+1
p
i
= 2(x
i
+1 )
2
+ 2y
i
2
- 2y
i
1 - 2r
2

p
i+1
= 2(x
i
+2 )
2
+
2
y
i+1
2
- 2y
i+1
+ 1 - 2r
2

p
i+1
= p
i
+ 4x
i
+6 + 2y
i+1
2
- 2y
i
2
- 2y
i+1
+ 2y
i

p
i+1
= p
i
+ 4x
i
+6 + 2(y
i+1
2
- y
i
2
)- 2(y
i+1
- y
i
)
+ Nu p
i
<0 hay y
i+1
= y
i

p
i+1
= p
i
+ 4x
i
+6
+ Nu p
i
>=0 hay y
i+1
= y
i
-1
p
i+1
= p
i
+ 4x
i
+6 - 4y
i
+ 2 + 2
p
i+1
= p
i
+ 4(x
i
- y
i
) + 10
+ Tnh P
1
? khi ng vi x
1
=0 v y
1
=r
p
1
= 2(x
1
+1)
2
+ y
1
2
+ (y
1
- 1)
2
-2r
2

= 2 + r
2
+ (r-1)
2
- 2r
2
= 3 - 2r
Gii thut l:
















Hnh 2.9 S khi gii thut Bresemham cho
ng trn
void Bre_circle(int xc, int yc, int Radius, int
color)
{
int x, y, p;
x = 0;
y = Radius;
p = 3 - 2 * Radius;
while (x <= y)
{
putpixel(xc + x, yc + y, color);
if (p < 0)
p += 4 * x + 6;
else
{
p += 4 * (x-y) + 10;
y--;
}
x++;}
}
Bt u
X=0; y=r;
p=3-2r;
Putpixel(x,y,c);
p<0
p=p+4x+6;
X<r
X++
p=p-4y+4x+10
y--
d2
Chng 2: Cc gii thut sinh thc th c s


26
Cu hi: lc s dng tnh i xng cho tm cch v mt ng trn y t cc to
pixel c to ng vi gc phn t th hai. Mt vi Pixel c v hai ln, hin tng ny gi l
Overstrike. Hy ch nh xem ni no xy ra hin tng ?
Tr li: Ti (r,0) hoc (0,r) v v tr ng cho: (r, r) trong = 1/2 0.7071
/* Thuat toan Bresenham de ve duong tron */
#include <graphics.h>
#include <conio.h>
#define pc(xc,yc,x,y) {
putpixel(xc + x, yc + y, color);
putpixel(xc - x, yc - y, color);
putpixel(xc -y, yc +x, color);
putpixel(xc +y, yc -x, color);
}
void Bresenham_Circle(int xc, int yc, int Radius, int color){
int x, y, p;
x = 0;
y = Radius;
p = 3 - 2 * Radius;
pc(xc,yc, Radius,0); //ve 4 diem dac biet
while (x < y){
if (d < 0)
p += 4 * x + 6;
else{
p += 4 * (x-y) + 10;
y--;
}
x++;
pc(xc,yc, x,y);
pc(xc,yc, y,x);
}
pc(xc,yc, y,y); // ve 4 diem phan giac x=y
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
Bresenham_Circle(getmaxx() / 2, getmaxy() / 2, 150, 4);
getch();
closegraph();
}
2.7. Gii thut sinh ng trn Midpoint
Phng trnh ng trn khng tng minh:
f(x,y) = x
2
+y
2
-R
2 =0
Nu f(x,y) = 0 th nm trn ng trn
f(x,y) > 0 th nm bn ngoi ng trn
f(x,y) < 0th nm bn trong ng trn
Thc hin gii thut trn 1/8 ng trn v ly i xng cho cc gc cn li.
Vi M l im gia ca AB
Vi di l gi tr ca ng trn ti mt im bt k
Chng 2: Cc gii thut sinh thc th c s


27
Ta c: d
i
= f(x
i
+1,y
i
- 1/2) = (x
i
+1 )
2
+ (y
i
- 1/2)
2
- r
2

+ di < 0 chn A th im k cn s dch chuyn theo x mt n v
d
i+1
= f(x
i
+2, y
i
-1/2)
= (x
i
+2)
2
+ (y
i
- 1/2)
2
- r
2

d
i+1
- d
i
= (x
i
+2)
2
- (x
i
+1 )
2
= 2x
i
+3
d
i+1
= d
i
+ 2x
i
+3
+ di >= 0 chn B th im k cn s dch chuyn theo x 1 n v, theo y -1 n v
d
i+1
= f(x
i
+2, y
i
-3/2)
= (x
i
+2)
2
+ (y
i
- 3/2)
2
- r
2

d
i+1
- d
i
= 2x
i
- 2y
i
+5
d
i+1
= d
i
+ 2x
i
- 2y
i
+5
Tnh d
1
? ti im (0, r)
d
1
=f(1,r-1/2)= 1
2
+ (r-1/2)
2
- r
2

d
1
= 5/4 -r
Thut ton nh sau:

















Hnh 2.10 S khi gii thut Midpoint v
ng trn
void Mid_circle(int xc, int yc, int Radius, int
color)
{
int x, y, d;
x = 0;
y = Radius;
d = 1- Radius;
while (x <= y)
{
putpixel(xc + x, yc + y, color);
if (d< 0)
d +=2 * x + 3;
else
{
d += 2 * (x-y) + 5;
y--;
}
x++;
}
}
2.8. Gii thut sinh ng ellipse
Tnh i xng c thc hin trn 4 cch
2 2 2 2 2 2
( , ) 0 F x y b x a y a b = + =
Bt u
X=0; y=r; d=1-r;
Putpixel(x,y,c);
d<0
d=d+2x+3;
X<r
X++
d=d+2x-2y+5
y--
End
Chng 2: Cc gii thut sinh thc th c s


28







Hnh 2.11 M t gii thut sinh ng ellipse
Vector vi tip tuyn gradient =1
Ta c tip tuyn vi cung trn ( dc) = -1= dy/dx = - fx/fy
Trong fx=2b
2
x o hm ring phn ca f(x,y) vi x
V fy=2a
2
y o hm ring phn ca f(x,y) vi y
Gi s ta ch xt trn gc phn t th nht: gi s ta chia cung t (0,b) n (a,0) ti Q, c
dc -1
Trn phn 1: x thay i th y thay i theo
Trn phn 2: y thay i th x thay i theo
+ Xt trn phn 1:
Bt u t (0,b), bc th i (x
i
,y
i
) chn tip
A(x
i
+1, y
i
)
B(x
i
+1,y
i
-1)
Tham s quyt nh:
P
i
= f(x
i
+1,y
i
-1/2) = b
2
(x
i
+1)
2
+ a
2
(y
i
-1/2)
2
-a
2
b
2

P
i+1
= f(x
i+1
+1,y
i+1
-1/2) = b
2
(x
i+1
+1)
2
+ a
2
(y
i+1
-1/2)
2
-a
2
b
2

P
i+1
- P
i
= b
2
((x
i+1
+1)
2
- (x
i
+1)
2
)+ a
2
((y
i+1
-1/2)
2
- (y
i
-1/2)
2
)
P
i+1
= P
i
+ 2b
2
x
i+1
+ b
2
+ a
2
((y
i+1
-1/2)
2
- (y
i
-1/2)
2
)
- Nu P
i
<0 chn A
x
i+1
=x
i
+1
y
i+1
=y
i

P
i+1
= P
i
+ 2b
2
x
i
(x
i
+1) +b
2
= P
i
+ 2b
2
x
i
+3b
2

Hay P
i+1
= P
i
+ b
2
(2x
i
+3)
- Nu P
i
>=0 chn B
x
i+1
=x
i
+1
y
i+1
=y
i
-1
P
i+1
= P
i
+ 2b
2
x
i
(x
i
+1) +b
2
+ a
2
((y
i
-1 -1/2)
2
- (y
i
-1/2)
2
)
= P
i
+ 2b
2
x
i
+3b
2
+a
2
(-3y
i
+9/4 +y
i
-1/4)
= P
i
+ 2b
2
x
i
+3b
2
+a
2
(-2y
i
+2)
Hay P
i+1
= P
i
+ b
2
(2x
i
+3) + a
2
(-2y
i
+2)
A
M tiep tuyen = -1
B gradient

B C
M
i
Chng 2: Cc gii thut sinh thc th c s


29
- Tnh P
1
? ti (0,b)
P
1
= f(x
1
+1,y
1
-1/2) = b
2
+ a
2
(b-1/2)
2
-a
2
b
2

P
1
= b
2
- a
2
b +a
2
/4
+ Xt trn phn 2:
Ta ly to d ca Pixel sau cng trong phn 1 ca ng cong tnh gi tr ban u cho
phn 2.
Gi s pixel (x
k
,y
k
) va chuyn qut cui cng ca phn 1 nhp vo bc j cho phn 2
(x
j
,y
j
).
Pixel k tip c th l:
C(x
j
,y
j
-1)
D(x
j
+1, y
j
-1)
Tham s quyt nh:
q
j
= f(x
j
+1/2,y
j
-1) = b
2
(x
j
+1/2)
2
+ a
2
(y
j
-1)
2
-a
2
b
2

q
j+1
= f(x
j+1
+1/2,y
j+1
-1) = b
2
(x
j+1
+1/2)
2
+ a
2
(y
j+1
-1)
2
-a
2
b
2

q
j+1
- q
j
= b
2
((x
j+1
+1/2)
2
- (x
j
+1/2)
2
)+ a
2
((y
j+1
-1)
2
- (y
j
-1)
2
)
q
j+1
= q
j
+ b
2
((x
j+1
+1/2)
2
- (x
j
+1/2)
2
)+ a
2
- 2a
2
y
j+1

- Nu q
j
<0 chn D
y
j+1
=y
j
-1
x
j+1
=x
j
+1
q
j+1
= q
j
+ b
2
((x
j
+3/2)
2
- (x
j
+1/2)
2
)+ a
2
- 2a
2
(y
j
-1)
q
j+1
= q
j
+ b
2
(3x
j
+9/4- x
j
-1/4) +3a
2
-2a
2
y
j

Hay q
j+1
= q
j
+ b
2
(2x
j
+2) +a
2
(-2y
j
+3)
- Nu q
j
>=0 chn C
y
j+1
=y
j
-1
x
j+1
= x
j

q
j+1
= q
j
+ a
2
- 2a
2
(y
j
-1)
Hay q
j+1
= q
j
+ a
2
(3 - 2y
j
)
- Tnh q
1
?
q
1
= f(x
k
+1/2,y
k
-1) = b
2
(x
k
+1/2)
2
+ a
2
(y
k
-1)
2
-a
2
b
2

Cu hi: lc ly i xng 4 cch tm 1 Ellipse hon chnh t cc to pixel c to ra
vi cung phn t th 1. C hin tng overstrike xy ra hay khng?
Tr li: hin tng overstrike xy ra ti:
(0,b); (0,-b); (a,0); (-a,0)
Thut ton
#include <graphics.h>
#include <conio.h>
#define ROUND(a) ((long)(a+0.5))
void plot(int xc, int yc, int x, int y, int color){
putpixel(xc+x, yc+y, color);
Chng 2: Cc gii thut sinh thc th c s


30
putpixel(xc-x, yc+y, color);
putpixel(xc+x, yc-y, color);
putpixel(xc-x, yc-y, color);
}
void Mid_ellipse(int xc, int yc, int a, int b, int color){
long x, y, fx, fy, a2, b2, p;
x = 0;
y = b;
a2 = a * a; //a
2

b2 = b * b; // b
2

fx = 0;
fy = 2 * a2 * y; // 2a
2
y
plot(xc, yc, x,y, color);
p = ROUND(b2-(a2*b)+(0.25*a)); // p=b
2
- a
2
b + a
2
/4
while (fx < fy){
x++;
fx += 2*b2; //2b
2

if (p<0)
p += b2*(2*x +3); // p=p + b
2
(2x +3)
else{
y--;
p+= b2*(2*x +3) + a2*(-2*y +2); // p = p + b
2
(2x +3) + a
2
(-2y +2)
fy -= 2*a2; // 2a
2

}
plot(xc, yc, x, y, color);
}
p = ROUND(b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1) - a2*b2);//b
2
(x+1/2)
2
+a
2
(y-1)
2
- a
2
b
2

while (y>0){
y--;
fy -= 2*a2; // 2a
2

if (p>=0)
p+=a2*(3 - 2*y); p =p + a
2
(3-2y)
else{
x++;
fx += 2*b2; // 2b
2

p += b2*(2*x+2) + a2*(-2*y +3); //p=p + b
2
(2x +2) +a
2
(-2y +3)
}
plot(xc, yc, x, y, color);
}
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
Mid_Ellipse(getmaxx() / 2, getmaxy() / 2, 150, 80, 4);
getch();
closegraph();
}
2.9. Gii thut sinh k t
Trong mn hnh text, truy xut cc k t trn mn hnh c h tr bi phn cng. Cc k
t c lu tr trong b nh ROM, di dng bitmap hay cc ma trn nh. Phn cng s a k
t ln mn hnh ti v tr xc nh, tnh ton cun trang v xung dng.
Chng 2: Cc gii thut sinh thc th c s


31
Trong ho:
+ Vector: nh ngha cc k t theo nhng ng cong mm bao ngoi ca chng, tn km
v mt tnh ton.




Hnh 2.12 K t vector
- phc tp (tnh ton phng trnh)
- lu tr gn nh
- cc php bin i da vo cng thc bin i
- Kch thc ph thuc vo mi trng (khng c kch thc
c nh)
+ Bitmap: nh ngha mi k t vi 1 font ch cho trc l 1 nh bitmap hnh ch nht nh.





Hnh 2.13 K t bitmap
- n gin trong vic sinh k t
(copypixel)
- Lu tr ln
- Cc php bin i(I,B,U, scale) i hi
lu tr thm
- Kch thc khng i
+ bitmap: s dng hm copypixel (copy im nh) c lu tr trong b nh c nh -
Fontcache, a vo b nh m hin th. Mi 1 k t nh 1 ma trn 2 chiu ca cc im nh -
mt n.
Hm_sinh_ki_tu (mask)
{xmax, ymax, xmin, ymin //cc gii hn ca mt n
xo, yo//im gc trn b m hin th
for (i=ymin;i< ymax ;i++)
for (j=xmin; j< xmax ; j++)
if (mask(i,j) <> 0)
copypixel ((mask(i,j), pixel(xo+j, yo+i));
}
K t fontcache bitmap n gin ca SRGP lu tr cc k t theo chui lin tip nhau
trong b nh. Nhng rng cc k t khc nhau, truy nhp cc fontcache thng qua bn ghi v
cu trc cho tng k t.
Cu trc font ch
typedef struct {
int leftx;
int width;
} Charlocation; //V tr ca text
struct {
int CacheId;
int Height; // rng ch
int CharSpace; // Khong cch gia cc k t
Charlocation Table [128]; //bng ch ci
} fontcache;
+ K t vector
Chng 2: Cc gii thut sinh thc th c s


32
Xy dng theo phng php nh ngha cc k t bi ng cong mm bao ngoi ca
chng d dng thay i kch thc ca k t cng nh ni suy ra cc dng ca k t. Hon ton
c lp vi thit b.
+ Ti u nht: lu tr font di dng ng bao. Khi cc chng trnh ng dng s dng l
bitmap tng ng vi chng.
2.10. Gii thut sinh a gic (Polygon)
a. Thut gii v ng bao a gic
Vic biu din a gic thng qua:
- Tp cc on thng
- Tp cc im thuc a gic
Cc loi a gic:





Hnh 2.14 Cc loi a gic
a gic li: l a gic c ng thng ni bt k 2 im bn trong no ca a gic u nm
trn trong a gic. a gic khng li l a gic lm.
Cc ng thng bao a gic - cnh ca a gic. Cc im giao ca cnh - nh ca a gic.
Thng tin cn thit xc nh a gic:
- S cnh
- To cc nh ca a gic
Gii thut:
Polygon (arrayx, arrayy,n)
{ if (n<3//khng phi a gic
exit;
for (i=1 ; i<= n-1; i++)
line(arrayx[i],arrayy[i], arrayx[i+1], arrayy[i+1]);
line(arrayx[i+1],arrayy[i+1], arrayx[1], arrayy[1]);
}
b. Cc thut ton t min kn a gic
Li th ca hin th raster l: kh nng lu tr, copy, t mu mt vng...C hai dng vng
t thng gp l: t bng mt mu thun nht (solid fill), t theo mu t (fill pattern) no .
Cn thit b vector th hn ch do cc vng t mu to ra bi mt tp cc on thng st
nhau - lm chm qu trnh lm ti.
+ Gii thut ng bin (Boundary - fill Algorithm)
- Bt u t 1 im (x,y) trong vng cn c t mu:
+ Xc nh mu im: getpixel(x,y,c)
+ T mu putpixel(x,y,c)
triangular convex non-convex self-intersecting religious
Chng 2: Cc gii thut sinh thc th c s


33
- Bc tip: kim tra thuc tnh mu cc im ln cn
+ im ln cn t mu (exit)
+ trng vi mu ng bin(exit)
+ Nu khng th t mu
Cc phng php xc nh im ln cn





Hnh 2.15 Phng php tnh tin gii thut
Gii thut t mu ng bin:
#include <graphics.h>
#include <conio.h>
void FloodFill (int x, int y, int in_color, int new_color){
if (getpixel(x, y) == in_color){
putpixel(x, y, new_color);
FloodFill(x-1, y, in_color, new_color);
FloodFill(x+1, y, in_color, new_color);
FloodFill(x, y-1, in_color, new_color);
FloodFill(x, y+1, in_color, new_color);
}
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
circle(getmaxx() / 2, getmaxy() / 2, 15);
FloodFill(getmaxx() / 2, getmaxy() / 2, 0, 4);
getch();
closegraph();
}
+Gii thut dng qut (scanline) cho vic t mu vng
Gii thut da trn tng s dng mt ng qut trn trc y ca mn hnh i t y
max
n
y
min
ca vng cn c t mu.
Vi mi gi tr y = y
i
ng thng qut ct cc ng bin ca vng cn t to ra on
thng y = y
i
vi x [x
min
, x
max
]. Trn on thng chng ta t mu cc im tng ng i t x
min

n x
max
c cc im t (x
i
, y
i
) y = y
i
.
- n gin nht v d t mu hnh ch nht:
void scanline_rectg(x1,y1,x2,y2,c){ int i,j;
for(i=y1; i>=y2; i--)
for(j=x1; j<= x2;j++)
putpixel(i,j,c);
}
- Php t mu 1 a gic bt k s phc tp hn rt nhiu so vi hnh ch nht
4-connected 8-connected
Chng 2: Cc gii thut sinh thc th c s


34
Gi s vng t c cho bi 1 a gic n nh: p
i
(x
i
,y
i
), i=0,1,....,n-1. a gic ny c th l
a gic li, a gic lm hay a gic t ct....
Cc bc tm tt chnh ca thut ton:
- Tm y
top
, y
bottom
ln lt l gi tr ln nht, nh nht ca tp cc tung ca cc nh ca
a gic cho.
y
top
= max{yi,(xi,yi) P},
y
bottom
= min{yi,(xi,yi) P}.
- ng vi mi dng qut y=k, vi k thay i t y
bottom
n y
top
lp:
+ Tm tt c cc honh giao im ca dng qut y=k vi cc cnh ca a gic
+ Sp xp cc honh giao im theo th t tng dn: x
o
,x
1
,....
+ T mu cc on thng trn ng thng y=k ln lt c gii hn bi cc cp
(x
o
,x
1
), (x
2
,x
3
), ......, (x
2k
,x
2k+1
).
Chng ta s gp 1 s vn sau:
- 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.
- Nu s giao im tm c gia cc cnh a gic v dng qut l l (iu ny ch xy ra
khi dng qut s i qua cc nh ca a gic) khi ta s tnh s im l 2 th c th t khng
chnh xc. Ngoi ra, vic tm giao im ca dng qut vi cc cnh nm ngang l trng hp t
bit...












Hnh 2.16 Gii thut scanline cho mt a gic bt k
gii quyt cc vn trn ta c cc phng php sau:
+ Danh sch cc cnh kch hot (AET - Active Edge Table)
Mi cnh ca a gic c xy dng t 2 nh k nhau P
i
(x
i
,y
i
) v P
i+1
(x
i+1
,y
i+1
) gm cc
thng tin sau:
y
min
: gi tr nh nht trong 2 nh ca cnh
x
y
yqmax
yq
yqmin
yq
Chng 2: Cc gii thut sinh thc th c s


35
x
Intersect
: honh giao im ca cnh vi dng qut hin ang xt
DxPerScan: gi tr 1/m (m l h s gc ca cnh)
DeltaY: khong cch t dng qut hin hnh ti nh y
max

Danh sch cc cnh kch hot AET: danh sch ny dng lu cc tp cnh ca a gic c
th ct ng vi dng qut hin hnh v tp cc im giao tng ng. N c mt s c im:
Cc cnh trong danh sch c sp xp theo th t tng dn ca cc honh giao im
c th t mu cc on giao mt cch d dng.
Thay i ng vi mi dng qut ang xt, do danh sch ny s c cp nht lin tc
trong qu trnh thc hin thut ton. u tin ta c danh dch cha ton b cc cnh ca a gic
gi l ET (Edge Table) c sp xp theo th t tng dn ca y
min
, ri sau mi ln dng qut thay
i s di chuyn cc cnh trong ET tho iu kin sang AET.
Mt dng qut y=k ch ct 1 cnh ca a gic khi v ch khi k>=y
min
v y>0. Chnh v vy
m vi cc t chc ca ET (sp theo th t tng dn ca y
min
) iu kin chuyn cc cnh t ET
sang AET s l k>=y
min
; v iu kin loi mt cnh ra khi AET l y<=0
+ Cng thc tm giao im nhanh
Nu gi x
k
,x
k+1
ln lt l cc honh giao im ca mt cnh no vi cc dng qut
y=k v y=k+1 ta c:
x
k+1
- x
k
= 1/m ((k+1) - k) = 1/m hay x
k+1
= x
k
+ 1/m
Nh vy nu lu honh giao im ng vi dng qut trc li, cng vi h s gc ca
cnh, ta xc nh c honh giao im ng vi dng qut k tip theo cng thc trn. Nn
thng tin ca cnh c 2 bin: DxPerScan , x
Intersect
.
+ Trng hp dng qut i ngang qua mt nh:
Tnh 1 giao im nu chiu ca 2 cnh k ca nh c xu hng tng hay gim
Tnh 2 giao im nu chiu ca 2 cnh k ca nh c xu hng thay i, ngha l tng-
gim hay gim-tng.






Hnh 2.17 Qui tc tnh: mt giao im (A) v hai giao im (B)
+ Gii thut t vng kn theo mu (Pattern filling)
@ object (nh mu)
A[m,n]
Vn : xc nh im mu v nhiu im tng ng vi chng trn mn hnh.
Phng php 1:
Tm im neo u tri nht hng u tin ca a gic.
Pi Pi
Pi
Pi
Pi-1
Pi-1
Pi-1
Pi-1 Pi+1
Pi+1
Pi+1
Pi+1
A B
Chng 2: Cc gii thut sinh thc th c s


36
Nhc im: khng c im nh v tr phn bit mt cch r rng cho mu t trong mt a
gic bt k.
Phng php 2: s dng cho SRGP
Ly im neo gc to , gi s ta coi c mn hnh c lt bi mu t cc thc th l cc
ng bin cho cc vng t, vy nu ngoi cc thc th cc mu t khng c php th hin.








Hnh 2.18 Phng php ly im neo
Tm tt chng:
Cc i tng ho c s cung cp cc cng c c bn nht cho vic xy dng cc nh
ho ca cc i tng phc tp. Cc on thng, ng cong, vng t, k t....l cc i tng
ho c s c hu ht tt c cc cng c lp trnh ho h tr.
c th hin th cc i tng ho trn thit b hin th dng im m in hnh l mn
hnh, cn phi c mt qu trnh chuyn cc m t hnh hc ca cc i tng ny trong h to
th gii thc v dy cc pixel tng ng gn vi chng nht trn to thit b. Qu trnh ny cn
c gi l qu trnh chuyn i bng dng qut. Yu cu quan trng nht i vi qu trnh ny
ngoi vic phi cho kt qu xp x tt nht cn phi cho tc ti u.
Ba cch tip cn v on thng gm thut ton DDA, thut ton Bresenham, thut ton
Midpiont u tp trung vo vic a ra cch chn mt trong hai im nguyn k tip khi bit
im nguyn bc trc. Thut ton DDA n gin ch dng thao tc lm trn nn phi dng
cc php ton trn s thc, trong khi thut ton Bresenham v Midpiont a ra cch chn phc
tp hn nhng cho kt qu tt hn. Tng t dng hai gii thut Bresenham v Midpiont v
ng trn v ellpise v mt s ng cong khc.
Cc thut ton t mu vng gm thut ton loang ( qui) hay thut ton dng qut. C th
t cng mt mu hay t theo mu.
Bi tp:
1. Ch nh cc v tr mnh no s c chn bi thut ton Bresenham lc chuyn qut mt
ng thng t to pixel (1,1) sang to pixel (8,5).
2. Dng gii thut Bresenham vit hm sinh on thng (xt tt c cc trng hp ca h s
gc).
3. Dng gii thut Midpiont vit hm sinh on thng (xt tt c cc trng hp ca h s
gc).
x
y
neo
neo
x
y
Chng 2: Cc gii thut sinh thc th c s


37
4. Dng gii thut Midpiont vit hm sinh ng trn (to tm (xc,yc) v bn knh r).
5. Dng gii thut Midpiont vit hm sinh ng ellipse (to tm (xc,yc) v bn knh rx
v ry ).
6. T hm v ng thng thit k v ci t hm v cc hnh sau: hnh ch nht, a gic,
ngi nh....
7. Vit gii thut tm giao im hai on thng.
8. Vit chng trnh t mu Floodfill (s dng qui vi 4-connected).
9. a ra lu thut ton t mu theo dng qut.
10. Vit thut ton t mu scan-line.
Bi tp trc nghim:
1. Xy dng gii thut tng qut v ng thng ta c xt h s k (h s gc ca ng)
s c tt c cc trng hp ca k:
a. 4
b. 3
c. 2
d. 1
2. biu din on thng thng qua phng trnh tham s nh sau:
a. y=f(x) hay y=kx+b
b. f(x,y)=0 hay ax + by +c =0
c. x(v)=x
1
+v(x
2
-x
1
) v y(v) = y
1
+v(y
2
-y
1
) c v [0,1]
d. P(u) = P
1
+ u(P
2
-P
1
) c u [0,1]
3. Khi xy dng gii thut v ng trn y ta ch cn vit phng trnh cho 1/8 ng
trn, ri gi i xng 8 cch. Khi xy ra hin tng overstrike. Vy im xy ra hin
tng l: (r l bn knh ca ng trn)
a. (0,r) v

r r
2
1
,
2
1

b. (r,0) hoc (0,r) v

r r
2
1
,
2
1

c. (0,r) v (-r,0)
d. (r,0) v (0,r)
4. Gii thut sau l gii thut g? V dng bao nhiu im ln cn?
void Function (int x, int y, int c1, int c2){
if (getpixel(x, y) == c1){
putpixel(x, y, c2);
Function (x-1, y, c1, c2);
Function (x+1, y, c1, c2);
Function (x+1, y+1, c1, c2);
Function (x-1, y-1, c1, c2);
Function (x, y-1, c1, c2);
Chng 2: Cc gii thut sinh thc th c s


38
Function (x, y+1, c1, c2);
}
}

Gii thut scanline, s
im ln cn l:
Gii thut t mu
ng bin, s im
ln cn l:
Gii thut t mu
loang, s im ln
cn l:
Gii thut t mu
theo mu, s mu ln
cn l:



A B c d
5. Gii thut v ng thng sau v cho trng hp k l:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=2*dx-dy;
while(y<y2) {
putpixel(x+320,240-y,c);
if(p<=0){
p=p+2*dx;
}
else{
p=p+2*dx-2*dy;
x++;
}
y++;
} }
a. 0<= k<=1
b. k>1
c. k<=-1
d. -1<k<0
6. Gii thut v ng thng sau v cho trng hp k l:
void Midline(int x1,int y1,int x2,int y2,int c){
int x=x1,y=y1,dx=x2-x1,dy=y2-y1,p=2*dy+dx;
while(x<x2) {
putpixel(x+320,240-y,c);
if(p<=0){
p=p+2*dy+2*dx;
y--;
}
else{
p=p+2*dy;
}
x++;
}}
a. k>=0 v k<=1
b. k>1
c. k<=-1
d. -1<k<0
Chng 2: Cc gii thut sinh thc th c s


39
7. Gii thut sau l gii thut no?
void Function(int xt, int yt, int r, int c){
int x, y, d;
x = 0;
y = r;
d = 3 - 2 * r;
while (x <= y){
putpixel(xt + x, yt + y, c);
putpixel(xt - x, yt + y, c);
putpixel(xt + x, yt - y, c);
putpixel(xt - x, yt - y, c);
putpixel(xt + y, yt + x, c);
putpixel(xt - y, yt + x, c);
putpixel(xt + y, yt - x, c);
putpixel(xt - y, yt - x, c);
if (d < 0)
d += 4 * x + 6;
else{
d += 4 * (x-y) + 10;
y--;
}
x++;
}}
a. Gii thut Bresenham xy dng ng trn
b. Gii thut Midpoint xy dng ng trn
c. Gii thut Bresenham xy dng ng ellipse
d. Gii thut Midpiont xy dng ng ellipse
8. Chng trnh sau a g ra hnh?
#include <graphics.h>
#include <conio.h>
void Function(int xc, int yc, int r, int c){
int x, y, d;
x = 0;
y = r;
d = 3 - 2 * r;
while (x <= y){
putpixel(xc + x, yc + y, c);
putpixel(xc - x, yc + y, c);
putpixel(xc - x, yc - y, c);
putpixel(xc + y, yc - x, c);
putpixel(xc - y, yc - x, c);
if (d < 0)
d += 4 * x + 6;
else{
d += 4 * (x-y) + 10;
y--;
}
x++;
}
}
void main(){
int gr_drive = DETECT, gr_mode;
initgraph(&gr_drive, &gr_mode, "");
Function(getmaxx() / 2, getmaxy() / 2, 150, 4);
Chng 2: Cc gii thut sinh thc th c s


40
getch();
closegraph();
}





A B c d


Chng 3: Cc php bin i ha


41
CHNG 3: CC PHP BIN I HO
1. CC PHP BIN I HNH HC HAI CHIU
1.1. Php bin i Affine (Affine Transformations)
Php bin i Affine l php bin i tuyn tnh ta im c trng ca i tng thnh
tp tng ng cc im mi to ra cc hiu ng cho ton i tng.
V d: php bin i ta vi ch 2 im u cui ca on thng to thnh 2 im mi
m khi ni chng vi nhau to thnh on thng mi. Cc im nm trn on thng s c kt qu
l im nm trn on thng mi vi cng php bin i thng qua php ni suy.
1.2. Cc php bin i i tng
Cc i tng phng trong ho 2 chiu m t tp cc im phng. im trong ho 2
chiu biu din thng qua to , vit di dng ma trn gi l vect v tr.
C 2 dng biu din:
Mt hng v 2 ct: [ ] y x
Hai hng v 1 ct:

y
x

Trong ti liu ny chng ta chn biu din im l ma trn hng (mt hng v 2 ct).
Tp cc im c lu tr trong my tnh s c vit di dng ma trn v tr ca chng.
Chng c th l ng thng, ng cong, nh....tht d dng kim sot cc i tng thng qua
cc php bin i chng, thc cht cc php bin i ho ny c m t di dng cc ma
trn.
1.2.1. Php bin i v tr
Gi s ta c im P = [ x y ] trong mt phng vi [x y] l vect v tr ca P, k hiu l [X].
Gi ma trn T l ma trn bin i s c dng:






Hnh 3.1 Php bin i v tr
Ta c im P sau php bin i thnh P c gi tr [x y].
Thc thi php bin i ng trn 1 im nh s ng vi ton b i tng.

=
d c
b a
T
y
x
P
P
Chng 3: Cc php bin i ha


42
Hay ta c: x = ax + cy
y = bx + dy
Xt ma trn bin i T:
C Php bt bin:
Khi : a = d =1 v b = c = 0 v ma trn cho php bt bin l:
[ ] [ ] [ ] [ ] [ ] ' '
1 0
0 1
* * y x y x y x T X = =

=
Vy x=x v y = y hay l P = P chng t bt bin qua php bin i.
C Php bin i t l (scaling):
- Nu d=1 v b = c = 0 th ma trn bin i l:

=
1 0
0 a
T
x = ax
y = y
P dch chuyn theo trc x vi t l a xc nh.
- Nu b = c =0 th ma trn bin i l:

=
d
a
T
0
0

[ ] [ ] [ ] [ ] [ ] ' '
0
0
* * y x dy ax
d
a
y x T X = =

=
Hay tng qut hn gi Sx, Sy ln lt l t l theo trc x v trc y, th ma trn t l s l:

=
Sy
Sx
T
0
0

Khi Sx , Sy >1 gi l php phng to
Khi Sx, Sy <1 gi l php thu nh
- Cc trng hp c bit:




[ ] [ ] [ ] ( ) ( ) [ ] [ ]
' '
y dy bx * y * x cy ax
d c
b a
x T X = + + =

=
1 0
0 1
T
[ ] [ ] [ ] ( ) [ ] [ ] ' '
1 0
0
* * y x y ax
a
y x T X = =

=
Chng 3: Cc php bin i ha


43








i xng qua y i xng qua x i xng qua gc to
Hnh 3.2 Cc php i xng trn 2D
C Php bin dng
Khi a = d = 1 th to ca P ph thuc vo thay i ca b v c
- Xt c = 0







Hnh 3.3 Php bin dng theo trc oy
C P khng thay i gi tr to x, cn y thay i ph thuc vo c b v x
- Xt b = 0
[ ] [ ] [ ] [ ] [ ] ' '
1
0 1
* * X y x y cy x
c
y x T = + =

=







Hnh 3.4 Php bin dng theo trc ox

Ch : im gc to P[0 0] bt bin vi mi php bin i
[ ] [ ] [ ] [ ] [ ] ' '
1 0
1
* * y x y bx x
b
y x T X = + =

=
P P
Sx=-1
P
P
Sy=-1
P
P
Sx=Sy=-1
P
P
y=bx+y
bx
P P
cy x=x+cy
Chng 3: Cc php bin i ha


44
C Php quay
C >0 ngc chiu kim ng h

Hnh 3.5 Php quay trn 2D
Ta c:
P[x y]= [rcos rsin]
P[x y] = [rcos(+) rsin(+)]
P[x y] = [r(coscos - sinsin)r(cossin + sincos)]
= [(xcos - ysin)(xsin + ycos)]
Vy: x = xcos - ysin
y = xsin + ycos
Ta c:
[X]= [X]* [T] = [(xcos - ysin) (xsin + ycos)]
Vy T tng qut khi quay i tng quanh gc to 1 gc bt k l:
[ ]

=


cos sin
sin cos
T
1.2.2. Php bin i tng hp
Phng php bin i s dng php nhn ma trn vi to im thng qua cc vect v tr
tht s hiu qu v em li cng c mnh v ho cho ngi s dng. Nhng thc t cc thao
tc thng cn khng ch mt m nhiu php bin i khc nhau. Ta c php hon v khi nhn ma
trn l khng thc hin nhng kh nng t hp cc php nhn li cho php to ra mt ma trn bin
i duy nht. Lm gim bt ng k khi lng tnh ton trong qu trnh bin i, lm tng tc
cc chng trnh ng dng v to iu kin cho vic qun l cc bin i trong ng dng.
Gi s ta c P vi [X] = [x y], c hai php bin i [T1] quay quanh gc to 90
0
:

=
0 1
1 0
1 T
V [T2] ly i xng P qua gc to :
Chng 3: Cc php bin i ha


45

=
1 0
0 1
2 T
Ta c:
[ ] [ ] [ ] [ ] [ ] x y y x T X X =

= =
0 1
1 0
* 1 * '
[ ] [ ] [ ] [ ] [ ] x y x y T X X =

= =
1 0
0 1
* 2 * ' "
Gi s [T3] l ma trn tng hp [T1] v [T2]
[ ] [ ] [ ] [ ] [ ] x y y x T X X =


= =
0 1
1 0
* 3 * *
Kt lun: bin i qua nhiu ma trn thnh phn s tng ng vi php bin i qua ma
trn tng hp t cc php bin i .
2. TA NG NHT V CC PHP BIN I
2.1. To ng nht
Ta xt php tnh tin:
x= x + dx
y = y + dy
Vy P = P + [T]
[ ]

=
dy
dx
T
Vy php bin i tng hp:
P=P*[T] + [T] = (P + [T]) [T] + [T]
R rng khng th biu din thng qua ma trn tng hp 2 chiu 2x2 c. Php tnh tin
a ra ma trn bin i tng hp l khng th.
Th no l phng php biu din to ng nht ? l phng php biu din m rng
thng qua to ng nht ca cc vect v tr khng ng nht [x y] l ng dng ca php bin
i hnh hc m to im c m t di ma trn [x* y* h] vi x=x*/h, y=y*/h c h l
mt s thc tu . Vy mt vect v tr [xy] bt k trn mt phng xoy bng tp v s cc im
ng nht [hx hyh]. V d: [2 5] s biu din bng [4102], [6153]..... n gin nht l [251].
Vy to ng nht ca vect v tr [X]= [ x y 1]. Khi ma trn bin i s l 3x3:
[ ]

=
1
0
0
dy dx
d c
b a
T
[ ] [ ]

= =
1
0
0
* 1 . '
dy dx
d c
b a
y x T P P
Chng 3: Cc php bin i ha


46
x=ax + cy +dx
y=bx + dy + dy
[X]= [x y1]
Trong dx, dy l khong tnh tin theo trc x v y.
2.2. Php bin i vi to ng nht
Ma trn bin i ng nht
C Php tnh tin
C a=d=1 v b=c=0
[ ]

=
1
0 1 0
0 0 1
n m
T
Ch : trong mt phng to , mi im k c gc to u c th bin i.
Php bin i tng hp ca hai php tnh tin theo khong [m1 n1] v [m2n2] bng php
bin i duy nht mt khong c gi tr bng tng ca hai php bin i [m1+m2n1+n2].
Tht vy:
[ ] [ ]

+ +
=

=
1 2 1 2 1
0 1 0
0 0 1
1 2 2
0 1 0
0 0 1
*
1 1 1
0 1 0
0 0 1
2 * 1
n n m m n m n m
T T
C Php t l
Tng t ma trn t l:
[ ]

=
1 0 0
0 0
0 0
Sy
Sx
Ts

Ch : Php bin i tng hp ca hai php t l Sx1, Sx2 v Sy1,Sy2 bng php bin i
duy nht c t l l tch hai php bin i trn Sx1*Sx2, Sy1*Sy2.
C Php quay

=
1
0
0
] [
n m
d c
b a
T
] 1 [
1
0 1 0
0 0 1
] 1 [ ] 1 ' ' [ n y m x
n m
y x y x + + =

=
] 1 . . [
1 0 0
0 0
0 0
] 1 [ ] 1 ' ' [ Sy y Sx x Sy
Sx
y x y x =

=
Chng 3: Cc php bin i ha


47






Hnh 3.6 Php quay
3. CC PHP BIN I HNH HC BA CHIU
Cc php bin i chuyn v - translation, t l-scaling v quay-rotation s dng trong
khng gian 2D u c th m rng trong khng gian 3D.
3.1.Biu din im trong khng gian 3 chiu
[x* y* z* h] hay[x*/h y*/hz*/h 1]
Vit gn hn:[xy z1]
Ma trn bin i tng qut trong khng gian 3D vi ta ng nht (4x4)

Hay

=
1
0
0
0
dz dy dx
h i g
f e d
c b a
T
3.2. Php tnh tin
y l php bin i n gin nht, m rng t php bin i trong khng gian 2D ta c:







[X'] = [ X ] . [ T(dx,dy,dz) ]
[ x' y' z' 1 ] = [ x y z 1 ].[ T(dx,dy,dz)
]
= [ x+dx y+dy z+dz 1 ]


Hnh 3.7 Php tnh tin trn 3D
[ ] 1 ) cos sin ( ) sin cos (
1 0 0
0 cos sin
0 sin cos
] 1 [ ] 1 ' ' [



y x y x
y x y x
+ =

=

y
( x, y )
x


( x, y )

=
s n m l
r j i g
q f e d
p c b a
] [T

=
1
0 1 0 0
0 0 1 0
0 0 0 1
)] , , ( [
dz dy dx
dz dy dx T
Chng 3: Cc php bin i ha


48
3.3. Php t l
Tng t trong 2D ta c php t l trong 3D l:

=
1 0 0 0
0 Sz 0 0
0 0 0
0 0 0
Sy
Sx
Ts
Ta c Sx,Sy v Sz l cc h s t l trn cc trc
to
[X] = [X] . [T(Sx,Sy,Sz) ]




= [x.Sxy.Sy z.Sz 1]

Hnh 3.8 Php t l trn 3D
3.4. Php bin dng
- Ta c tt c cc phn t nm trn ng cho chnh bng 1
- Cc phn t chiu v tnh tin bng 0
[X] = [X] . [Tsh]










Hnh 3.9 Cc php bin dng trn 3D
3.5. Php ly i xng

=
1 0 0 0
0 0 0
0 0 0
0 0 0
] 1 [ ] 1 ' ' ' [
Sz
Sy
Sx
z y x z y x

=
1 0 0 0
0 1
0 1
0 1
] 1 [ ] 1 ' ' ' [
i g
f d
c b
z y x z y x
] 1 [ z fy cx iz y bx gz yd x + + + + + + =
Chng 3: Cc php bin i ha


49
i xng qua trc ox i xng qua mt xoy i xng qua gc O

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Mox

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Mxoy

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Mo

3.6. Php quay 3 chiu
2.6.1. Quay quanh cc trc to
n gin nht l php quay quanh cc trc to ox,oy v oz vi gc dng:


Hnh 3.10 Xc nh gc quay dng trn 3 trc to

Khi ny php quay li a v php quay khng gian 2D quanh gc to
- Quay quanh trc oz:


Hnh 3.11 Quay quanh trc oz

=
+ =
=
z z
y x y
y x x
'
'
'
cos sin
sin cos





- Quay quanh trc ox:

=
1 0 0 0
0 1 0 0
0 0 cos sin
0 0 sin cos
] [


Tz
Chng 3: Cc php bin i ha


50

Hnh 3.12 quay quanh trc ox

+ =
=
=


cos sin
sin cos
'
'
'
z y z
z y y
x x


- Quay quanh trc oy:

Hnh 3.13 quay quanh trc oy

+ =
=
+ =


cos sin
sin cos
'
'
'
z x z
y y
z x x


Ghi ch: php quay trong khng gian 3D s dng phng php nhn ma trn bin i
khng c kh nng hon v cc ma trn.
3.6.2. Quay quanh mt trc bt k song song vi cc trc ta
- u tin chuyn dch i tng cho n khi to a phng ca i tng trng vi
trc to m trc a phng song song.
- Quay i tng xung quanh trc ca n (chnh l trc to )
- a i tng v to trc khi dch chuyn ta c ma trn tng hp l:
[T
//
] = [T
tt-
].[T

].[T
tt+
]
V d: quay i tng xung quanh mt trc // vi trc z vi khong dch chuyn l x,y v
gc quay l .
Gii:

=
1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
] [


Tx


=
1 0 0 0
0 cos 0 sin
0 0 1 0
0 sin 0 cos
] [


Ty
Chng 3: Cc php bin i ha


51
[ ] [ ][ ][ ]


=
=
+
1 0 ) sin ) cos 1 ( sin ) cos 1 (
0 1 0 0
0 0 cos sin
0 0 sin cos
1 0
0 1 0 0
0 0 1 0
0 0 0 1
.
1 0 ) cos sin ( ) sin cos (
0 0 0 0
0 0 cos sin
0 0 sin cos
1 0
0 1 0 0
0 0 1 0
0 0 0 1
.
1 0 0 0
0 1 0 0
0 0 cos sin
0 0 sin cos
.
1 0
0 1 0 0
0 0 1 0
0 0 0 1
. .
//









x y y x
y x y x y x
y x y x
T T T T
tt tt z

3.6.3. Quay i tng quanh mt trc bt k
C Xt bi ton sau, hy tm ma trn bin i a mt trc bt k c hng: V=ax + by +
cz v trng vi trc oz theo chiu dng.

Hnh 3.14 Quay i tng quanh mt trc
bt k i qua tm
Ta thc hin cc bc nh sau:
Quay V quanh trc y mt gc (-) sao cho
nm trn mt phng (y, z) c V
1

Quay V
1
quanh trc x mt gc sao cho
trng vi trc z c V
2


Bc 1:




Chng 3: Cc php bin i ha


52









Hnh 3.15 Quay V=ax+by+cz quanh trc oy
Ta tnh ?
Chiu V trn mt phng (x,z) c V. Ta c:

2 2
sin
c a
a
+
=

2 2
cos
c a
c
+
=
[ ]

+ +

+ +
=

1 0 0 0
0 0
0 0 1 0
0 0
1 0 0 0
0 cos 0 ) sin(
0 0 1 0
0 ) sin( 0 cos
2 2 2 2
2 2 2 2
c a
c
c a
a
c a
a
c a
c
T
y


Vect:
2 2
1
, , 0 ( c a b V +
Bc 2:







Hnh 3.16 Quay vector V
1
quanh trc ox
2 2 2
sin
c b a
b
+ +
=
2 2 2
2 2
cos
c b a
c a
+ +
+
=
y
V
V

a
a
b
c
x
z
y
V
V
1

a
a
b
c
x
z

V
2
Chng 3: Cc php bin i ha


53
[ ]

+ +
+
+ +

+ + + +
+
=

=
1 0 0 0
0 0
0 0
0 0 0 1
1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
2 2 2
2 2
2 2 2
2 2 2 2 2 2
2 2
c b a
c a
c b a
b
c b a
b
c b a
c a
T
x


Vy [T
v
] = [T
-y
]. [T
x
]
Nu a ngc li ta c:
[ ] [ ][ ] ( ) [ ][ ]
y x x y v
T T T T T

. .
1 1

= =
C Cho trc quay L (vect V = ax + by + cz) v mt im P nm trn trc L. Hy tm ma
trn bin i quay i tng xung quanh trc L mt gc .
Gii:
Ta thc hin nh sau:
1. Tnh tin P v gc ta .
2. Chuyn trc L v trng vi trc OZ
3. Quay i tng xung quanh trc OZ mt gc .
4. Thc hin ngc li 2,1
Vy:
[ ] [ ][ ][ ][ ][ ]
+

=
tt v Z v tt L
T T T T T T . . . .
1
, ,


Tm tt:
Cc php bin i hnh hc cho php d dng thao tc trn cc i tng c to ra.
Chng lm thay i m t v to ca cc i tng, t i tng s c thay i v
hng, kch thc v hnh dng. Cc php bin i hnh hc c s bao gm tnh tin, quay v
bin i t l. Ngoi ra mt s php bin i khc cng thng c p dng l php i xng
v bin dng.
Cc php bin i hnh hc 2D u c biu din di dng ma trn ng nht 3x3 tin
cho vic thc hin cc thao tc kt hp gia chng. Trong h to ng nht, to ca mt
im c m t bi mt vector dng bao gm ba gi tr, hai gi tr u tng ng vi to
Descartes ca im , v gi tr th ba l 1. Vi cch biu din ny, ma trn ca php bin i c
c t s kt hp ca cc php bin i c s s bng tch ca cc ma trn ca cc php bin i
thnh phn.
Php bin i hnh hc 3D l s m rng ca php bin i 2D. Tng t n cng c cc
php: tnh tin, t l, bin dng v quay. Phc tp nht l php quay, nn chng ta kho st ln
lt t n gin n phc tp: quay i tng quanh cc trc to , quanh 1 trc song song vi
trc to , quanh 1 trc bt k....Do kho st cc php bin i affine vi biu din dng ma trn
ng nht (4x4 vi 3D) nn cng vic kh n gin v nht qun.
Chng 3: Cc php bin i ha


54
Lu php tnh tin v quay c chung thuc tnh l: sau khi bin i hnh dng v kch
thc ca i tng khng thay i m chng ch b thay i v tr v nh hng trong khng
gian.
Bi tp:
1.
a. Hy tm ma trn biu th php quay mt i tng mt gc 60
0
quanh gc to .
b. Tm to mi ca P(-3,3) sau khi thc hin php quay trn?
2.
a. Hy vit dng tng qut ca ma trn iu chnh t l tng ng vi mt im c
nh Q(a,b)?
b. Phng ln t gic c cc nh A(0,0), B(1,3), C(4,2) v D(3,1) ln hai ln kch
thc ban u ca n trong khi vn gi im D(3,1)?
3.
a. M t php bin i nhm quay 1 i tng mt gc xung quanh mt tm c
nh Q(a,b)?
b. Thc hin php quay tam gic ABC c A(0,0), B(1,1) v C(4,2) mt gc 45
0
xung
quanh im (-1, -1)?
4. Cho ABC c cc to nh l A(2,2), B(3,1) v C(4,3). Xc nh ma trn bin i
affine bin i tam gic ny thnh ABC bit nh A(4,3), B(4,5) v C(7,3).
5.
a. hy tm mt ma trn dnh cho php phn chiu i xng gng xung quanh mt
ng thng G vi dc m v tung gc (0,g)?








b. To phn x i xng gng a gic m nh ca n: A(-1,0), B(0,-2), C(1,0) v
D(0,2) xung quanh ng G trong cc trng hp sau:
i. x=2
ii. y=3
iii. y=2x+3
6. Cho hnh chp ABCD c cc to A(0,0,0), B(1,0,0), C(0,1,0) v D(0,0,1). Quanh hnh
chp quanh ng L (v=x+y+z) i qua im C mt gc 45
0
. Tm to hnh chp mi.
7.
a. Hy tm php bin i dnh cho php i xng gng tng ng vi mt mt
phng cho (c vector php tuyn M, trn c mt im P).

x
y P
P
G
0
g

Chng 3: Cc php bin i ha


55








b. p dng tm ma trn cho php i xng gng vi mt phng i qua gc to
v vector php tuyn c hng M=x+y+z.
8. Vit chng trnh vi i tng (ng thng, tam gic, t gic...) trong mt phng 2D
a. Dch chuyn (dng cc phm dch chuyn)
b. Phng ln, thu nh (dng phm dch chuyn hay g vo t bn phm)
c. Quay vi gc quay c g vo t bn phm (gc g vo c tnh bng )
9. Vit chng trnh vi i tng (hnh kim cng, hnh lp phng ...) trong 3D
a. Dch chuyn
b. Phng ln, thu nh
c. Quay mt gc
Bi tp trc nghim:
1. Cho ABC c cc to A(1,1), B(1,2) v C(3,4) thu nh tam gic ch cn m vn gi
c nh im A. To mi ca tam gic l:
a. A(1,1), B(1/4, 1/2) v C(3/4,1)
b. A(1,1), B(0.5, 1) v C(1.25,1.5)
c. A(0.25,0.25), B(1, 1.5) v C(0.75,2)
d. A(1,1), B(1, 1.25) v C(0.5,1.75)
2. Cho on thng AB c to A(2,3) v B(6,1) quay AB mt gc 60
0
vn gi c nh B.
To mi ca AB l:
a. ( ) ( ) ( ) 2 3 , 3 1
'
+ A v B(6,1)
b. ( ) ( ) ( ) 2 3 2 , 3 4
'
+ A v B(6,1)
c. ( )

1 3 , 3 2
4
1
'
A v B(1,6)
d. ( ) ( ) ( ) 1 3 4 , 3 1
'
+ + A v B(6,1)
3. Cho hnh ch nht ABCD c cc to l A(-1,-1), chiu rng HCN l 4 v chiu di l 3.
Ngi ta phng ln HCN n cao ln gp 2 ln v rng gp 1.5 ln m vn gi c nh
A. To mi ca HCN :
a. A(-1,-1), B(5,-1), C(5,-7) v D(-1,-7)
b. A(-1,-1), B(-1,5), C(5,-1) v D(-7,-1)
c. A(2,2), B(3,4), C(5,-7) v D(-7,5)
d. A(-1,-1), B(0,-1), C(-1,-7) v D(-1,5)
x
z
y
M
Q
Q
Chng 3: Cc php bin i ha


56
4. Cho ng trn c tm ti (1,4), mt im trn ng trn A(1,0). Quay ng trn mt
gc 90
0
quanh im A, tm mi ca ng trn l:
a. (0.5, 2)
b. (-3,1)
c. (2,5)
d. (-2,3)
5. Cho on thng AB trong khng gian c to A(2,1,1) v B(1,3,4), quay on thng
quanh trc oz mt gc 30
0
vn c nh A. To mi ca AB l:
a. A(2,1,1), ( ) ( ) ( ) 3 , 2 3 , 3 1
'
+ B
b. ( )

+ 4 ,
2
1
3 , 3 2
'
A , B(1,3,4)
c. A(1,3,5), ( ) ( ) ( ) 3 , 2 3 , 3 1
'
+ B
d. A(2,1,1),

4 , 3 ,
2
3
1 2
'
B
6. Cho ABC trong khng gian c to A(1,1,1), B(4,6,0) v C(2,-1,3) ko dn cho tam
gic rng ra (theo hng trc ox) ln 2 ln vn gi c nh B. To mi ca ABC l:
a. A(2,1,1), B(4,6,0) v C(2,-1,3)
b. A(-2,1,1), B(4,6,0) v C(0,-1,3)
c. A(2,1,1), B(2,3,1) v C(2,-1,1)
d. A(2,2,2), B(4,6,0) v C(1,-0.5,1.5)
7. Cho hnh kim cng ABCD c cc to l A(4,6,1), B(1,2,3), C(2,2,5) v D(7,2,4). i
xng gng hnh kim cng qua trc ox, to mi ca hnh kim cng l:
a. A(4,6,-1), B(1,2,-3), C(2,2,-5) v D(7,2,-4)
b. A(-4,6,-1), B(-1,2,-3), C(-2,2,-5) v D(-7,2,-4)
c. A(4,-6,-1), B(1,-2,-3), C(2,-2,-5) v D(7,-2,-4)
d. A(-4,-6,-1), B(-1,-2,-3), C(-2,-2,-5) v D(-7,-2,-4)
8. Cho hnh kim cng ABCD c cc to l A(5,6,1), B(0,0,0), C(3,2,5) v D(8,2,4). Quay
hnh kim cng quanh trc oy v vn gi c nh B. To mi ca hnh kim cng l:
a. A(-1,5,-1), B(0,0,0), C(2,3,-3) v D(2,4,8)
b. A(1,6,-5), B(1,2,2), C(5,2,-3) v D(2,-4,8)
c. A(-1,5,-1), B(0,0,0), C(2,3,5) v D(2,4,8)
d. A(1,6,-5), B(0,0,0), C(2,5,-3) v D(2,4,-8)
9. Trong on m sau cc s t C, C, C, C ln lt l cc phm mi tn dch chuyn:
c = getch();
switch (c)
{
case 75: x -= 10; // C
break;
case 77: x += 10;// C
break;
case 72: y -= 10; // C
Chng 3: Cc php bin i ha


57
break;
case 80: y += 10;// C
break;
}
a. Tri, phi, trn v di
b. Tri, phi, di v trn
c. Trn, di, tri v phi
d. Trn, di, phi v tri
10. Chng trnh sau a ra ci g?
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#define RADS 0.017453293
void Function1() {
line (10,getmaxy()/2,getmaxx()-10,getmaxy()/2);
line (getmaxx()/2,10,getmaxx()/2,getmaxy()-10);
}
void Function2(int x1,int y1,int x2,int y2,int x3,int y3){
line (getmaxx()/2+x1,getmaxy()/2-y1,getmaxx()/2+x2,getmaxy()/2-y2);
line (getmaxx()/2+x2,getmaxy()/2-y2,getmaxx()/2+x3,getmaxy()/2-y3);
line (getmaxx()/2+x3,getmaxy()/2-y3,getmaxx()/2+x1,getmaxy()/2-y1);
}
void Function3(int x1,int y1, int x2, int y2, int x3, int y3,int xq, int yq,float goc ){
float x11,y11,x22,y22,x33,y33;
float anpha = RADS *goc;
x11 = int(x1*cos(anpha) - y1*sin(anpha) + (1 - cos(anpha))*xq + sin(anpha)*yq);
y11 = int(x1*sin(anpha) + y1*cos(anpha) - sin(anpha)*xq + (1 - cos(anpha))*yq);
x22 = int( x2*cos(anpha) - y2*sin(anpha) + (1 - cos(anpha))*xq + sin(anpha)*yq);
y22 =int( x2*sin(anpha) + y2*cos(anpha) - sin(anpha)*xq + (1 - cos(anpha))*yq);
x33 =int( x3*cos(anpha) - y3*sin(anpha) + (1 - cos(anpha))*xq + sin(anpha)*yq);
y33 =int( x3*sin(anpha) + y3*cos(anpha) - sin(anpha)*xq + (1 - cos(anpha))*yq);
Function2(x11,y11,x22,y22,x33,y33);
}
void main() {
clrscr();
int driver = DETECT, mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
int x1 =50,y1 = 20,x2 = 50,y2 = 100,x3 = 200,y3 = 20;
int xq=100,yq=100;
float goc=30 ;
Function1();
Function2(x1,y1,x2,y2,x3,y3);
Chng 3: Cc php bin i ha


58
Function3(x1,y1,x2,y2,x3,y3,xq,yq,goc);
getch();
closegraph();
}






A b c D

Chng 4: Cc gii thut ha c s


59
CHNG 4: CC GII THUT HO C S
1. H TA V M HNH CHUYN I
1.1. Cc h thng to trong ho
Mt hnh nh c to ra bng my tnh thng trnh by mt khung xem (viewing) tng
phn ca quang cnh ln. Ging ht nh ta nhn cnh vt qua ca s hay mt knh ngm camera.
to ra hnh nh i tng trn cc thit b hin th bt buc ngi s dng phi c bc bin
i trung gian.
1.1.1. H to thc (WCS World Coordinate System)
H to ca i tng c cc chng trnh ng dng s dng m t to cc i
tng trong th gii thc.
n v trong h thng to ph thuc vo khng gian v kch thc ca i tng c
m t: A
0
, nm, mm, m, km

Hnh 4.1 H to thc
1.1.2. H to thit b (DCS Device Coordinate System)
L h thng to ca thit b ni hin th hnh nh v khng gian ca i tng m ng
dng m t. Khng gian ca h thng ca to ny chnh l kch thc ca thit b hin th c
s dng.
V d: mn hnh VGA 640x480, SVGA 600x800
1.1.3. H to thit b chun (NDCS Normalized Device Coordinate System)
Chuyn i i tng t khng gian thc vo to thit b hin th. Phn mm ho
c vit s thc hin s chuyn i m cha th xc nh r kch thc ca thit b cng nh
phn gii. Ta c cng c c lp vi thit b nhm m t vng hin th ra h to thit b chun
ho. Coi NDCS nh h to thit b c kch thc mn hnh hin th l mt hnh vung c cnh
l mt n v (1x1).
Chng 4: Cc gii thut ha c s


60

Hnh 4.2 WCS World Coordinate System

Hnh 4.3 NDCS Normalized Device Coordinate System

Hnh 4.4 DCS Device Coordinate System
- Qui trnh chuyn i cc i tng trong WCS sang NDCS c gi l php nh x
ca s sang cng xem hay php bin i chun ho (Window to Viewport mapping or
Normalization Transformation)
- Qui trnh c th p cc to thit b hin th chun ho sang cc thit b ri rc c gi
l php bin i trm lm vic (Workstation Transformation)
Chng 4: Cc gii thut ha c s


61
1.2. Php nh x t ca s vo cng xem

Hnh 4.5 i tng trong ca s

Hnh 4.6 i tng ti cng xem
- Mt ca s (window) c ch nh bi bn to thc (WCS): Xwmin, Xwmax,
Ywmin, Ywmax
- Mt cng xem (viewport) c m t bi bn to thit b chun ho (NDCS): Xvmin,
Xvmax, Yvmin, Yvmax
Mc ch ca php nh x ny l chuyn i cc to thc (Xw,Yw) ca mt im tu
sang thit b chun ho tng ng (Xv,Yv). gi li khong cch ca im trong cng xem
bng vi khong cch ca im trong ca s, vi yu cu:
min max
min
min max
max
w w
w w
v v
v v
x x
x x
x x
x x


min max
min
min max
max
w w
w w
v v
v v
y y
y y
y y
y y


Ta c:
Chng 4: Cc gii thut ha c s


62
max min
min max
min max
) (
) (
) (
v w w
w w
v v
v
x x x
x x
x x
x +

=

max min
min max
min max
) (
) (
) (
v w w
w w
v v
v
y y y
y y
y y
y +

=

Ta c tm gi tr trn xc nh ca s v cng xem u l hng s. Vy chng ta hon
ton tnh c (Xv,Yv) t (Xw, Yw) qua php bin i:
[XvYv1] = [XwYw 1]. [T]
[T] = [T
tt-
]. [T
s
] . [T
tt
]

- Ma trn tnh tin theo window:
[ ]

1
0 1 0
0 0 1
w w
tt
y x
T
- Ma trn chuyn i t l window vo viewport l:
[ ]

=
1 0 0
0 0
0 0
min max
min max
min max
min max
w w
v v
w w
v v
s
y y
y y
x x
x x
T
- Ma trn tnh tin theo to viewport:
[ ]

=
1
0 1 0
0 0 1
v v
tt
y x
T
Vy ma trn bin i t ca s vo cng xem:
[ ]

=
1 . .
0 0
0 0
min max
min max
min min
min max
min max
min min
min max
min max
min max
min max
w w
v v
w v
w w
v v
w v
w w
v v
w w
v v
y y
y y
y y
x x
x x
x x
y y
y y
x x
x x
T

2. CC GII THUT XN TI (CLIPPING)
2.1. Khi nim
Xn ta l tin trnh xc nh cc im ca mt i tng nm trong hay ngoi ca s hin
th. Nm trong c hin th, nm ngoi loi b.
Vic loi tng im nh ca i tng thng chm nht l khi i tng m phn ln nm
ngoi ca s hin th.
Chng 4: Cc gii thut ha c s


63
2.2. Clipping im
Gi s (x,y) l to ca mt im, vy im c hin th khi tho mn:
Xmin <= x <= Xmax
Ymin <= y <= Ymax
2.3. Xn ta on thng






Cc on thng khng ct ca s th: hoc nm
trong hon ton, hoc nm ngoi hon ton
Nu on thng ct ca s th phn chia qua
im ct phn nm trong v phn nm ngoi
Hnh 4.7 Cc dng xn ta on thng

2.3.1. Thut ton Cohen-Sutherland
tng: Cc on thng c th ri vo cc trng hp sau
- Hin th (visible): c hai u cui ca on thng u nm bn trong ca s
- Khng hin th (not visible): on thng xc nh nm ngoi ca s. iu ny xy ra khi
on thng t (x1,y1) n (x2,y2) tho mn bt k mt trong bn bt ng thc sau:
x
1
,x
2
>x
max
y
1
,y
2
> y
max

x
1
,x
2
< x
min
y
1
,y
2
< y
min

- Xn ta: on thng cn xn ta
Vic ci t gii thut chia lm hai bc:
C Gn m vng 4-bit cho mi im cui ca on thng







Hnh 4.8 Mt phng m trong cc trng hp clipping on thng
M vng c xc nh theo 9 vng ca mt phng m cc im cui nm vo . Mt bt
c ci t true (1) hoc false (0).
Bt 1: im cui bn trn ca s = sign(y-y
max
)
Bt 2: im cui bn di ca s = sign(y
min
-y)
Bt 3: im cui bn phi ca s = sign(x-x
max
)
Bt 4: im cui bn tri ca s = sign(x
min
-x)
Chng 4: Cc gii thut ha c s


64
Qui c sign(a) = 1 nu a dng
= 0 nu a m
C Qu trnh kim tra v tr ca on thng so vi ca s. Tt c im u v im cui ca
on thng c m.
O Nu m ca P
1
hoc P
2
u = 0000 th ton b on thng thuc phn hin th.
If (P
1
.M OR P
2
.M == 0000) then c on thng thuc ca s hin th
O Nu m ca P
1
v P
2
c cng mt v tr m P
1
v P
2
=> cng pha
If (P
1
.M AND P
2
.M != 0000) then 2 im nm v 1 pha ca ca s
O Xt giao im:








Hnh 4.9 M t thut ton Cohen Sutherland outcode

- Tm giao im ca ng thng vi ca s, chnh xc hn l vi phn m rng ca ng
bin.
- Ch : cc ng bin m im cui c chn s y ngang qua nhm thay i m 1
thnh 0
- Nu:
Bt 1 l 1: ct y=y
max

Bt 2 l 1: ct y= y
min

Bt 3 l 1: ct x=x
max

Bt 4 l 1: ct x=x
min

Nhn trn hnh ta c: gi im cui ca on (x
1
,y
1
)
Nu C c chn th ng y=y
min
chn tnh phn ct nhau (bt 2 = 1)
Nu D c chn th y=y
max
hoc x=x
max
(bt 1 v bt 3 =1)
To ct:

=
=
+ =
=
max
min
1 1
max min
) (
/
x x
x x
x x m y y
x x x
i i
i

Hoc:
y
max
y
min

x
min
x
max

A(0001)
B(1000)
C(0100)
D(1010)
Chng 4: Cc gii thut ha c s


65
max
min
max min
1 1
/
/ ) (
y y
y y
y y y
m y y x x
i
i i
=
=

=
+ =

C m l dc ca on thng
m=(y
2
-y
1
)/(x
2
-x
1
)
By gi thay im cui (x
1
,y
1
) vi im ct (x
i
,y
i
)
V d: Cho ca s ct ta hnh ch nht c gc tri di L(-3,1), gc phi trn R(2,6)
Hy tm m vng dnh cho cc im cui ca cc on AB c A(-2,3), B(1,2) ; CD c C(-
4,7), D(-2,10) ; IK c I(-4,2), K(-1,7)
Tm hng mc ct ta ca chng
Gii:
- M vng
Bt 1 = sign(y-y
max
) = sign(y-6)
Bt 2 = sign(y
min
-y) = sign(1-y)
Bt 3 = sign(x-x
max
) = sign(x-2)
Bt 4 = sign(x
min
-x)= sign(-3-x)
Qui c sign(a) = 1 nu a dng
= 0 nu a m
Vy:
A(-2,3) c (0000)
B(1,2) c (0000)
C(-4,7)c (1001)
D(-2,10) c (1000)
I(-4,2) c (0001)
K(-1,7) c (1000)
- Hng mc ct ta
AB c m vng u l (0000) nn n nm hon ton trong
CD c (1001) and (1000) = (1000) (!= (0000)) nn hon ton nm ngoi
IK c (0001) or (1000) =(1001) v (0001) and (1000) =(0000) nn phi xn ta.
Xt I(0001) da trn ng bin x
min
=-3

+ =
=
) (
1 1
min
x x m y y
x x
c c
c

x
min
= -3
m=(y
2
-y
1
)/x
2
-x
1
)= (7-2)/ (-1-(-4)) = 5/3
y
c
=2 + 5/3 (-3-(-4)) = 11/3
Thay I bi I
1
(-3,11/3) (c m vng 0000)
Xt K(1000) ct y
max
=6

=
+ =
max
1 1
/ ) (
y y
m y y x x
c
c c

y
c
=6
x
c
=-1 +(6-7)/(5/3)=-8/5
Thay K bi K
1
(-8/5,6) c m vng 0000)
Chng 4: Cc gii thut ha c s


66
Vy sau khi xn ta on IK thu c I
1
K
1

2.3.2. Gii thut Lyangbarsky
Biu din on thng theo tham bin: on thng bt k i qua hai im P
1
(x
1
,y
1
) v
P
2
(x
2
,y
2
) chng ta c phng trnh tham bin:









Hnh 4.10 Phng trnh tham s cho on thng

x=x(u) c 0<=u<=1
y=y(u)
V vect ch c mt chiu nn vect v tr:
P(u)=P
1
+ (P
2
-P
1
).u
x = x
1
+ (x
2
- x
1
)u = x
1
+ x.u
y = y
1
+ (y
2
- y
1
)u = y
1
+ y.u









Hnh 4.11 M t gii thut LyaBarsky

+ Khi ta chuyn ng dc theo ng m rng vi u thng t - ti + th ta phi:
- Chuyn t bn ngoi vo bn trong hai ng bin ca ca s ct ta ( di v bn tri)
- Sau chng ta di chuyn t trong ra bn ngoi ca hai ng bin khc (t trn v t
bn phi)
P
1
(x
1
,y
1
)
P
2
(x
2
,y
2
) P(u)
U
1
=0
U
2
=1
O
y
max

y
min

left
x
min
x
max

top
right
bottom
U
b

U
l

U
t

U
r

U
0
=0
U
1
=1
P
1

P
2

Chng 4: Cc gii thut ha c s


67
+ Vi im (x,y) nm bn trong ca s ct ta:
x
min
<= x
1
+ x.u <= x
max

y
min
<= y
1
+ y.u <= y
max

Suy ra:
-x.u <= x
1
x
min
k=1
x.u <= x
max
x
1
k=2
-y.u <= y
1
y
min
k=3
y.u <= y
max
y
1
k=4
Vit tng qut:
P
k
.u <=q
k
c k=1,2,3,4
Trong :
P
1
= -xq
1
=x
1
x
min
(phi)
P
2
= xq
2
=x
max
x
1
(tri)
P
3
= -yq
3
=y
1
y
min
(trn)
P
4
= yq
4
=y
max
y
1
(di)
Xt:
+ Nu P
k
= 0: iu tng ng vi vic on thng ang xt song song vi cnh th k
ca hnh ch nht clipping.
a) Nu q
k
< 0 on thng nm ngoi ca s (h bt phng trnh trn v nghim)
b)Nu q
k
>= 0 th on thng nm trong hoc nm trn cnh ca ca s clipping. Yu cu
kho st tip.
+Nu Pk # 0: on thng ang xt s ct cnh k tng ng ca ca s clipping ti v tr trn
on thng u
k
= q
k
/P
k

a) P
k
< 0 on thng c dng i t ngoi vo trong ca ng bin tng ng
b) P
k
> 0 th on thng m rng tin hnh t trong ra ngoi ca ng bin tng ng.
Kt hp li ta c cc bc sau:
(Vi u
1
<= u<= u
2
)
C Nu P
k
=0
q
k
<0 ng vi bt k gi tr no ca k. Loi b on thng => Exit
q
k
>=0 thc hin bc tip theo
C Tnh:
Chng 4: Cc gii thut ha c s


68
u
1
l cc gi tr cc i ca tp hp ang cha 0 v cc gi tr u
k
c tnh
u
2
l cc gi tr cc tiu ca tp hp ang cha 1 v cc gi tr u
k
c tnh
V d: cho ca s ct ta hnh ch nht c gc tri di L(1,2) v gc phi trn R(9,8). C
cc on AB to A(11,10) v B(11,6), on CD to C(3,2) v D(8,4), on IJ to I(-1,7)
v J(11,1). Tm cc hng mc ct ta.
Gii:
C Xt AB
P
1
= 0q
1
=10
P
2
= 0q
2
=-2
P
3
= -4q
3
=4
P
4
= 4q
4
=2
C P
2
=0 m q
2
=-2<0 nn AB nm hon ton ngoi
C Xt CB
P
1
= -5q
1
=2 u
1
=-2/5 (u
k
=q
k
/p
k
)
P
2
= 5 q
2
=6 u
2
=6/5
P
3
= -2q
3
=0 u
3
=0
P
4
= 2 q
4
=6 u
4
=3
Vy u
1
=max(0,-2/5,0)=0 (vi P
k
<0)
u
2
=min(1,6/5,3)=1(vi P
k
>0)
Vy CD nm hon ton trong ca s
C Xt IJ
P
1
= -12q
1
=-2 u
1
=1/6
P
2
= 12 q
2
=10 u
2
=5/6
P
3
= 6q
3
=5 u
3
=5/6
P
4
= -6 q
4
=1 u
4
=-1/6
Vy u
1
=max(0,1/6,-1/6)=1/6 (vi P
k
<0)
u
2
=min(1,5/6,5/6)=5/6(vi P
k
>0)
V u
1
<u
2
nn hai im cui ca ng ct ta l:
X
c1
=x
1
+ x.u
1
= -1 +(11-(-1)).1/6 =1
Y
c1
=y
1
+ y.u
1
= 7 +(1-7).1/6 =6
X
c2
=x
1
+ x.u
2
= -1 +(11-(-1)).5/6 =9
Y
c2
=y
1
+ y.u
2
= 7 +(1-7).5/6 =2
{ }

> = = 0 , : 1 min
2 k
k
k
k k
P
P
q
u u U
{ }

< = = 0 , : 0 max
1 k
k
k
k k
P
P
q
u u U
Chng 4: Cc gii thut ha c s


69
Vy ng sau khi ct ta l: I
1
I
2
c I
1
(1,6) v I
2
(9,2)
2.4. Gii thut xn ta a gic (Sutherland Hodgman)
2.4.1. Khi nim





Hnh 4.12 Cc loi a gic

- a gic li: l a gic c ng thng ni bt k 2 im bn trong no ca a gic u
nm trn trong a gic. a gic khng li l a gic lm.
- Theo qui c: mt a gic vi cc nh P
1
, .....,P
N
(cc cnh l P
i-1
P
i
v P
N
P
1
) c gi l
theo hng dng nu cc hnh theo th t cho to thnh mt mch ngc chiu kim
ng h.
Nu bn tay tri ca mt ngi dc theo bt k cnh P
i-1
P
i
hoc P
N
P
1
cng ch v bn
trong a gic.







Hnh 4.13 Qui tc tm hng dng ca mt a gic hng
- Kho st mt im so vi mt ng thng:






Hnh 4.14 Kho st mt im so vi ng thng
C im A(x
1
,y
1
), B(x
2
,y
2
) v P(x,y)
Theo nh ngha th tch ca hai vect (ABxAP) ch theo hng ca vect K vi mt
phng (xoy). C:
AB=(x
2
-x
1
)i + (y
2
-y
1
)j
triangular convex non-convex self-intersecting religious
L
R
K
A(x
1
,y
1
)
P(x,y)
B(x
2
,y
2
)
ABxAP
Chng 4: Cc gii thut ha c s


70
AP=(x-x
1
)i + (y-y
1
)j
Vy ABxAP=[ (x
2
-x
1
).(y-y
1
) (y
2
-y
1
).(x-x
1
) ].K
Do hng c xc nh nh sau:
) )( ( ) )( (
1 1 2 1 1 2
x x y y y y x x C =
- Nu C dng th P nm bn tri AB
- Nu C m th P nm bn phi AB
2.4.2. Gii thut Hodgman
Cho P
1
,......,P
N
l danh sch cc nh ca a gic b ct ta. Cho cnh AB (im A,B) l
cnh bt k. a gic ct ta li hng dng.







Hnh 4.15 Cc trng hp trong gii thut Hodgman
C Nu c P
i-1
v P
i
u nm bn tri ca cnh ny th P
i
c lu li (a vo output) ca
a gic ct ta.
C Nu c P
i-1
v P
i
u nm bn phi ca cnh th khng c nh no c lu li.
C Nu P
i-1
nm bn tri v P
i
nm bn phi ca cnh th giao im I ca P
i-1
P
i
vi cnh s
c lu li.
C Nu P
i-1
nm bn phi v P
i
nm bn tri th c giao im I v P
i
u c lu li.
2.4.3. Minh ho thut ton Sutherland Hodgman
F=P
1
(F l nh c a vo u tin, S l nh a vo trc P - nh c a). S
bn phi khp kn a gic bi P
N
P
1
A
B
A A A
B B
B P
i-1
P
i

output
P
i
P
i
P
i
P
i-1
P
i-1
P
i-1
I

I

output
output
output
Chng 4: Cc gii thut ha c s


71

























Hnh 4.16 S khi thut ton Hodgman

2.4.4. V d minh ho:








Begin
P(Vertex Input)
Vertex Output, F,AB,N
I=1
S=P
i

i=1
i++ F=P
1

SP
i
ct
AB
Giao ct I
Vertex output
I
S=P
i

S bn tri
AB
i<N
Vertex output
S
End
N
N
N
N
Y
Y
Y Y
Tip
SF ct AB
Tm giao I
Vertex output I
End
Y
N
Chng 4: Cc gii thut ha c s


72
V d 1: ct ta a gic A1,.A5 da trn ca s ABCD






















Hnh 4.17 V d dng gii thut Hodgman xn ta a gic A1...A5

V d 2: hy s dng thut ton Hodgman ct xn on thng ni P
1
(-1,2) n P
2
(6,4)
trn ca s A(1,1), B(5,1), C(5,3) v D(1,3)







Hnh 4.18 V d dng thut ton Hodgman xn ta on P
1
P
2

A
B C
D
A1
A2
A3
A4
A5
A
B C
D
B1
B2 B3
B4
B5
A
B C
D
C1
C2
C3
C4
C5
A
B C
D
D1
D2 D3
D4
D5
A
B C
D
E1
E2
E3
E4
E5
P
1
(-1,2)
D(1,3)
A(1,1)
B(5,1)
C(5,3)
P
2
(6,4) I
1

I
2

I
3

Chng 4: Cc gii thut ha c s


73
Theo thut ton Hodgman ta xn P
1
P
2
da trn tng cnh.
C AB: ta xt C=(x
2
-x
1
)(y-y
1
) (y
2
-y
1
)(x-x
1
)
im P
1
: C=(5-1)(2-1)-(1-1)(-1-1) = 4 >0 nm bn tri
im P
2
: C= (5-1)(4-1)-(1-1)(-1-1) = 12 >0 nm bn tri
Vy P
1
P
2
u c lu
C BC
im P
1
:C = (5-5)(2-1)-(3-1)(-1-5)= 12 >0 nm bn tri
im P
2
:C = - (3-1)(6-5) = -2 <0 nm bn phi
Giao im I
1
:

2
2
) 1 ( 6
2 4
=

= m

= + = + =
=
7
5
3
7
2
)). 1 ( 5 ( 2 ) (
5
1 1
m x x y y
x
c c
c

I
1
(5,26/7) vyP
1
I
1
lu li
C CD
im P
1
: C = (1-5)(2-3) = 4 >0 nm bn tri
im I
1
:C=(1-5)(26/7 -3) = -20/7 <0 nm bn phi
Giao im I
2
:

= + =
+ =
=
2
5
2
7
). 2 3 ( 1
/ ) (
3
1 1
m y y x x
y
c c
c

VyI
2
(5/2,3)c P
1
I
2
c lu
C DA
im P
1
: C = -(1-3)(-1-1) = -4nm bn phi
im I
2
: C = -(1-3)(5/2-1) = 7/2nm bn tri
Giao im I
3
:

= + =
+ =
=
7
4
2
7
2
)). 1 ( 1 ( 2
) (
1
1 1
m x x y y
x
c c
c

I
3
(1, 18/7)
Tm li: Ct xn on P
1
P
2
c on I
2
I
3
c I
2
(5/2,3) v I
3
(1,18/7)
Tm tt chng:
Hin th i tng l qu trnh a cc m t i tng t th gii thc sang mt thit b
xut c th no . Mi i tng c th c quan st nhiu v tr v gc khc nhau. Thng
Chng 4: Cc gii thut ha c s


74
thng mi hnh nh m chng ta quan st c trn mn hnh thit b c gi l mt gc nhn
(view) ca i tng.
Qu trnh loi b cc phn hnh nh nm ngoi mt vng cho trc c gi l xn ta.
Vng c dng xn ta gi l ca s xn ta.
Cc thut ton xn ta on thng Cohen-Sutherland, LyaBarsky u tp trung gii quyt
hai vn chnh nhm ti u tc thut ton l: loi b vic tm giao im i vi cc on
thng chc chn khng ct ca s (nh nm hon ton trong, nm hon ton ngoi), v vi on
thng c kh nng ct ca s, cn phi tm cch hn ch s ln tm giao im vi cc bin khng
cn thit. Thut ton Cohen-Sutherland gii quyt hai ny thng qua kiu d liu m vng m
v bn cht ch l s m t v tr tng i ca vng ang xt so vi cc bin ca ca s. Cn
thut ton LyaBarsky th tuy da vo phng trnh tham s ca on thng lp lun nhng
thc cht l da trn vic xt cc giao im c th c gia on thng ko di vi cc bin ca
ca s (cng c ko di). Cc giao im ny tng ng vi cc gi tr r
k
= q
k
/p
k
. C hai thut
ton ny u c th c m rng cho vic xn hnh trong ho 3D.
Bi tp:
1. Tm php bin i chun ho to nh x cho mt ca s m gc bn tri pha di ca n
(1,1) v gc bn phi trn (3,5) vo:
a. L mn hnh thit b c chun ho ton b.
b. Mt cng xem c gc bn tri di (0,0) v gc bn tri trn (1/2,1/2)
2. Cho ca s ct ta hnh ch nht c gc bn tri di (-3,-2) v gc phi trn (2,3), dng
gii thut Cohen Sutherland xn ta on thng AB c to l A(3,2) v B(-2,-4).
3. Cho ca s ct ta hnh ch nht c gc bn tri di (-3,-2) v gc phi trn (2,3), dng
gii thut LyaBarsky xn ta on thng AB c to l A(3,2) v B(-2,-4).
4. Vit chng trnh ci t thut ton Cohen Sutherland.
5. Vit chng trnh ci t thut ton LyaBarsky
6. Vit chng trnh ci t thut ton Sutherland Hodgman

Bi tp trc nghim:
1. H to thit b chun (NDCS) c kch thc mn hnh hin th l hnh ch nht c
chiu di gp i chiu rng. Vy nu mt hnh ch nht ng (c chiu di gp i chiu
rng khi hin th trn mn hnh s cho:
a. Hnh ch nht nm ngang (chiu di gp i chiu rng)
b. Hnh vung
c. Vn l hnh ch nht ng
d. Hnh ch nht c chiu di gp 1.5 chiu rng
2. Php bin i chun ho to nh x cho mt ca s m gp bn tri pha di (1,3) v gc
bn phi trn (4,7) vo mn hnh c chun ho ton b l:
Chng 4: Cc gii thut ha c s


75
a.

1
4
1
3
3
1
0
4
1
0
0 0
3
1

b.

3
1
0 0
0 2 0
2 1
3
1

c.

1
4
1
3
4
1
0
3
1
0
0 3
3
1

d.

1
4
1
3 0
0
3
1
1 0
3
1
0 2

3. Cho ca s ct ta gc tri di (-2,2) v gc phi trn (4,7). M vng 4bt ca im A(-
3,-1) l:
a. 1000
b. 1010
c. 0101
d. 0001
4. Cho ca s ct ta c gc tri di (2,-3) v phi trn (5,6), m vng 4bt ca im
M(6,10) l:
a. 1010
b. 1100
c. 0101
d. 0001
5. Cho ca s ct ta c gc tri di (2,2) v gc phi trn (5,10). Cho on AB c A(1,5)
v B(6,8), sau khi xn ta ta thu c to mi l:
a.

3 ,
5
2
3 5 ,
5
3
3
Chng 4: Cc gii thut ha c s


76
b.

5
3
3 , 3 2 ,
5
1
3
c.

2 ,
5
2
7
5
1
3 , 5
d.

5
2
7 , 5
5
3
5 , 2
6. Cho ca s ct ta c gc tri di (1,2) v phi trn (9,8). on thng MN c M(-1,7) v
N(11,1), sau khi xn ta ta thu c on thng c to l:
a. (2,6) v (7,1)
b. (5,2) v (9,1)
c. (1,6) v (9,2)
d. (3,9) v (6,3)
7. Gii thut LyaBarsky da vo phng trnh ng thng:
a. Tng minh y=f(x)
b. Khng tng minh f(x,y) = 0
c. Tham s x = x(t), y = y(t) c t [0,1]
d. Do ng a ra
8. Trong cc cu ni sau cu no sai ?
a. on thng c hin th khi c hai u cui u trong ca s hin th
b. on thng nm hon ton ngoi khi n phm bt k mt trong bn bt ng thc
sau:
x
1
,x
2
>x
max
x
1
,x
2
<x
min
y
1
,y
2
>y
max
y
1
,y
2
<y
min

c. on thng c hin th khi:
P
1
.m or P
2
.m ==0000 (P
1
,P
2
l hai im cui)
d. on thng nm hon ton ngoi khi n tho mn mt trong bn bt ng thc
sau:
x
1
,x
2
>=x
max
x
1
,x
2
<=x
min
y
1
,y
2
>= y
max
y
1
,y
2
<= y
min

9. on m sau ci t gii thut Cohen Sutherland, gn m vng 4bt cho mi im cui ca
on thng xn ta. T gii thut c hc bn hy cho bit th th t C, C, C, C s c m
vng ln lt s l:
C#define EDGE_10x1
C#define EDGE_2 0x2
C#define EDGE_3 0x4
C#define EDGE_4 0x8
a. Tri, phi, trn v di
b. Tri, phi, di v trn
c. Trn, di, tri v phi
d. Phi, tri, trn v di
Chng 4: Cc gii thut ha c s


77
10. Hm sau l mt hm trong gii thut Cohen Sutherland. Bn hy cho bit ln lt cc dng
lnh C, C, C, C s cho cc m vng 4bt l: (chiu theo nh ngha m vng 4bt trong sch k
thut ho)
unsigned char encode(double x, double y, double xmin, double ymin,
double xmax, double ymax)
{
unsigned char code = 0x00;
if (x < xmin)
code = code | LEFT_EDGE;//C
if (x > xmax)
code = code | RIGHT_EDGE; //C
if (y < ymin)
code = code | TOP_EDGE; //C
if (y > ymax)
code = code | BOTTOM_EDGE;//C
return code;
}
a. 0x8, 0x4, 0x2 v 0x1
b. 0x1, 0x2, 0x4 v 0x8
c. 0x1, 0x2, 0x8 v 0x4
d. 0x2, 0x8, 0x4 v 0x1
11. Bn hy cho bit hm sau l mt trong nhng hm ci t cho gii thut xn ta no?
#define TRUE 1
#define FALSE 0
int cliptest(double p, double q, double *u0, double *u1)
{
double r;
int retVal = TRUE;
if (p < 0.0)
{
r = q / p;
if (r > *u1)
retVal = FALSE;
else
if (r > *u0)
*u0 = r;
}
else
if ( p > 0.0)
{
r = q / p;
if (r < *u0)
retVal = FALSE;
else
if (r < *u1)
*u1 = r;
}
else
Chng 4: Cc gii thut ha c s


78
{
if (q < 0.0)
retVal = FALSE;
}
return (retVal);
}
a. Cohen Sutherland
b. Lyabarsky
c. Hodgman
d. Khng phi gii thut xn ta


Chng 5: Phiu chiu Projection


79
CHNG 5: PHP CHIU PROJECTION
1. KHI NIM CHUNG
1.1.Nguyn l v 3D (three-Dimension)
ha 3 chiu (3D computer graphics) bao gm vic b xung kch thc v chiu su ca
i tng, cho php ta biu din chng trong th gii thc mt cch chnh xc v sinh ng hn.
Tuy nhin cc thit b truy xut hin ti u l 2 chiu, Do vy vic biu din c thc thi
thng qua php t cht (render) gy o gic (illusion) v su
ho 3D l vic chyn th gii t nhin di dng cc m hnh biu din trn cc thit b
hin th thng qua k thut t cht (rendering).
1.2. c im ca k thut ho 3D
C cc i tng phc tp hn cc i tng trong khng gian 2D
- Bao bi cc mt phng hay cc b mt
- C cc thnh phn trong v ngoi
Cc php bin i hnh hc phc tp
Cc php bin i h to phc tp hn
Thng xuyn phi b xung thm php chiu t khng gian 3D vo khng gian 2D
Lun phi xc nh cc b mt hin th
1.3.Cc phng php hin th 3D
Vi cc thit b hin th 2D th chng ta c cc phng php sau biu din i tng 3D:
- K thut chiu (projection): Trc giao (orthographic)/phi cnh (perspective)
- K thut nh du su (depth cueing)
- Nt khut (visible line/surface identification)
- T cht b mt (surface rendering)
- Ct lt (exploded/cutaway scenes, cross-sections)
Cc thit b hin th 3D:
- Knh stereo - Stereoscopic displays*
- Mn hnh 3D Holograms
Chng 5: Phiu chiu Projection


80

Exploded/cutaway
scenes (ct lt)





Perspective (phi
cnh) and Depth of
Field (chiu su)



Shadows as depth cues (to bng cm
gic c chiu su)

Hnh 5.1 Cc cch m t i tng 3D







Hnh chiu cnh Hnh chiu bng Hnh chiu ng
Hnh 5.2 Cc gc nhn khc nhau ca m hnh 3D
Chng 5: Phiu chiu Projection


81

















Hnh 5.3 Cc cch m t i tng 3D
2.PHP CHIU
nh ngha v php chiu
Mt cch tng qut, php chiu l php chuyn i nhng im ca i tng trong h
thng ta n chiu thnh nhng im trong h thng ta c s chiu nh hn n.
nh ngha v hnh chiu
nh ca i tng trn mt phng chiu c hnh thnh t php chiu bi cc ng
thng gi l tia chiu (projector) xut pht t mt im gi l tm chiu (center of projection) i
qua cc im ca i tng giao vi mt chiu (projection plan).
Cc bc xy dng hnh chiu
1. i tng trong khng gian 3D vi ta thc c ct theo mt khng gian xc nh
gi l view volume.
2. View volume c chiu ln mt phng chiu. Din tch chon bi view volume trn mt
phng chiu s cho chng ta khung nhn.
3. L vic nh x khung nhn vo trong mt cng nhn bt k cho trc trn mn hnh
hin th hnh nh.
M hnh 3D
(3D Modelling)
Tham s
(Parametric)
a gic
(Polygonal)
Mnh nh
(Particles)
Nt khut
(Implicit)
2 2 2 2
r z y x = + +

2
4
cos
sin
=
=
y
x
Chng 5: Phiu chiu Projection


82

Hnh 5.4 M hnh nguyn l ca tin trnh biu din i tng 3D

Hnh 5.6 Phn loi cc php chiu


Ct theo view
volum
Php chiu trn
mt phng chiu
Php bin i vo
cng nhn ca
ta thit b
ta thc
3D
ta theo vng
ct
khung nhn
ta thit
b
Php chiu hnh hc
phng
Php chiu song
song
Php chiu phi cnh
Mt im
Ba im
Hai im
Trc giao
Php chiu
Xin
Cavalier
Cabinet
Php chiu
khc
Chiu
ng
Chiu
cnh
Axonometric
Trimetric
Dimetric
Isometric
Chiu
bng
Chng 5: Phiu chiu Projection


83
















Hnh 5.5 V d minh ho cc php chiu phi cnh

3. PHP CHIU SONG SONG (Parallel Projections )
Php chiu song song (Parallel Projections) l php chiu m cc tia chiu song song
vi nhau hay xut pht t im v cng.
Phn loi php chiu song song da trn hng ca tia chiu (Direction Of Projection) v
mt phng chiu (projection plane).
3.1.Php chiu trc giao (Orthographic projection)
L php chiu song song v tia chiu vung gc vi mt phng chiu. V mt ton hc,
php chiu trc giao l php chiu vi mt trong cc mt phng to c gi tr bng 0. Thng
dng mt phng z=0, ngoi ra x=0 v y=0.
ng vi mi mt phng chiu ta c mt ma trn chiu tng ng.



Hnh 5.7 Php chiu trc giao

=
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
] [
z
T

=
1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 1
] [
y
T

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 0
] [
x
T
Chng 5: Phiu chiu Projection


84
Thng thng th ngi ta khng s dng c 6 mt phng suy din ngc hnh ca mt
i tng m ch s dng mt trong s chng nh: hnh chiu bng, ng, cnh.
C su gc nhn u c th thu c t mt mt phng chiu thng qua cc php bin i
hnh hc nh quay, dch chuyn hay ly i xng.
V d: gi s chng ta c hnh chiu bng trn mt phng z=0, vi php quay i tng
quanh trc mt gc 90
0
s cho ta hnh chiu cnh.
i vi cc i tng m cc mt ca chng khng song song vi mt trong cc mt phng
h to th php chiu ny khng cho hnh dng tht ca vt th. Mun nhn vt th chnh xc
hn ngi ta phi hnh thnh php chiu thng qua vic quay v dch chuyn i tng sao cho
mt phng song song vi cc trc to .
Hnh ca i tng qu phc tp cn thit phi bit cc phn bn trong ca i tng i
lc chng ta phi to mt ct i tng.
3.2. Php chiu trc lung (Axonometric)
Php chiu trc lng l php chiu m hnh chiu thu c sau khi quay i tng sao cho
ba mt ca i tng c trng thy r nht (thng mt phng chiu l z=0).
C 3 php chiu
- Php chiu Trimetric
- Php chiu Dimetric
- Php chiu Isometric
3.2.1.Php chiu Trimetric
L php chiu hnh thnh t vic quay t do i tng trn mt trc hay tt c cc trc ca
h ta v chiu i tng bng php chiu song song ln mt phng chiu (thng l mt
phng z = 0).
Ngoi tr nhng mt phng ca i tng song song vi mt phng chiu khng thay i.
Cc mt khc ca i tng hay hnh dng ca i tng thng bin dng sau php chiu.Tuy
nhin t l co (Shortening Factor - SF) l t s ca di on thng chiu so vi di thc t
ca i tng. Trn c s SF php chiu trc lng c chia lm ba loi sau:
Php chiu Trimetric
Php chiu Dimetric
Php chiu Isometric
Vic tnh cc gi tr SF ny ca cc trc tng ng da vo cng thc [U]* [T].
[ U ]: l ma trn vector n v ca cc trc x, y, z bt bin
[ T ]: l ma trn chiu tng hp tng ng
SF- t l co theo cc trc l:

=
1 0 0 0
1 0
1 0
1 0
] [
1 1 0 0
1 0 1 0
1 0 0 1
] [
' '
' '
' '
z z
y y
x x
y x
y x
y x
T U
Chng 5: Phiu chiu Projection


85
2 ' 2 '
x x x
y x f + =


3.2.2.Php chiu Dimetric
L php chiu Trimetric vi 2 h s t l co bng nhau, gi tr th 3 cn li l tu .
Php chiu c xy dng bng cch quay i tng quanh trc y theo mt gc , tip
quanh quanh trc ox mt gc v sau cng l php chiu trn mt phng z=0 vi tm chiu ti v
tn.

Hnh 5.8 nh ca php chiu Trimetric vi cc tham s gc xoay thay i



2 2 2 2 ' 2 ' 2
sin . sin cos ) ( + = + =
x x x
y x f


=
=
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
.
1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
.
1 0 0 0
0 cos 0 sin
0 0 1 0
0 sin 0 cos
] ][ ][ [ ] [




Pz Rx Ry T

=
1 0 0 0
0 0
0 0
0 0
1 0 0 0
0 0 sin cos sin
0 0 cos 0
0 0 sin sin cos
] [
' '
' '
' '
z z
y y
x x
y x
y x
y x
T


2 2 ' 2 ' 2
cos ) ( = + =
y y y
y x f
2 2
' '
z z z
y x f + =
2 2
' '
y y y
y x f + =
Chng 5: Phiu chiu Projection


86
T l co trn x v y bng nhau nn ta c:
cos
2
= cos
2
+ sin
2
.sin
2

1- sin
2
= 1-sin
2
+ sin
2
.sin
2

sin
2
(sin
2
-1) = - sin
2

2
2
2
sin 1
sin
sin

2
2
2
2 2
2
sin 1
sin
sin 1
sin
sin

=
z
f


2
sin
2 z
f
=
)
2
( sin
1 z
f
=


Ta thy t l co thuc khong [0 1], vi mi f
z
ta c bn kh nng ca php chiu.








f
z
= 0 f
z
=1/2 f
z
= 1
Hnh 5.9 Php chiu hnh hp vi f=0, f=1/2 v f=1
Khi f
z
=1/2 th:
208 . 22 ) 378 . 0 ( sin )
4 / 7
2 / 1
( sin
705 . 20 ) 35355 . 0 ( sin )
2 2
1
( sin
1 1
0 1 1
= =
=


3.2.3.Php chiu Isometric
L php chiu trc lng m h s co cnh trn 3 trc l bng nhau.
Gc quay tng ng l 35.26
0
v 45
0

c ng dng nhiu trong vic xy dng cc gc quan st chun cho i tng trong cc
h son tho ho.
) sin 1 ( sin sin ) sin 1 ( sin sin
sin cos sin ) (
2 2 2 2 2 2
2 2 2 2 ' 2 ' 2


+ = + =
+ = + =
z z z
y x f

2
2
2
sin 1
sin 2 1
sin

2
2
2
sin 1
sin
sin

=
)
2
( sin
2
1
z
z
f
f

Chng 5: Phiu chiu Projection




87
0
26 . 35
3
1
sin
=
=


0
2
2
2
45
2
1
sin
2 / 1
3 / 1 1
3 / 1
sin 1
sin
sin
=
=
=



V d cc php chiu song song:












othergraphic

oblique











Dimetric

isometric
Hnh 5.10 V d cc php chiu song song

3.3. Php chiu xin - Oblique
Php chiu Cavalier
Php chiu Cabinet
0
45
0
26 . 35
=
=

8165 . 0 3 / 2 cos
2
= = = f
Chng 5: Phiu chiu Projection


88

Hnh 5.11 Php chiu vi tm chiu trn trc oz

3.3.1.Php chiu Cavalier
Php chiu cavalier l php chiu xin c to thnh khi cc tia chiu lm thnh vi mt
phng chiu mt gc 45
0

H s co trn cc h trc to bng nhau.
Ta c vect n v theo trc z l P=[0 0 1] tia chiu lm vi mt phng mt gc v p c
chiu ln mt phng chiu.
Ta c P1O v PP2 l 2 tia chiu ca php chiu xin vi gc vi mt phng chiu.
P2 l nh ca P
P1 l im dch chuyn ca P to ra tia chiu song song PP2
Tia chiu P1O c th thu c t php bin i P n im [-a-b]
Trong khng gian hai chiu dch chuyn s l:


=
1
0 1 0
0 0 1
'
b a
T
Trong khng gian ba chiu, f l chiu di ca hnh chiu vect n v trc z trn mt phng
chiu, chnh l h s co.
f = 0, b = 90
0
php chiu s tr thnh php chiu trc giao.
Cn vi f = 1 kch thc ca hnh chiu bng kch thc ca i tng => cavalier
Php chiu Cavalier cho php gi tr ca a bin i mt cch t do a = 30
0
v 45
0


=
1 0 0 0
0 0
0 0 1 0
0 0 0 1
] ' ' [
b a
T

sin
cos a
f b
f
=
=


=
1 0 0 0
0 0 sin cos
0 0 1 0
0 0 0 1
] [
f f
T
Chng 5: Phiu chiu Projection


89
3.3.2.Php chiu Cabinet
Php chiu xin vi h s co t l f = 1/2 .
Vi php chiu cabinet, gi tr ca c th thay i tu . Thng thng th cc gi tr hay
c s dng l 30
0
v 45
0
.
Theo php chiu xin mt s mt ca i tng c th c hin th nh hnh dng tht cho
nn rt ph hp vi vic m t cc i tng c hnh dng trn hay cc b mt cong.
V d v php chiu xin (Oblique Projections)







Hnh 5.12 V d cc php chiu xin hnh hp
4. PHP CHIU PHI CNH (Perspective Projection)
Php chiu phi cnh l php chiu m cc tia chiu khng song song vi nhau m xut
pht t mt im gi l tm chiu. Php chiu phi cnh to ra hiu ng v lut xa gn to cm
gic v su ca i tng trong th gii tht m php chiu song song khng lt t c.
Cc on thng song song ca m hnh 3D sau php chiu hi t ti mt im gi l im
trit tiu (vanishing point).
Phn loi php chiu phi cnh da vo tm chiu - Centre Of Projection (COP) v mt
phng chiu projection plane
D/2
D D
D
0
2 2
1
2 2
1
435 . 63 )
) 2 1 ( 1
2
1
( cos
)
1
( cos
=
+
=
+
=

f
f

Chng 5: Phiu chiu Projection




90










Mt tm chiu Hai tm chiu Ba tm chiu
1 point Perspective 2 point Perspective 3 point Perspective
Hnh 5.13 Php bin i phi cnh


Hnh 5.14 Php chiu vi tm chiu trn trc z
Php chiu phi cnh ca cc im trn i tng ln trn mt phng 2D thu c t php
chiu trc giao v php bin i phi cnh.
Chng 5: Phiu chiu Projection


91
4.1. Php chiu phi cnh mt tm chiu
Gi s khi mt phng c t ti z = 0 v tm php chiu nm trn trc z , cch trc z mt
khong zc = -1/r.
Nu i tng cng nm trn mt phng z = 0 th i tng s cho hnh nh tht.
Phng trnh bin i:
[ x y z 1 ][ Tr ] = [ x y z rz+1 ]
ma trn bin i mt im phi cnh [ Tr ] c dng:










5.15 Php chiu phi cnh mt tm chiu
4.2. Php chiu phi cnh hai tm chiu









5.16 Php chiu phi cnh hai tm chiu
y



H G

E F x

A B
z
y


D C

H G



A E F B
x

=
1 0 0 0
0 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1
r r
[ ] [ ] 1 0
1 0 0 0
0 0 0
0 0 1 0
0 0 0 1
1 + =

rz y x
r
z y x
[ ]

+ +
= 1 0
1 1
1 ' ' '
rz
y
rz
x
z y x
Y

VP y = 10


D H
C,G


VP
X=10
VP (y=10)



D, HC, G

VP( x = 10)


A, EB, F
Chng 5: Phiu chiu Projection


92

[ Tc ] = [ Tpq ][ Tz ]


Hai tm chiu: [ -1/p 0 0 1 ] v [ 0 -1/q 0 1 ]
im trit tiu (VP -Vanishing point) tng ng trn 2 trc x v y l im: [ 1/p 0 0 1 ] v
[ 0 1/q 0 1 ].
4.3. Php chiu phi cnh ba tm chiu
[ Tpqr ] = [Tp ][Tq ][Tr ]

=
1 0 0 0
0 1 0 0
0 1 0
0 0 1
] [
q
p
T
pq
[ ] [ ] ) 1 (
1 0 0 0
0 1 0 0
0 1 0
0 0 1
1 + + =

qy px z y x
q
p
z y x
[ ]

+ + + + + +
= 1
) 1 ( ) 1 ( ) 1 (
1 ' ' '
qy px
z
qy px
y
qy px
x
z y x

=
1 0 0 0
1 0 0
0 1 0
0 0 1
1 0 0 0
1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 1
r
q
p
r
q
p
[ ] [ ] ) 1 (
1 0 0 0
1 0 0
0 1 0
0 0 1
1 + + + =

rz qy px z y x
r
q
p
z y x
[ ] [ ][ ]

= =
1 0 0 0
0 0 0
0 1 0
0 0 1
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
.
1 0 0 0
1 0 0
0 1 0
0 0 1
.
r
q
p
r
q
p
T T T
z pqr c

=
1 0 0 0
0 0 0 0
0 1 0
0 0 1
1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 1 0
0 0 1
q
p
q
p
Chng 5: Phiu chiu Projection


93


Hnh 5.17 Php chiu phi cnh ba tm chiu

Ba tm chiu:trn trc x ti im [ -1/p 0 0 1 ],
y ti im [ 0 -1/q 0 1 ]
z ti im [ 0 0 -1/r 1 ]
im trit tiu -VP s tng ng vi cc gi tr:
[ 1/p 0 0 1 ], [ 0 1/q 0 1 ] [ 0 0 1/r 1 ]
Tm tt chng:
Chng ta xt hai php chiu song song v phi cnh, trong php chiu song song th phn ra
cc loi: trc giao, trc lng v php chiu xin. Php chiu trc giao ch n gin l b i mt
trong ba to ca im chiu bng cch cho cc tia chiu song song vi mt trong cc trc to
. Php chiu trc lng th quay i tng khi thy c r nht i tng ri mi cho cc tia
chiu song vi cc trc to . Php chiu xin th tia chiu khng song song vi trc to m
thay bng n lm vi cc mt phng chiu mt gc khng vung.
Php chiu phi cnh th s dng mt im c nh gi l tm chiu v hnh chiu ca cc
im c xc nh bng giao im ca tia chiu (ni im chiu v tm chiu) vi mt phng
quan st. Php chiu phi cnh hi t ti mt nn i tng cng xa trng cng nh v ngc li.
Bi tp:
1. Cho Hnh vung ABCD c cc to l: A(0,0,0), B(0,2,0), C(2,2,2) v D(2,0,2). Tnh
to mi ca hnh vung sau khi chiu n bi php chiu Isometric?
2. Cho Hnh vung ABCD c cc to l: A(0,0,0), B(0,2,0), C(2,2,2) v D(2,0,2). Tnh
to mi ca hnh vung sau khi chiu n bi php chiu Dimetric vi fz=1/2 (t l co theo trc
z)?
y'
x'
D'
H'
C'
G'
A', E' F' B'
VP ( y = 10)
VP ( x = 10 )
VP ( z = 10 )
y'
x'
z'
A'
B'
C'
D'
H'
G'
F'
E'
[ ]

+ + + + + + + + +
= 1
) 1 ( ) 1 ( ) 1 (
1 ' ' '
rz qy px
z
rz qy px
y
rz qy px
x
z y x
Chng 5: Phiu chiu Projection


94
3. Cho tam gic ABC c cc to l A(2,3,1), B(0,4,6) v C(5,2,7), Hy tnh to mi ca
hnh tam gic sau khi chiu phi cnh sau:
- Mt tm chiu ti P(0,0,10)
- Hai tm chiu ti M(5,0,0) v N(0,-8,0)
- Ba tm chiu ti M(4,0,0), N(0,-6,0) v P(0,0,12)
4. Vit chng trnh chiu hnh kim cng (ABCD) vi php chiu trc giao.
5. Vit chng trnh chiu hnh lp phng vi php chiu
Trimetric
Dimetric
Isometric
6. Vit chng trnh chiu hnh kim cng (ABCD) vi php chiu xin
Cavalier
Cabinet
7. Vit chng trnh chiu hnh lp phng vi php chiu phi cnh.
Bi tp trc nghim:
1. Php chiu l php chuyn i nhng im ca i tng trong h thng ta n chiu
thnh nhng im trong h thng ta c s chiu l ......Cc phng n sau in vo
chm chm th phng n no sai:
a. C s chiu nh hn n
b. Thng l (n-1)
c. Tng qut l s chiu nh hn n, thng (n-1)
d. C s chiu (n+1)
2. Chng trnh AutoCad s dng php chiu:
a. Trc giao
b. Trc lng
c. Xin
d. Phi cnh
3. Php chiu Dimetric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
a. fx fy fz
b. fx = fy
c.
3
2
= = = fz fy fx
d. fx = fy = fz = 1/2
4. Php chiu trimetric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
Chng 5: Phiu chiu Projection


95
a. fx fy fz
b. fx = fy
c.
3
2
= = = fz fy fx
d. fx = fy = fz = 1/2
5. Php chiu Isometric l php chiu song song c cc tia chiu vung gc vi mn chiu,
hnh chiu thu c sau khi quay i tng sao cho 3 mt ca i tng c trng thy
(thng mt phng chiu l z=0) v h s co .... Phng n no in vo chm chm l
ng?
a. fx fy fz
b. fx = fy
c.
3
2
= = = fz fy fx
d. fx = fy = fz = 1/2
6. Hnh sau l hnh chiu:






a. Othergraphic (trc giao)
b. Trimetric
c. Dimetric
d. Isometric
7. Hnh sau l hnh chiu:







a. Othergraphic (trc giao)
b. Trimetric
c. Dimetric
d. Isometric
8. Hnh sau l php chiu:
Chng 5: Phiu chiu Projection


96

a. Phi cnh mt tm chiu
b. Phi cnh hai tm chiu
c. Cabinet
d. Cavalier
9. Hnh sau l php chiu:







a. Phi cnh mt tm chiu
b. Phi cnh hai tm chiu
c. Cabinet
d. Cavalier
10. Hnh sau l php chiu:






a. Phi cnh mt tm chiu
b. Phi cnh hai tm chiu
c. Cabinet
d. Cavalier
11. Cho on thng AB c to l A(2,6,1) v B(-1,2,-3) php chiu phi cnh mt tm
chiu P(0,0,5) on thng AB ta thu c to mi ca AB l:
a. (-1.5, 5.5) v (-0.25, 2.125)
b. (2.5, 7.5) v (-0.625, 1.25)
c. (3.5, -7.5) v (-0.65, 1.5)
d. (-4.5, 1.25) v (0.25, 2.5)
12. Cho on thng AB c to l A(1,4,-2) v B(3,-1,7) php chiu phi cnh hai tm
chiu M(10,0,0) v N(0,-5,0) on thng AB ta thu c to mi ca AB l:
D
D
D/2
D
Chng 5: Phiu chiu Projection


97
a.

40
17
,
10
17
v (3,-1)
b.

15
43
,
15
12
v (-2,6)
c.

17
40
,
17
10
v (5,2)
d.

17
40
,
17
10
v (6,-2)
13. Cho on thng AB c to l A(2,-5,3) v B(-1,4,0) php chiu phi cnh ba tm chiu
M(4,0,0) , N(0,12,0) v P(0,0,-10) on thng AB ta thu c to mi ca AB l:
a.


9
80
,
9
20
9
25
,
9
10

b.


80
9
,
20
9
25
9
,
10
9

c.

9
70
,
9
22
9
24
,
9
1

d.


11
80
,
11
20
11
25
,
11
10

14. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
#define RADS 0.017453293// i ra radian
struct point{
int x,y,z;
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
.........
return p;
}
a. ox
b. oy
c. oz
d. C ba u sai
15. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
Chng 5: Phiu chiu Projection


98
#define RADS 0.017453293// i ra radian
struct point{
int x,y,z;
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
//..........
if(chieu==2)
{
p.y = y*cos(RADS*goc) - z*sin(RADS*goc);
p.z = y*sin(RADS*goc) + z * cos(RADS*goc);
p.x =x;
}
//.................
return p;
}
a. ox
b. oy
c. oz
d. C ba u sai
16. on m sau l thuc bi ...quay mt i tng quanh trc to ... php quay trong
3D. Hy cho bit trc m i tng quay quanh:
#define RADS 0.017453293// i ra radian
struct point{
int x,y,z;
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
//.................
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
a. ox
b. oy
c. oz
d. C ba u sai
Chng 6: Mu sc trong ha


99
CHNG 6: MU SC TRONG HO
1. NH SNG V MU SC (light and color)
1.1. Quan nim v nh sng
nh sng em n s sng cho con ngi
nh sng em n mu sc cho con ngi
Mu sc l cm gic m n xy ra khi c nng lng ca nh sng, xut hin trn vng mc
v nhn bit c nh no.
Hnh phc ca con ngi l cm nhn c mu sc
Nguyn tc ca nh sng da trn hai gc
o Vt l - physics
o Sinh l - physiology
1.2. Yu t vt l
nh sng ph thuc vo mc nng lng c truyn hay bc sng ca nh sng. nh
sng trng hay di sng m mt ngi c th cm nhn c, sau khi phn tch qua lng knh
thnh cc ph mu: tm, chm, lam, lc, vng, da cam, .nh sng l sng in t c bc
sng i t 400nm 700nm.










Hnh 6.1 Tn s, mu sc v bc sng ca nh sng nhn thy
Tng nng lng c trng cho tng loi bc sng c biu din bng hm phn b nng
lng ph P().
Chng 6: Mu sc trong ha


100













Hnh 6.2 th phn b ba mu

Nguyn l pha mu vi cc sc mu c bn l , lc, lam (Red, Green, Blue). Theo nguyn
l ba mu ny, mt mu bt k u c th c to ra t ba mu c bn.








Hnh 6.3 Vng nh sng thy c
Ph ca nh sng (Spectrum)
nh sng xut pht t ngun sng c xc nh bi ph I() ca n - spectrum, ph
I() ny c o bi nng lng ca nh sng vi bc sng cho trc i qua mt n
v din tch trong mt khong thi gian.
Thut ng khc ph cng sut - power spectrum, vi n v l watts/m
2
.
Ph cng sut c dng o cng pht sng ca ngun - emission intensity
Hay cn gi cng truyn dn - transmission intensity ca nh sng theo lung trong
khng gian, hay cng pht sng- illumination intensity ca nh sng p ln b mt.
Mu sc
Isaac Newton - nh sng trng i qua thu knh thu tinh s pht tn ra thnh ph cc
mu cu vng
10
2 2
10
3
10
6
10
9
10
1 2
10
1 4
10
1 5
10
1 8
Frequency (Hz)
Visible Spectrum
Radio Frequency Microwaves Infrared
Ultraviolet
X-Rays -Rays
Chng 6: Mu sc trong ha


101
Ngc li, thu knh c th kt hp cc ph nh sng to thnh nh sng trng.
Chm sng khi phn tch thnh ph mu c lin quan n ph nng lng I().
Ph in t c bc sng t 350 ti 780 nm v mu c c trng bi c()






Hnh 6.4 Ph in t ca nh sng
1.3. Cm nhn mu sc ca con ngi (Physiology - Sinh l - Human Vision)
Cu to h quan st ca con ngi gm 2 loi t bo cm th - sensors
- Rods (t bo que): cho cm nhn cng nh sng thp hay trong bng ti
- Cones - t bo hnh nn
Nhy cm vi nh sng mu sc
Chia lm 3 loi nn - cone
Ba loi s c ba gi tr gi l tristimulus values cm nhn tng ng trn 3 mu c bn
v gi n no nhng tn hiu to ra cm nhn v mu sc S-M-L.
t c mt s cm nhn v mt mu bt k ta phi xc nh gi tr ca 3 i lng
ny





Hnh 6.5 Cu to mt con ngi Hnh 6.6 Con ngi cm nhn mu sc

Ba loi t bo nn s c nhy cm vi 3 mu v cc bc sng khc nhau nh:
350 780

c( )
Chng 6: Mu sc trong ha


102
- L or R, hu nh nhy cm vi nh sng (610 nm)
- M or G, nhy cm vi nh sng lc (560 nm)
- S or B, nhy cm vi nh lam (430 nm)
- Vy ta c ngi b m mu chng qua l mt t bo nn
S:M:L t l = 1:20:40 t ta thy con ngi nhy cm vi mu hn l mu xanh
lam.





N khng ch n gin l
RGB cng vi nh sng
Kt hp t bo que v nn
mang li cm nhn c mu sc
v nh sng
T bo p ng thay i vi
cng :
- Khi nh sng yu: thch ng
vi nhn ti, t bo que tri
hn cm nhn mu sc khng
ng k
- Khi nh sng l trung bnh:
th c hai l mc trung bnh
- nh sng cao: x l mu
sc, t bo nn tri hn
Hnh 6.7 Cu to v nguyn l hot ng cc t bo mt

56




27
86





88
Hnh 6.8 Cm nhn mu sc ca con ngi
Ta thy mu ti (bo ho) khc mu ti (cha bo ho).
Chng 6: Mu sc trong ha


103
Yu t cm nhn sinh l:
- 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 ti im c cng cn bng.
- Lightness - sng: hin thn v m t cng sng t nh sng phn x nhn
c t i tng.
- Brightness - pht sng: cng nh sng t i tng pht ra ch khng phi
do phn x t cc ngun sng khc.
- H thng mu c s dng rng ri u tin do A.H.Munsell a ra vo nhng
nm 1976 khng gian ba chiu bao gm ba yu t Hue, Lightness v Saturation.
Sc mu trong hi ho: thng c xc nh mu trn gc sc thi (tints), sc
(shade), tng mu (tone) t cc mu nguyn cht hay bo ho. Sc thi l c hnh thnh t vic
thm sc t trng vo cc mu nguyn cht gim bo ho. Sc hay cn gi l gim
mu c to ra bng cch thm mu en vo cc mu nguyn cht gim i sng ca mu.
Cn tng mu l kt qu ca c hai qu trnh trn khi thm c mu trng ln mu en vo cc mu
nguyn cht.
1.4. Cc c trng c bn ca nh sng
nh sng c th c m t bng ba thut ng:
- sng (Lightness): da vo tnh cht vt l ca n, hay cn gi l tnh pht sng
(brightness). Tnh pht sng o lng nng lng ton phn trong nh sng. N t l vi din tch
gii hn bi P() v trc trong dy 400 n 700 nm. Din tch ny c tnh nh sau:

d P ) (
Tnh pht sng cng cao, th sng cng sng hn i vi ngi quan st.
- Sc (shade): phn bit nh sng trng vi nh sng vi nh sng xanh. i vi
nh sng c s phn b quang ph l tng nh hnh di, sc thch ng vi mt tnh cht vt
l khc c gi l bc sng tri ca s phn b.










Hnh 6.9 Phn b quang ph ca nh sng
P()
White
400 700
bc sng tri (Dominant warelength)
Pure color
(nm)
Chng 6: Mu sc trong ha


104
- bo ho (Saturation): m t mc chi li ca nh sng. V d hai nh sng mu
c th khc nhau tnh pht sng/ sng v chng c th khc nhau mc chi li (v d
mu ti/bo ho khc vi mu ti/ khng bo ho). Chng ta c:
mu ti
bo ho =
Mu ti + mu trng
2. NH SNG N SC
Khng cm nhn c cc sc mu khc nh vng, , tm khi quan st trn mn hnh
en trng
nh lng l thuc tnh duy nht ca cc tia sng n sc v v mt vt l n c tnh
bng nng lng ca tia sng c m t cng (intensity) hay chiu sng (luminance).
Di gc cm nhn v mt tm l th cng ca tia sng chnh l sng ca vt
(brighness)
S dng ph k - photometer o sng thp nht (min) v cao nht (max) ca mn
hnh. V l khong ng.
Khong cng nhn gi tr min l I
0
, n max l 1.0. Lm th no th hin c 256
mc xm khc nhau?
2.1. Cng sng v cch tnh
Cng ca ngun sng s thay i trong khong t 0 n 1: 0 qui c cho mu en v 1
cho mu trng.
khong tng ca cng sng s phn chia theo hm logarit
I
0
= I
0
, I
1
= r I
0
, I
2
= r I
1
= r
2
I
0
, ... , I
255
= r
255
I
0
=1
r=(1/ I
0
)
1/255
, Ij

= rj I
0
= I
0
(255-j)/255
I = k.N


Vi k v l cc hng s (c t 2.2 -> 2.6), N s lng ht ti mt thi im pht ra t
cathode trong mt chm tia in t.
I
0
=I
0

I
1
= rI
0

I
2
= rI
1
= r
2
I
0


I
255
=rI
254
=r
255
I
0
=1
2.2. Php hiu chnh gama
Ta c I = K.V

hay V = (I / K)
1/

Trong V in p t l vi N trn mi im nh.
Chng 6: Mu sc trong ha


105
Gi s chng ta c mt cng sng I th bc u tin ta phi lm l tm ra gi tr Ij gn
nht qua php lm trn. Gi tr j tm c I= r
j
I
0
vy r
j
=I/I
0
suy ra j = ROUND(log
r
( I / I
0
)).
Thay j vo cng thc ta c:
I
j
= r
j

. I
0
Bc tip theo ca tin trnh l xy dng mc in p V
j
cho im nh m cng nh
sng c gi tr tng ng l I
j
.
V
j
= ROUND( Ij / K )
1/
Ta thy cng sng l nh nhau cho cc mn hnh (hay nh l nh nhau), th ch cn
thay i gi tr gama. Gi tr gama l s m ca hm lu tha, gi tr i vi loi phim nha
35mm trong phng ti l 1.5. Nhng h s gama ca CRT l loi thit b sng ph thuc vo
ng phng tia in t. Thc t gi tr gama ca CRT dao ng t 2.3 n 2.6.
Ta c s phn hi tuyn tnh ca CRT c th c b bi phn cng v php b ny gi l
php hiu chnh gama (Gama correction). Vic s dng I
j
lm ch s trong Lookup table (LUT)
tm ra cng sng cho cc im nh trn mn hnh gi l php hiu chnh gama vi bng LUT.
Vy bao nhiu khong s l nh cho vic th hin mt im nh en trng l lin tc? Theo
tnh ton th r=1.01 l mc ngng phn bit ca mt. Nu r<1.01 th mt s khng phn bit
c s khc lnh gia hai cng ln cn nhau I
j
v I
j+1
.
r=(1/I
0
).1/n =1.01 vy n=log
1.01
(1/I
0
) vi (1/I
0
) l khong bin ng ca thit b phn cng.
2.3. Xp x bn tng - halftone
S dng en trng m t nh nhiu mu ?
Phng php trn da vo cu to mt ca ngi cng nh nguyn l thu nhn nh ca mt
khi nhn nhng vng nh khong cch xa. Lc mt khng th phn bit c cc vt mt
cch c th m ch ghi nhn cng trung bnh ca vng nh . Phng php ny c gi l
xp x bn tng.
Phng php ny cho php t c phn gii trong in nh bo vo khong t 60->80
dpi, cn trong tp ch v sch cao hn l khong t 110 -> 120 dpi.



Hnh 6.10 Dng en trng th hin nh mu
Ta c gii thut phn ngng (Thread Hold). Phn ngng l ly mt gi tr trung bnh ca
c vng nh lm ngng v so snh n vi mc sng ca tng im nh trong . Nu gi tr ca
n ln hn ngng th im c bt (on), nu ngc li th tt (off).
Chng 6: Mu sc trong ha


106
Ta thy vi phng php ny mt i nhiu thng tin ca nh gy ra mt s hiu ng ph
cho nh. gii quyt ta dng phng php sau:
Mu t: ta biu din mt im nh trn mn hnh theo cc mu t. n v nh nht ca nh
li l 2x2 ta c 5 mc th hin cng sng ca vng n v. Ma trn li kch thc
nxn chng ta c n
2
+1 phn gii khc nhau. Hnh di y l ma trn 3x3 v cc n v m l 0
n 9.










Hnh 6.11 Phn b cc im trong vng theo th t tng dn
Vic th hin cng vng nh I by gi ch cn n thun l bt tt c cc v tr < I
- Th nht:Khng dng ma trn mu c dng ng thng ngang
- Th hai: Cc mu phi c hnh thnh theo chui cc bc lin tip nhau sao cho mi
im nh c mt th hin ngng a u phi c mt th hin mi ngng b vi b
> a.
- Th ba: Cc mu phi c pht trin theo quy tc t tm i dn ra xung quanh. Nh
s gy c cho ngi s dng hiu ng tng kch thc im.
- Th t: Vi mt s cc thit b in nh my in laser hay cc thit b ghi hnh, vn v
cc im c lp tuyt i l rt kh c kh nng t c. Khi m i a phn cc im
nh c bt cho mt cng sng th chng s gy ra cc thay i cho cc im cn
li.
Xp x bn tng vi nh mu: Ta ly mi cell khng phi l mt n v na m l ba n v
nh c trng cho ba mu (Red, Green, Blue).




0

1

2

3

4





5

6

7

8

9





Chng 6: Mu sc trong ha


107














Hnh 6.12 Mu sc trong nh mu
2.4. Ma trn Dither v php ly xp x bn tng
Bayer nm 1973 a ra dng ma trn dither m nh tng c mn ca nh khi
hin th.
Ma trn 2 2 ma trn dither c k hiu D
(2):
Tnh cc ma trn D
(2n)
thng qua D
(n)
:




U
(n)
l ma trn n n vi tt c cc phn t = 1
Vi n = 4 v kt qu t D
(2)

=
1 1
1 1
1
1 3
2 0
4
1 1
1 1
3
1 3
2 0
4
1 1
1 1
2
1 3
2 0
4
1 1
1 1
0
1 3
2 0
4
) 4 (
D






xc nh im (x,y) l bt hay tt, ta cn xc nh v tr im tng ng vi v tr ma trn
Dither so snh cng sng trung bnh S vi gi tr trong ma trn. Nu S>D
ij
th bt.
( )

=
1 3
2 0
2
D
( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )

+ +
+ +
=
2 / 2
11
2 / 2 / 2
10
2 /
2 / 2
01
2 / 2 / 2
00
2 /
4 4
4 4
n n n n
n n n n
n
U D D U D D
U D D U D D
D
( )

=
5 13 7 15
9 1 11 3
6 14 4 12
10 2 8 0
4
D
Chng 6: Mu sc trong ha


108
3. CC H MU TRONG MN HNH HA
M hnh mu - color model: l h thng c quy tc cho vic to khong mu t tp cc mu
c bn.
C 2 loi m hnh mu l:
- Mu thm (additive): m hnh mu thm s dng nh sng - light hin th mu.
Mu sc ca m hnh ny l kt qu ca nh sng truyn dn - transmitted
- Mu b (subtractive): m hnh mu b s dng mc in - printing inks. Mu sc cm
nhn c l t nh sng phn x - reflected light (ly mu tri).
Khong mu m chng ta to ra vi tp cc mu c bn gi l gam mu h thng (systems
color gamut)
Mi m hnh mu c khong mu hay gam mu ring gamut (range) ca nhng mu m n
c th hin th hay in.
Mi m hnh mu c gii hn khong ca ph mu nhn c. Gam mu hay khong cn
c gi l khng gian mu "color space". nh hay ho vector c th ni: s dng khng gian
mu RGB hay CMY hay bt c khng gian mu no khc.
Mt s ng dng ho cho php ngi dng s dng nhiu m hnh mu ng thi
son tho hay th hin i tng hnh hc. im quan trng l hiu v cho ng m hnh cn
thit cho cng vic.
C ba h mu nh hng phn cng:
- RGB (Red, Green, Blue) dng vi CRT
- YIQ trong h thng tivi mu bng tn rng
- CMY (Cyan, Mangenta, Yellow) s dng mt s thit b in mu
Khng c mt m hnh mu no trong cc m hnh thc t trn c tnh d s dng, v chng
khng c mi lin h trc tip vi nim mu trc gic ca con ngi. Mu m con ngi cm
nhn:Hue (sc mu), Saturation ( bo ho), Lightness ( sng).
Cc m hnh mu khc nhau c pht trin nhm s dng cho mt tiu ch nht nh.
3.1. M hnh mu RGB (Red, Green, Blue - , lc, lam)
Gam mu th hin trong mn hnh CRT xc nh bng nhng c tnh ca hin tng pht
quang cc cht pht pho trong mn hnh CRT. M hnh khng gian mu RGB c sp xp theo
khi lp phng n v. ng cho chnh ca khi lp phng vi s cn bng v s lng tng
mu gc tng ng vi cc mc xm vi en l (0,0,0) v trng (1,1,1).
Chng 6: Mu sc trong ha


109

Hnh 6.13 M hnh khng gian mu RGB
C = rR + gG + bB
Trong C = mu hoc nh sng kt qu. (r,g,b) = to mu trong min [0 1], (R,G,B) =
cc mu c bn , lc v lam.

B
G
R
Z Z Z
Y Y Y
X X X
Z
Y
X
b g r
b g r
b g r


Nu hai mu to ra cng mt gi tr kch thch th chng ta khng th phn bit c hai
mu. Khng gian mu RGB da theo chun ITU-R BT.709, vi gama = 2.2 v im trng ca m
hnh l 6500 degrees K.
3.2. M hnh mu CMY (Cyan, Magenta, Yellow - xanh tm, ti, vng)
y l m hnh mu b (Subtractive color models) hin th nh sng v mu sc phn x t
mc in. B xung thm mc ng ngha vi nh sng phn x cng t.
Khi b mt khng ph mc th nh sng phn x l nh sng trng - white.
Khi 3 mu c cng gi tr cho ra mu xm. Khi cc gi tr t max cho mu en.
Color = cC + mM + yY
Ta c Red +Cyan = Black ; Green +Magenta = Black ; Blue + Yellow = Black

=
1
1
1
Black

B
G
R
Y
M
C
1
1
1

Chng 6: Mu sc trong ha


110

Hnh 6.14 M hnh khng gian mu CMY
M hnh mu CMY- K
M hnh m rng ca CMY ng dng trong my in mu. Gi tr en b xung vo thay th
cho hm lng mu bng nhau ca 3 mu c bn.
Cng thc chuyn i:
K = min(C, M, Y) ;
C = C - K ;
M = M - K;
Y = Y - K ;
C-Cyan, M-Magenta, Y-Yellow; K-blacK
3.3. M hnh mu YIQ
M hnh mu YIQ l m hnh mu c ng dng trong truyn hnh mu bng tn rng ti
M, v do n c mi quan h cht ch vi mn hnh ho mu raster. YIQ l s thay i ca
RGB cho kh nng truyn pht v tnh tng thch vi ti vi en trng th h trc. Tn hiu truyn
s dng trong h thng NTSC (National Television System Committee).
S bin i RGB thnh YIQ c xc nh theo cng thc sau:




Y chi, I & Q i lng v mu sc
Ch : Y ging nh Y trong m hnh CIEs
N hon ton tng thch vi en/trng (B/W) ca TV
Nhng i lng trong ma trn bin i c tm bng cch s dng cc phosphor NTSC RGB
chun c cc to sc ph l R(0.67 0.33), G (0.21 0.71) v B(0.14 0.08). Ngi ta cng gi
nh rng im trng nm x
w
=0.31 , y
w
= 0.316 v Y
w
=1.0.
3.4. M hnh mu HSV (Hue, Saturation,Value) - M thut
Yu t cm nhn mu sc:
- Hue - sc mu: dng phn bit s khc nhau gia cc mu nh xanh, , vng...

B
G
R
Q
I
Y
0.311 0.523 0.212
0.321 0.275 0.596
0.114 0.587 0.299
Chng 6: Mu sc trong ha


111
- Saturation - bo ho: ch ra mc thun ca mt mu hay khong cch ca mu
ti im c cng cn bng(mu xm)
- Lightness - sng: hin thn v m t cng sng t nh sng phn x nhn c
t i tng.
- Brightness - pht sng: cng nh sng m t i tng pht ra ch khng phi
do phn x t cc ngun sng khc.
M hnh mu RGB, CMY, YIQ c nh hng cho phn cng
HSV (Hue, Saturation, Value)=HSB(Hue, Saturation, Brightness) nh hng ngi s
dng da trn c s v trc gic v tng mu, sc v sc thi m thut
M hnh mu HSV c Alvey Ray Smith a ra 1978. Hue: mu sc 0
0
-360
0
o bi gc
quay xung quanh trc ng vi mu l 0
0
, mu lc l 120
0
, mu lam l 240
0
. Cc mu b sung
cho hnh chp 180
0
i din vi mu khc.
Value-Brightness:( sng) 0-1 ng cao V vi nh l cc im gc to (0,0). im
nh l mu en v gi tr V=0, ti cc im ny gi tr ca H v S khng lin quan n nhau. Khi
im c S=0 v V=1 l im mu trng, nhng gi tr trung gian ca V i vi S=0 (trn ng
thng qua tm) l cc mu xm. Khi S=0 gi tr ca H ph thuc c gi bi cc qui c khng
xc nh. Ngc li khi S khc 0 gi tr H s l ph thuc.
Saturation: bo ho 0-1, gi tr ca S l tp cc gi tr t 0 trn ng trc tm (trc V)
n 1 trn cc mt bn ti nh ca chp 6 cnh.


Hnh 6.15 M hnh mu HSV

M hnh mu HLS (Hue, Lightness, Saturation Model) khng gian mu trc quan
M hnh thng c s dng trong k thut ho. u im l rt trc gic v d ta c
th chn mu, thay i sng v thay i bo ho. Nhc im l khi chuyn i vi khng
gian mu RGB s c sai s (cube stood on end) thay i trn cc loi mn hnh khc nhau, r rng
khng cm nhn u cc mu.

Saturat
H
Chng 6: Mu sc trong ha


112


Hnh 6.16 M hnh mu hnh chp su cnh i HLS
Chng ta c th coi m hnh HLS nh mt s bin dng ca m hnh HLS m trong m
hnh ny mu trng c ko hng ln hnh chp su cnh pha trn t mt V=1. Nh vi m
hnh chp su cnh n, phn b sung ca mu sc c t v tr 180
0
hn l xung quanh hnh
chp su cnh i, s bo ho c o xung quanh trc ng, t khng trn trc ti 1 trn b mt.
sng (Lightness)=0 cho mu en (ti im mt thp nht ca hnh chp su cnh i) v bng
1 cho mu trng (ti u mt cao nht).
3.5. Biu mu CIE (1931 Commission Internationale de lEclairage)
Nhc im ca RGB:
- Kt qu thc nghim cho thy rt nhiu nhng nh sng mu khng th to thnh t 3
thnh phn mu c s vi nguyn nhn do v ca vng mc - retinal cortex.
- Vi mu Cyan: cng ca nh sng 2 mu green v blue kch thch cm nhn mu
trong mt ngn khng cho thu c mu chnh xc
- Cch duy nht thu c mu ny l loi bt phn mu bng cch thm nh sng
vo mu ban u.
- Bng cch thm t t nh sng vo thu c (test + red) s cho ra mu ng bng
(blue + green)
- C + rR = gG + bB <=> C = gG + bB - rR
- Vn t ra l vic phc tp trong phn tch mu v chuyn i mu vi i lng
m ca nh sng c lp thit b.
Chng 6: Mu sc trong ha


113

Hnh 6.17 Hm phn b ba mu c s (qua thc nghim - ph thuc vo mt ngi)
CIE stands for Comission Internationale de l'Eclairage (International Commission on
Illumination)
Commission thnh lp 1913 to mt din n quc t v trao i tng v thng tin cng
nh tp chun - set standards cho nhng vn lin quan n nh sng.
M hnh mu CIE color pht trin trn c s hon ton c lp thit b
Da trn s cm nhn ca ca mt ngi v mu sc.
Yu t c bn ca m hnh CIE nh ngha trn chun v ngun sng v chun v ngi
quan st.
CIE XYZ - Color Space
- CIE - Cambridge, England, 1931. Vi tng 3 i lng nh sng - lights mu X, Y,
Z cng ph tng ng.
- Mi sng nh sng c th cm nhn c bi s kt hp ca 3 i lng X,Y,Z
- M hnh - l khi hnh khng gian 3D X,Y,Z gm gam mu (gamut) ca tt c cc
mu c th cm nhn c.
- Color = XX + YY + ZZ
- Cc gi tr XYZ thay th cho 3 i lng truyn thng RGB
- Mu c hiu trn 2 thut ng (Munsell's terms): mu sc v sc
- u im ca 3 loi mu nguyn l c bn l c th sinh ra cc mu trn c s tng cc
i lng dng ca mu mi thnh phn.
- Vic chuyn i t khng gian mu 3D ta (X,Y,Z) vo khng gian 2D xc nh
bi ta (x,y),theo cng thc di phn s ca ca tng 3 thnh phn c bn.
- x = X/(X+Y+Z) , y = Y/(X+Y+Z) , z = Z/(X+Y+Z)
C: x + y + z = 1, y to z khng c s dng
Chng 6: Mu sc trong ha


114


Hnh 6.18 Hm phn b ca cc i lng CIE c s
- Chun CIE xc nh 3 mu gi thuyt hypothetical colors, X, Y, and Z lm c s cho
php trn mu theo m hnh 3 thnh phn kch thch.
- Khng gian mu hnh mng nga - horseshoe-shaped l kt hp ca khng gian ta
2D mu x, y v sng.
- x = 700 nm; y = 543.1 nm; z = 435.8 nm
- Thnh phn sng hay chi c ch nh chnh bng gi tr i lng Y trong
tam kch t ca mu sc

Hnh 6.19 Khng gian mu hnh mng nga
M hnh CIE xyY

Hnh 6.20 M hnh mu CIE xyY
Chng 6: Mu sc trong ha


115
- Thang o ca Y xut pht t im trng trn ng thng vung gc vi mt phng
x,y vi gi tr t 0 ti 100.
- Khong mu ln nht khi Y=0 ti im trng v bng CIE Illuminant C. y l y
ca hnh.
- Khi Y tng mu tr nn sng hn v khong mu hay gam mu gim din tch trn ta
x,y cng gim theo.
- Ti im trn khng gian vi Y= 100 mu c sc xm bc v khong mu y l b
nht.

Hnh 6.21 Khng gian mu hnh mng nga
4. CHUYN I GIA CC H MU
Vic xy dng v th hin mu sc ca cc i tng trn mn hnh ho ch thc hin
qua m hnh ba mu m phn cng h tr RGB. Vy khi phn mm ng dng c s dng n cc
m hnh mu khc, ta phi chuyn i gia chng.
4.1. Chuyn i HSV - RGB
H HSV c H (sc mu) chy t 0
0
n 360
0
vi mu ti 0
0
.
S ( bo ho) v V (gi t cng nh sng) thuc khong [0 1]
If (S==0)//H khong tham gia - en trng
R = V;
G = V;
B = V;
Else // Khi S<>0 trng hp mu
// Mu ca im nh c xc nh thng qua 3 bin ph M,N v K
if (H==360)
H=0;
Else
H = H/60;
I = (int)H; // ly gi tr nguyn
F = H - I;
Chng 6: Mu sc trong ha


116
M = V*(1 - S);
N = V*(l - S*F);
K = V*(1- S*(1- F));
if I == 0 then (R,G,B) = (V,K,M);
if I == 1 then (R, G, B) = (N, V, M);
if I == 2 then (R, G, B) = (M, V, K);
if I == 3 then (R, G, B) = (M, N, V);
if I == 4 then (R, G, B) = (K, M, V);
if I == 5 then (R, G, B) = (V, M, N);
4.2. Chuyn i RGB sang XYZ

B
G
R
a a a
a a a
a a a
Z
Y
X
33 32 31
23 22 21
13 12 11

Cc nh sn xut cung cp cc to XYZ cho pht pho tng ng vi mu RGB m mn
hnh hin th: (X
r
, Y
r
, Z
r
), (X
g
, Y
g
, Z
g
) v (X
b
, Y
b
, Z
b
)
Hay vit li:

B
G
R
Z Z Z
Y Y Y
X X X
Z
Y
X
b g r
b g r
b g r

C R=1

0
0
1
B
G
R
suy ra

r
r
r
Z
Y
X
Z
Y
X


Tng t G=1

0
1
0
B
G
R
suy ra

g
g
g
Z
Y
X
Z
Y
X

Tng t B=1

1
0
0
B
G
R
suy ra

b
b
b
Z
Y
X
Z
Y
X


Thng [X Y Z] cho mi pht pho (phosphor) th khng c cung cp, nn chng ta tnh
vi trng hp im trng (whitepoint) khi R=G=B=1.
By gi chng ta cn bit chi ca im trng c gi bi Y
w
. Ta t:
E
r
= X
r
+ Y
r
+ Z
r
suy ra x
r
= X
r
/ E
r
vy X
r
= x
r
.E
r
; Y
r
= y
r
.E
r
; Z
r
= (1- x
r
y
r
).E
r

Tng t:
Chng 6: Mu sc trong ha


117

B
G
R
E y x E y x E y x
E y E y E y
E x E x E x
Z
Y
X
b b b g g g r r r
b b g g r r
b b g g r r
) 1 ( ) 1 ( ) 1 (

Ta c im trng:
[ ]

1
1
1
M
Z
Y
X
w
w
w

M ta c theo NTSC: RGB chun (x
w
, y
w
, Y
w
) nh sau: x
w
= 0.31, y
w
= 0.316 v Y
w
=1.0
C:
w w w
w
w
Z Y X
Y
y
+ +
=

w
w
w w w
y
Y
Z Y X = + + ) (


w w w
w
w
Z Y X
X
x
+ +
=
X
w
= x
w
(X
w
+ Y
w
+ Z
w
)
w
w
w w
y
Y
x X =

V:
w
w
w w w
y
Y
y x Z ) 1 ( =

Ta c R + G + B = W nn:

w
w
w
b
b
b
g
g
g
r
r
r
Z
Y
X
Z
Y
X
Z
Y
X
Z
Y
X
suy ra X
w
=X
r
+ X
g
+ X
b
= x
r
E
r
+ x
r
E
g
+ x
b
E
b

T :

b
g
r
b b g g r r
b g r
b g r
w
w
w
E
E
E
y x y x y x
y y y
x x x
Z
Y
X
) 1 ( ) 1 ( ) 1 (

Ta hon ton tnh c: E
r
, E
g
v E
b

Tm tt:
Chng ny chng ta nghin cu cu to ca nh sng (v mt vt l), ri xt b phn cm
nhn nh sng ca con ngi l mt. a ra cc h mu nh hng cho phn cng nh: RGB
dng cho my tnh, CMYK dng cho my in v YIQ dng cho truyn hnh. Tt c cc h mu ny
con ngi u khng cm nhn c, con ngi ch cm nhn c h mu HSV hay HLS. T tt
c cc u nhc im ca cc h mu trn, t s cm nhn mu sc ca con ngi ph thuc vo
cu to ca cc t bo mt nn nm 1913 t chc quc t v nh sng a ra h mu chun
thun nht CIE. H mu ny c th bao hm tt c cc h mu trn, n gii quyt c cc nhc
im ca h mu RGB. Cui cng chng ta a ra cc cng thc chuyn i gia cc h mu
vi nhau.
Chng 6: Mu sc trong ha


118
Bi tp:
1. Gi s rng mi trng trng tm l khng kh (hoc chn khng) hy m t di quang
ph hin th bng mt di tn s.
2. Ti sao mi th trng c v mu xm hoc en trong mt phng ti ni chng ta hu nh
khng th nhn thy c?
3. Hy thit lp mt cng thc n gin tnh din tch b gii hn bi hm phn b P().
(Xem hnh 6.9 sch K thut ho)
4. T hm phn b P() hy lp cng thc tnh bo ho t hnh 6.9 - sch k thut ho.
5. S khc nhau gia Y trong CMY v Y trong YIQ l g?
6. Gi s rng mt mn hnh hin th to nn nhng g c gi l mu trng chun vi x
w
=
0.313 y
w
=0.329 v Y
w
= 1.0 (R=G=B=1). V cc to sc ph ca pht pho ging nh
to c tm thy m hnh mu.
R(0.62 0.34)G(0.290.59)B(0.150.06)
Hy tm ma trn bin i mu M cho mn hnh hin th.
7. Hy kim nghim rng Y trong m hnh CIE XYZ tng t Y trong m hnh mu NTSC
YIQ. Ta c NTSC chun th: x
w
=0.31 , y
w
= 0.316 v Y
w
=1.0 v s dng cc to sc
ph ca cc pht pho NTSC chun: R(0.67 0.33), G (0.21 0.71) v B(0.14 0.08).
Bi tp trc nghim:
1. Mn hnh CRT th gi tr gama l:
a. 1.5
b. T 2.3 n 2.6
c. 3.3 n 4
d. 1.01
2. Ngi b m mu (ch thy sng v ti) l ngi:
a. Mt b mt t bo que
b. Mt b mt t bo nn
c. Mt b mt c t bo nn v que
d. Mt c t l ba t bo nn khng bnh thng
3. Con ngi nhy cm vi mu:
a. Lc
b. Lam
c. Vng
d.
4. Trong nh en trng, ta biu din mt im nh trn mn hnh theo cc mu t. Nu ma
trn li ca mu t kch thc 4x4, th chng ta c c thy s mu t l:
a. 15
b. 16
c. 17
Chng 6: Mu sc trong ha


119
d. 18
5. H mu m con ngi cm nhn l:
a. Hue (sc mu), Saturation ( bo ho) v Lightness ( sng)
b. RGB (Red - , Green - lc, Blue - lam)
c. CMY (Cyan - xanh tm, Mangenta - ti v Yellow - vng)
d. CIE
6. Ta c ba mu nc (Red), lc (Green) v lam (Blue) em trn cc mu bo ho v cn
bng th thu c mu:
a. Trng
b. en
c.
d. C ba u sai
7. My in mu thng gm s hp mc mu:
a. 2 hp
b. 3 hp
c. 4 hp
d. Cng nhiu hp th in cng c nhiu mu



Chng 7: ng cong v mt cong trong 3D


120
CHNG 7: NG CONG V MT CONG TRONG 3D
1. NG CONG - CURVE
Trong cc ng dng ca ho my tnh, hu nh cc thc th l ng cong mm v mt
cong, chng dng m t th gii thc: nh ca, xe c, ni non.hay xy dng nn cc thc th
ang c thit k. Nhng ta thy s dng cc phng trnh ng cong khng th hin c
hnh nh thc hay tng ca ngi thit k, cn nu ta dng tp hp cc im th thng cn
nhiu dung lng nh lu tr cng nh tc tnh ton.
Ta c qu o chuyn ng ca mt im trong khng gian th to thnh ng cong.
Trong chng ny s a ra phng php tng th v nhng m hnh ton hc biu din v
xy dng cc loi ng v mt cong trong khng gian 3D trn my tnh.
1.1. im biu din ng cong (curve represents points )
Ta thy qua hai im v c mt ng thng. Qua ba im v c mt ng cong
trong mt phng. Qua bn im v c mt ng cong trong khng gian. Dng cc phng
trnh ng cong nh Hypebol, parabol... th tnh ton phc tp v khng th hin c hnh nh
thc hay tng ca ngi thit k.
Chn ng cong nh th no ph hp vi my tnh? Biu din im v kim sot
ng cong -Points represent-and control-the curve. ng cong l cc i tng c bn thng
l kt qu ca tin trnh thit k v cc im ng vai tr l cng c kim sot v m hnh ho
ng cong. Cch tip cn ny l c s ca lnh vc thit k m hnh hnh hc nh my tnh
(Computer Aided Geometric Design - CAGD).
Cc cch biu din ng cong:
Tng minh (Explicit functions):
y = f(x), z = g(x)
Khng tng minh (Implicit equations):
f(x,y,z) = 0
Biu din cc ng cong tham bin (Parametric representation)
x = x(t), y = y(t), z = z(t) trong t [0 1]
Hn ch:
H ho ng dng ch m t b hp trong on no y
ng cong bc cao vi mi gi tr ca x ta lun c 2 tp gi tr ca y (thc t ch cn
1)
Chng ta cn biu din ng cong mm (ch biu din ng cong gy)
1.2. ng cong a thc bc ba tham bin
Phi m bo l ng cong khng gian vi 3 trc to x, y, z. Trnh c nhng tnh
ton phc tp v nhng phn nhp nh ngoi mun xut hin nhng ng a thc bc cao.
Cng thc m t:
Chng 7: ng cong v mt cong trong 3D


121
Tng minh : y = f
3
(x),z = g
3
(x)
Khng tng minh: f
3
(x,y,z) = 0



Hnh 7.1 ng cong a thc bc ba
Biu din cc ng cong tham bin (Parametric representation):
x = f
3
(u), y = f
3
(u), z = f
3
(u) trong u [0 1]
Theo Lagrange:
x = a
1
+ b
1
u + c
1
u
2
+ d
1
u
3

y = a
2
+ b
2
u + c
2
u
2
+ d
2
u
3

z = a
3
+ b
3
u + c
3
u
2
+ d
3
u
3

y ba phng trnh vi 12 n s
Vi 4 im p
0
, p
1
, p
2
, p
3
phng trnh xc nh (v 4 im th xc nh 1 ng cong trong
khng gian).

Mi 1 im cho ta cp 3 gi tr:

=
0
0
0
0
z
y
x
P

=
1
1
1
1
z
y
x
P

=
2
2
2
2
z
y
x
P

=
3
3
3
3
z
y
x
P
C thy c 12 phng trnh, thay vo 3 phng trnh trn ta tnh c 12 n a
1
.....d
3
Ghi ch: r rng c s thay i mt cht v ng cong th ta li phi gii li h phng
trnh tnh cc tham s cho ng cong, dn n tnh ton chm.
1.3. ng cong Hermite
Phng php Hermite da trn c s ca cch biu din Ferguson hay Coons nm 60. Vi
phng php ca Hermite ng bc ba s xc nh bi hai im u v cui cng vi hai gc
nghing ti hai im .







Hnh 7.2 ng cong Hermite
Theo cng thc ton hc hm bc ba c biu din di dng:
p = p(u) = k
0
+ k
1
u + k
2
u
2
+ k
3
u
3

p(u) = k
i
u
i
in (vi k
i
l cc tham s cha bit)
dc ca ng cong c o bng p(u)
Chng 7: ng cong v mt cong trong 3D


122
p = p(u) = k
1
+ 2k
2
u + 3k
3
u
2

p
0
v p
1
ta c hai dc p
0
v p
1
vi u = 0 v u = 1 ti hai im u cui ca on [0,1].
p
0
(u=0)=k
0

p
0
(u=0)=k
1

p
1
(u=1)=k
0
+k
1
+k
2
+k
3

p
1
(u=1)= k
1
+2k
2
+3k
3

hay
k
0
=p
0
v
k
1
=p
0

k2=
3(p
1
p
0
) - 2p
0
p
1
v k
3
= 2(p
0
-p
1
) + p
0
+ p
1

Khi c ko, k
1
, k
2
, k
3
thay vo:
p = p(u) = k
0
+ k
1
u + k
2
u
2
+ k
3
u
3

p
0
(1-3u
2
+2u
3
) + p
1
(3u
2
-2u
3
) + p
0
(u-2u
2
+u
3
) + p
1
(-u
2
+u
3
)




Thay i ca cc im hay cc gc nghing (thay i 2 vector) dn n s thay i hnh
dng ca ng.
1.4. ng cong Bezier
Vic s dng im vi cc vector kim sot c dc ca ng cong ti nhng im
m n i qua. Tuy nhin khng c thun li cho vic thit k tng tc, khng tip cn vi cc
dc ca ng cong bng cc gi tr s (Hermite).
Paul Bezier, nhn vin hng RENAULT vo nm 1970 i u trong vic ng dng my tnh
cho vic xy dng cc b mt. H thng UNISURF ca ng c p dng trong thc t vo nm
1972 c thit k v kim xe Mezesez hay Renaut.
Bezier s dng a gic kim sot cho ng cong ti nhng nh ca a gic v tip
tuyn ti (p0,p1,p2,p3).
Ta c p
0
, p
3
tng ng vi p
0
, p
1
trn ng Hermite, im trung gian p
1
, p
2
c xc
nh bng 1/3 theo di ca vector tip tuyn ti im po v p
3







Hnh 7.3 a gic kim sot Bezier
p
0
= 3(p
1
p
0
)


1
0
1
0
'
'
.
1 1 2 2
1 2 3 3
0 1 0 0
0 0 0 1
p
p
p
p
p = p(u) = [ 1 u u
2
Chng 7: ng cong v mt cong trong 3D


123
p
1
= 3(p
3
p
2
)
p = p(u) = p
0
(1-3u2+2u3) + p
1
(3u2-2u3) + p
0
(u-2u
2
+u
3
) + p
1
(-u
2
+ u
3
)
p = p(u) = p
0
(1 - 3u + 3u
2
- u
3
) + p
1
(3u-6u
2
-3u
3
) + p
2
(3u
2
- 3u
3
) + p
3
u
3

Hnh 7.4 Hm hp ca ng cong Bezier
u im:
D dng kim sot hnh dng ca ng cong hn vector tip tuyn ti p
0
v p
1
ca
Hermite.
Nm trong a gic kim sot vi s im trung gian tu (s bc tu ), c s bc =s im
kim sot -1.
i qua im u v im cui ca a gic kim sot, tip xc vi cp hai vector ca u
cui .
Biu thc Bezier-Bernstain
ng Bezier cng c th c bit n nh biu thc Bezier Bernstain bi k thut m
Bezier s dng l p dng cng thc ho cc vector trong php tnh a gic xp x c Bernstain
pht trin gn y. Php ton i s c xc nh nh sau:
0u1
0!=1, u
i
=1 khi i = 0

=
=
n
i
i n i
P u B u P
0
,
) ( ) (

i n i
n i
u u i n C u B

= ) 1 ( ) , ( ) (
,


)! ( !
!
) , (
i n i
n
i n C

=
Trong P
0
.....P
n
: vector v tr ca a gic (n+1) nh.

3
2
1
0
1 3 3 1
0 3 6 3
0 0 3 3
0 0 0 1
p
p
p
p
p = p(u) = [ 1 u u
2
u
3
]
Chng 7: ng cong v mt cong trong 3D


124
1.5. ng cong B-spline
1.5.1. ng cong bc ba Spline
Trong cng thc ca Bezier, chng ta s dng hm hp lin tc xc nh im kim sot
tng i. Vi cc im ni suy th mc tng i s khc nhau m trong mt chui cc
phn t nh s kt hp vi nhau to ra ng cong a hp. Theo tnh ton th ng bc ba s a
thc bc thp nht c th biu din mt ng cong trong khng gian v chui im Hermite
s ph hp nht i vi vic xy dng nn ng cong a hp ny.
Vic yu cu ngi s dng a vo cc vector tip tuyn ti mi im trong tp hp cc
im l cc k bt tin cho nn thng trong cc ng bc ba a hp ta s dng cc iu kin
bin lin tc trong php o hm bc mt v hai ti im ni gia. v ng cong c xc nh
nh trn gi l ng spline bc ba vi php o hm lin tc bc hai. Gi tr o hm ca ng
cong s xc nh cong ti mi im nt v n cng a ra iu kin bin cho mi on trn
ng cong.
Vy ng bc ba spline c u im l khng phi xc nh dc ca ng ti cc nt
nhng nhc im ca n l ch to ra s thay i ton cc khi ta thay i v tr ca im.
ng cong Spline i qua n im cho trc m mi on l cc ng cong bc ba c
lp c dc v cong lin tc ti mi im kim sot hay im nt. Vi n im ta c (n-1)
on vi mi on gm bn vector h s hay 4(n-1) cho n-1 on, v 2(n-1) iu kin bin v (n-
2) iu kin v dc cng (n-2) v cong.
xy dng nn ng spline c tham s vi n im nt ta c mt dy cc gi tr tham s
m ta gi l vector nt.
u
0
......u
n-1
trong u
i+1
>u
i

Cn la chn ti mi nt, cch la chn n gin nht l theo cch n iu c ngha l vi
gi tr 0 ti im u v tng ln 1 ti nhng im k tip. tuy vy phng php ny dn n
cong khng mong mun ti cc im v vy vic tham s ho s a vo chiu di, nhng phng
php ny cng khng c chnh xc khi m ng cong cha xc nh chiu di. Tuy nhin
thng thng ngi ta s dng vic tch lu ca cc dy cung vi:
u
0
=0v u
i+1
= u
i
+ d
i+1
trong d
i
: l khong cch gia 2 im p
i-1
v p
i

Trong cc trng hp ng cong c bc ln hn ba c th dng cho ng spline. Thng
thng ng spline bc n s c xy dng trn cc phn nh lin tc ca cc bin c lp.







Hnh 7.5 Kt ni hai ng cong
Hnh trn cho thy hai on cong c chung im ni m ng cong lin tc ti im ,
vic biu din tnh lin tc ca ng cong thng qua ch ci C-Cuntinue. C
0
m bo khng
Chng 7: ng cong v mt cong trong 3D


125
c s gin on gia hai on cong. C
1
tnh lin tc bc nht hay o hm bc nht ti im ni.
C
2
o hm bc hai lin tc ca ng cong ti im ni.
Gi s khi biu din ng cong mm thng qua cc on cong q1, q2, q3 (mi on c 4
vector h s) cn tho mn:
Lin tc ti im ni hay C
1
0
= C
2
0

dc (hay vector tip tuyn) ti im ni (im cui ca q1 v u q2) l nh nhau: C
1
1
=
C
2
1
(o hm bc nht)
Tho mn lin tc trn ti im ni (o hm bc 2 lin tc ti im ni)C
1
2
= C
2
2
Vic kt hp cc on cong Hermite bc ba m t mt ng cong mm theo kiu phn
on spline l phng php n gin nht hay cn gi l phng php Hermite ni suy. Vi
phng php ny th tham bin u
i
cho mi on cong i ca tp cc on cong Hermite s bin i
trong khong t 0 n 1 v lun tn ti o hm bc nht ca cc on cong ti cc im ni.
Phng trnh cho mi on cong c s dng lc ny l phng trnh ng cong bc ba
Hermite:











Hnh 7.6 Phn on ca ng cong Spline - Hermite
Theo Hermite cc on l cc ng cong, tnh lin tc ca o hm bc hai ti cc im
ni c th d dng t c bng cch t P
i-1
(u
i-1
=1) l o hm bc hai ti im cui ca on
(i-1) bng vi P
i
(u
i
=0) o hm bc hai ti im u ca on th i.
P
i-1
(1)= P
i
(0)
C phng trnh:
P
i
(u) = k
0i
+ k
1i
u + k
2i
u
2
+ k
3i
u
3

o hm bc hai s l:
P
i
(u) = 2k
2i
+ 6k
3i
u


P
i-1
(1)= P
i
(0) nn 2k
2(i-1)
+ 6k
3(i-1)
u= 2k
2i

V im cui ca on i-1 trng vi im u ca on th i(P
i
(0)=P
i-1
(1))
Theo Hermite: k
2
= 3(p
1
p
0
) - 2p
0
p
1
v
k
3
= 2(p
0
-p
1
) + p
0
+ p
1


1
0
1
0
'
'
.
1 1 2 2
1 2 3 3
0 1 0 0
0 0 0 1
p
p
p
p
p = p(u) = [ 1 u u
2
y
P
n-1



P
n-1


P
o

P
1
z x
Chng 7: ng cong v mt cong trong 3D


126
2(3(P
i
P
i-1
) - 2P
i-1
P
i
)+6(2(P
i-1
-P
i
) + P
i-1
+ P
i
)=2(2(P
i-1
- P
i
) + P
i-1
+ P
i
)
Hay: P
i-1
+ 4P
i
+ P
i+1
= 3(P
i+1
P
i
) (*)
Vi phng trnh (*) ny th phng trnh dng tng qut ca ng cong Spline l tp ca
cc on cong Hermite s xc nh vi iu kin ban u cho l tp cc im kim sot ca ng
cong v hai vector tip tuyn ti hai im u cui ca ng cong . S dng (*) ta c th tnh
c cc gi tr ca cc vector tip tuyn ti tng im kim sot ca ng cong.

'
1
3 1
0 2
'
0
'
1
'
2
'
1
'
0
) ( 3
.
.
) ( 3
.
.
.
1 0 . . . .
1 4 1 0 . .
. . . . . .
. 0 1 4 1 0
. . 0 1 4 1
. . . . 0 1
n
n n
n
n
P
P P
P P
P
P
P
P
P

Tng ng vi:

'
1
3 1
0 2
'
0
1
'
1
'
2
'
1
'
0
) ( 3
.
.
) ( 3
.
1 0 . . . .
1 4 1 0 . .
. . . . . .
. 0 1 4 1 0
. . 0 1 4 1
. . . . 0 1
.
.
n
n n
n
n
P
P P
P P
P
P
P
P
P

1.5.2. ng B-spline
Vi Bezier hay spline u khng cho ta thay i ng cong mt cch cc b, vic thay i
v tr cc im kim sot hay cc vector tip tuyn khng ch nh hng trc tip n dc ca
ng cong ln cn quanh im kim sot m cn ko theo nh hng n cc phn cn li ca
ng cong. ng Bezier thm vo l khi tnh xp x bc cao s rt phc tp cn khi lin
kt nhiu on Bazier hay Hermite bc thp (bc ba) c th em li ch li khi tnh ton nhng
yu t rng buc v tnh lin tc ca o hm bc cao ti cc im ni khng cho iu khin cc
b nh mong mun.
Vic kt hp lun phin cc on cong tng hp, thng qua cc a thc tham s xc nh
ring r trn mt s im kim sot ln cn vi s bc tu khng ph thuc vo s lng cc
im kim sot, cho php to nn ng cong trn mm B-spline. ng cong ny khc phc
c cc nhc im m cc dng ng cong trc cha t c. C ngha l khi dch chuyn
im kim sot ca ng cong th ch mt vi phn on ln cn ca im kim sot b nh
hng ch khng phi ton b ng cong.
Vi n+ 1 s im kim sot P
i
ta c:

=
=
n
i
i k i
P u N u P
0
,
). ( ) (
Trong N
i,k
(u) l hm hp B-Spline bc k-1 v s khc bit gia B-spline v Bezier s
c th hin trn . Trong ng Bezier bc ca a thc c xc nh bi s on cong trn
ng cong , cn vi B-spline bc c tho mn c lp vi s im kim sot ca ng.
Chng 7: ng cong v mt cong trong 3D


127
Hn na hm hp ca Bezier khc 0 trn ton b khong ca tham s u cn B-spline ch
khc 0 trn on ngn ca cc tham s. Mi on trn hm hp ch tng ng vi mt im th
ch dn ti s thay i cc b trong khong m trn tham s ca hm hp khc 0.
Biu din ton hc ca B-spline, vi hm B-spline c bc k-1 xc nh th:
) (
) (
) (
) (
) (
) (
) (
1 ,
2 1
1
1 , 1
1
1
,
u N
U U
u U
u N
U U
U u
u N
k i
k i i
i
k i
k i i
k i
k i
+ +
+

+
+

=
Trong u
i
l gi tr ti nt p
i
vi bin s l u c gi l cc vector nt.
Tt c cc gi tr nt ng thi xc nh trn vector nt v cc nt nguyn thng s dng
d dng. Trong trng hp ny cc hm hp bc k s khc 0 trong khong k ca vector nt v
ton b cc gi tr trn vector cho mt tp hp im bng n+1+k.
Khng nh Bezier, ng B-spline khng i qua hai im u v cui tr khi hm hp
c dng l tuyn tnh.
ng B-spline c th c to qua hai im u, cui v tip xc vi vector u v cui
ca a gic kim sot. Bng cch thm vo cc nt ti v tr ca cc nt cui ca vector tuy nhin
cc gi tr ging nhau khng nhiu hn bc ca ng cong.
Ging nh ng cong Bezier, tnh cht bao li ca a gic kim sot v tnh cht chun
c tha mn. Vy c:
Trong ng cong B-spline, s lng cc nt, bc ca ng cong v s im iu khin
lun c cc quan h rng buc:
0 u n - k + 2

Hnh 7.7 ng cong B-spline


=
+
others 0
] , [ 1
) (
1
1 ,
i i
i
u u u
u N
1 (u) N
n
0 i
k i,
=

=
Chng 7: ng cong v mt cong trong 3D


128
Vy vic xc nh cc vector nt s ph thuc vo s phn loi ca chnh bn thn chng v
iu s nh hng n hnh dng ca ng cong c m t. Phn loi s da trn loi ca
ng cong nh sau:
u tun hon (periodic)
Khng tun hon (open or unperodic)
Khng u (non-uniform)
a. B Spline - u v tun hon
Vector nt l u khi gi tr ca chng cch u nhau mt khong xc nh.
V d: [ 0 1 2 3 4 5 ] vi xc nh = 1
[ -2-1/2 1 5/2 4 ] vi xc nh = 3/2
[ -1-0.6 -0.2 0.2 0.6 1 ] vi xc nh = 0.4
Trong cc bi ton thc t, thng thng th khong xc nh ca tham bin nm trong
khong t 0 n 1 hay t 0
0
m 360
0
th vic chn gi tr ca cc vector nt c chun ho
trong khong [0 1] hay [0
0
360
0
] .
[ 00.2 0.4 0.6 0.81 ] vi xc nh = 0.2
[ 0
0
120
0
240
0
360
0
] vi xc nh = 120
0

Bc (k-1) Cp (k) Vector nt (m=n+k) Khong tham s (k-1)t(n+1)
1 2 [0 1 2 3 4 5 6 7] 1t6
2 3 [0 1 2 3 4 5 6 7 8] 2t6
3 4 [0 1 2 3 4 5 6 7 8 9] 3t6
Cc vector nt gi l u v tun hon khi cc hm B-spline i vi mi phn on c th
chuyn i ln nhau. Bng trn ch ra s thay i ca min tham s v vector nt khc nhau ca
cc ng cong B-spline khi bc ca ng cong thay i. S lng ca vector nt c qui nh
bi biu thc m-n+k v s lng cc im kim sot tnh qua biu thc (n+1) bng6.
Tnh cht:
nh hng ca mi hm c s c gii hn trong k on l cp ca ng cong cn th
hin. Vy chng ta s dng ng cong bc ba th nh hng ca hm c s tri di trn bn
on ca ng cong.
ng B-spline tun hon khng i qua cc im u v cui ca a gic kim sot ngoi
tr vi ng bc 1 (k=2) m khi ng cong chuyn dng thnh ng thng.
V d v cc ng B-spline tun hon c cc bc khc nhau c cng cc im v a gic
kim sot. Khi k=2 ng cong bc mt trng vi cc cnh ca a gic kim sot.
Khi k=3, ng cong B-spline bc 2, bt u ti trung im ca cnh th nht v kt thc
ti trung im ca cnh cui cng ca a gic kim sot.
b. Khng tun hon (Open Non Uniform)
Mt vector khng tun hon hoc m l vector nt c gi tr nt ti cc im u cui lp
li vi s lng cc gi tr lp li ny bng chnh cp k ca ng cong v cc gi tr nt trong
mi im lp ny l bng nhau
Chng 7: ng cong v mt cong trong 3D


129
Nu mt trong hai iu kin ny hoc c hai iu kin khng c tho mn th vecto nt l
khng u.
V d, xt mt a gic kim sot vi bn nh. Cc ng cong B-spline cp 2,3,4 c xy
dng da trn a gic kim sot c s lng cc nt m=n+k s c vector nt nh sau:
Cp (k) s lng nt (m = n + k) Vector nt khng tun hon
2 6 [0 0 1 2 3 3]
3 7 [0 0 0 1 2 2 2]
4 8 [0 0 0 0 1 1 1 1]

Cc biu thc phi c tho mn i vi nt u
i
trn vector nt khng tun hon bt u ti
u
0
.
Danh sch cc vector nt khng tun hon a ra mc ny u tho mn cc biu thc
sau:
u
i
= 0 1=<i<=k
u
i
= i-k k+1<i<=n+1
u
i
= n-k+2 n+1<i<=n+k+1
Cc vector nt khng tun hon cung cp cc hm c s c nh ngha trong mt min
tham s phc tp v khng c s mt mt nh vi loi vector tun hon v v vy ng cong B-
spline loi ny lun i qua cc im u v cui ca a gic kim sot.
V d: hm hp bc ba tnh xp x cho 8 khong s xc nh trn vector nt l
00001234555. y chng ta cn thy s thay i cc b trn ng cong khi ta thay i v tr
mi im.
ng cong Bezier l trng hp c bit ca B-spline khng tun hon, trong s lng
cc nh s dng bng vi cp ca ng cong. Vector nt trong trng hp ny l:
[ 0 0 ..... 0 1 1 ...... 1 1 ]
kk
ng cong B-spline bc ba vi bn im kim sot v vector khng tun hon [0 0 0 0 1 1
1 1] cng chnh l ng cong Bezier.
c. Khng u
Trong vector nt khng tun hon, gi tr cc nt xut hin ti cc bin c lp li v cc
nt bn trong cc bc nt bng nhau. Nu mt trong hai iu kin ny hoc c hai iu kin ny
khng c tho mn th vector nt l khng u.
V d cc nt khng u c th to ra bng cch t cc gi tr lp li i vi cc nt
khong gia [0 1 2 3 3 4 5]
Hay to ra bc nhy khng bng nhau gia cc nt [0.0 0.2 0.5 0.75 1.0]
Cc vector nt loi u cho php ngi s dng d hnh dung v x l trong cc php ton
nhng trong mt s cc trng hp bc nt khng u li c nhng u im c bit. V d nh
trong vic iu khin hnh dng ca ng cong trong tin trnh thit k khi cc sai lch khng
Chng 7: ng cong v mt cong trong 3D


130
mong mun c th xut hin m vic s dng ng cong B-spline u vi cc d liu im c
cc khong cch tng i ln m khng u nhau.
Kt lun
o B-spline l mt dng ca Bezier
o Thc t khi ta chn bc k cho tp hp k im th thi B-spline chuyn thnh Bezier
o Khi bc ca a thc gim s nh hng cc b ca mi im nt cng r rng hn.
o Khi tn ti nh hng cc b cng ln v ng cong phi i qua im .
o Chng ta c th thay i hnh dng ng cong B-spline bng cch:
o Thay i kiu vector nt: u tun hon, m, khng u
o Thay i cp k ca ng cong
o Thay i s nh v v tr cc nh a gic kim sot
o S dng cc im kim sot trng nhau
2. M HNH B MT (Surface) V CC PHNG PHP XY DNG
2.1. Cc khi nim c bn
Mt cong (surface): l qu o chuyn ng ca mt ng cong to nn. Biu din tham
bin cho mt cong:
- Da vo vic xy dng v to b mt ton hc trn nhng im d liu
- Da trn vic xy dng nn b mt ph thuc vo bin s c kh nng thay i mt
cch trc din thng qua cc tng tc ho.
Ta c:
x=x(u,v,w) u,v,w [0, 1]
y=y(u,v,w) u + v + w = 1
z=z(u,v,w)
Q(u,v,w) = Q[ x=x(u,v,w) y=y(u,v,w) z=z(u,v,w) ]
Biu din theo mnh
- Biu din ming t gic - quadrilatera Patches
- Biu din ming tam gic - Triangular Patches
2.2. Biu din mnh t gic
Phng trnh:
x=x(u,v)
y=y(u,v) u,v [ 0, 1]
z=z(u,v)
Q(u,v) = Q[ x=x(u,v) y=y(u,v) z=z(u,v) ]
Thnh phn
u,v l cc tham bin
Chng 7: ng cong v mt cong trong 3D


131
Cc im Q(0,0) Q(0,1), Q(1,0), Q(1,1) l cn ca mnh, cc ng cong Q(1,v), Q(0,v),
Q(u,0), Q(u,1) l cc bin ca mnh. o hm ring ti im Q(u,v) xc nh vector tip tuyn
theo hng u, v.









Hnh 7.8 Biu din mnh t gic
[ ]
[ ] v v u z v v u y v v u x Q v v u Q
u v u z u v u y u v u x Q u v u Q
=
=
/ ) , ( , / ) , ( , / ) , ( / ) , (
/ ) , ( , / ) , ( , / ) , ( / ) , (

2.2.1. Kt ni mnh t gic











Hnh 7.9 Kt ni mnh t gic
Thc th hnh hc biu din thng qua cc mnh cng dng, cc mnh c th ni vi nhau
theo cc hng u,v khi hai mnh cng hng . Nu mi im trn bin ca hai mnh bng
nhau, hay hai bin bng nhau. Hai mnh lin tc bc C
0
. Nu hai bin bng nhau v o hm bng
nhau trn cng mt hng th hai mnh gi l kt ni bc C
1
.
2.2.2. H ta Barycentric Coordinates
Tp cc im P
1
,P
2
... P
n
, tp cc t hp ca cc im
k
1
P
1
+ k
2
P
2
+ k
3
P
3
... + k
n
P
n

Vi k
1
+ k
2
+ k
3
+ ... + k
n
=1
Cc im to thnh khng gian affine vi cc gi tr ta nates
Chng 7: ng cong v mt cong trong 3D


132
k
1
,k
2
,k
3
,..k
n
c gi l h to barycentric.
2.2.3. Tam gic Triangular

Hnh 7.10 Mnh tam gic
Trong tam gic cc im c dng P
1
, P
2
, P
3

H s: k
1
, k
2
, k
3
[ 0, 1]
k
1
+ k
2
+ k
3
= 1
P = k
1
P
1
+ k
2
P
2
+ k
3
P
3

Nu H s k
i
> 1 hoc <0 im P s nm ngoi tam gic (Q)
Nu H s k
i
= 1 hoc =0 im P s nm trn cnh tam gic (R)
2.3. M hnh ho cc mt cong (Surface Patches)
2.3.1. Mt k (Ruled Surface)
B mt c xy dng bng cch cho trt mt on thng trn hai ng cong. Cc mt
k nhn c bng php ni suy tuyn tnh t hai ng cong bin cho trc tng ng vi hai
bin i din ca mt k P
1
(u) v P
2
(u).












Hnh 7.11 M hnh b mt k
Phng trnh mt k:
Q(u,v) = P2(u)v + P1(u)(1-v)
Nu hai ng cong cho trc tng ng l P
1
(v) v P
2
(v)
Ruled Surface

Duong cong

Duong cong

0.

0.

0.

0.

1
0.

0.

0.

0.

1
1
1.

2
2.

3
Chng 7: ng cong v mt cong trong 3D


133
Th mt k c phng trnh:
[ ]

= + =
) (
) (
) 1 ( ) ( ) 1 )( ( ) , (
2
1
2 1
v P
v P
u u v P u v P v u Q
2.3.2. Mt trn xoay (Revolution surface)









Hnh 7.12 M hnh mt trn xoay
Mt c xy dng bi ng thng hay mt ng cong phng, quanh mt trc trong
khng gian.
Gi s ng cong phng c dng:
P(t)=[x(t) y(t) z(t)] 0ttmax
V d: quay quanh trc x mt thc th nm trn mt phng xoy, phng trnh b mt l
Q(t, f ) = [ x(t) y(t) cosfz(t) sinf ]
V d: Mt trn xoay
P
1
[1 1 0] v P
2
[6 2 0] nm trong mt phng xoy. Quay ng thng quanh trc ox s
c mt mt nn. Xc nh im ca mt ti t=0.5, f =p/3.
Phng trnh tham s cho on thng t P
1
ti P
2
l:
P(t) = [ x(t) y(t) z(t) ] = P1 + (P1 - P2)t 0 t 1
Vi cc thnh phn -cc:
x(t) = x1 + (x2- x1)t = 1+5t
y(t) = y1 + (y2- y1)t = 1+t
z(t) = z1 + (z2- z1)t = 0
Dng phng trnh:
Q(1/2, p/3) = [ 1+5t(1+t)cosf (1+t)sinf ]
7 3 3
cos sin
2 2 3 2 3
7 3 3 3
2 4 4

=



=



2 0
Chng 7: ng cong v mt cong trong 3D


134
2. 3.3. Mt trt (Sweept Surface









Hnh 7.13 M hnh mt trt
Sweep surface l mt c to bi bng cch trt mt thc th.
V d: mt ng thng, a gic, mt ng cong, mt hnh dc theo mt ng trong
khng gian.
Q(u,v) = P(u)*[ T(v) ]
P(u) thc th cn trt
[ T(v) ] l ma trn bin i ([ T(v) ] c th l ma trn tnh tin, quay, hay t l hoc l kt
hp ca nhiu php bin i ).
V d:
P
1
[000], P
2
[03 0]
P(t) = P
1
+ (P
2
P
1
) *u = [0 3u01]
0 u,v 1
V d v mt trt (Sweept Extrusion)











Hnh 7.14 Hnh thnh mt trt
Hnh vung xc nh bi 4 nh:



=
1 0 0 10
0 ) 2 cos( ) 2 sin( 0
0 ) 2 sin( ) 2 cos( 0
0 0 0 1
) (
v
v v
v v
v T
0
2
4
6
8
10
-2
-1
0
1
-1
-0.5
0
0.5
1
0
2
4
6
8
10
-3
-2
-1
0
1
-1
-0.5
0
0.5
1
Chng 7: ng cong v mt cong trong 3D


135
P
1
[0 -10], P
2
[0-1-1]
P
3
[01 -1], P
4
[01 1]
ng cong trt:
x= 10vy= cos(Pv) 1
Quay 1 gc khi trt:
2.3.4. Mt ni suy trn bn ng bin(Boolean sum surface
Mt c xy dng trn 4 im v cc ng cong bin, S(u,v) mt ni suy trn 4 ng
bin.









Hnh 7.15 M hnh mt cong Boolean Sum
S(u, v) = S
1
(u, v) + S
2
(u, v) - P(u,v)
Vi:
P(u,v) = (1-u)(1-v)P
00
+ (1-u)vP
01
+ u(1-v)P
10
+ uvP
11

S
1
(u,v) = va
0
(u) + (1-v)a
2
(u)
S
2
(u,v) = ua
1
(v) + (1-u)a
3
(v);
P l cc nh ca mnh 4
a
i
(u) l cc phng trnh ng bin
V d v mt Boolean Sum:
Vi u = 0
S(0,v) = S
1
(0,v) + S
2
(0,v) - P(0, v)
= v a
0
(0) + (1 - v)a
2
(0) + 0a
1
(v)+ 1 a
3
(v) - (1 - v)P
00
- v P
01

=
1 1 1 0
1 1 1 0
1 1 1 0
1 1 1 0
1 1 1 0
4
3
2
1
) (
P
P
P
P
u P


=
1 0 1 ) cos( 10
0 1 0 0
0 0 1 0
0 0 0 1
) (
v v
v T

1 0 1 ) cos( 10
0 1 0 0
0 0 ) cos( ) sin(
0 0 ) sin( ) cos(
v v


Chng 7: ng cong v mt cong trong 3D


136
= v P
01
+ (1 - v)P
00
+ a
3
(v) -(1 - v)P
00
- v P
01

= a
3
(v)
2.4. Mt t cc ng cong
2.4.1. Mt cong bc ba Hermite
Mt cong tham bin c to bi b mt qua ti 4 im d liu ti 4 gc v cc ng cong
c phng trnh bc ba qua chng, nh vy 16 vector iu kin hay tng ng vi 48 gi tr i
s cn thit xc nh cc h s phng trnh.
Khi nhng h s l 4 im d liu gc v 8 vector tip tuyn ti cc im theo cc hng
u,v tng ng cng 4 vector xon th mt cong to thnh l mt cong Hermite. Phng trnh c
dng:

Q(u, v) = [U ][C ][V]
T
0 u, v 1
Vi: u = [ u
3
u
2
u1] ,v = [v
3
v
2
v 1]
V ma trn h s [C] l:
[ ]

=
33 32 31 30
23 22 21 20
13 12 11 10
03 02 01 00
C C C C
C C C C
C C C C
C C C C
C
Cui cng ta thu c cc h s theo phng trnh mi c dng:
Q(u, v) = [U][M
H
] [B] [M
H
]
T
[V]
T
u,v [0,1]
V
V B l ma trn iu kin bin:
[ ]

=
11 10
01 00
11 10
01 00
11 10
01 00
11 10
01 00
uv uv
uv uv
v v
v v
u u
u u
P P
P P
P P
P P
P P
P P
P P
P P
B
Hay vi dng thc rt gn ca ma trn [B] theo cc ma trn iu kin bin tng ng:
[B] ma trn cc gi t tham s
[P
u
], [P
v
] cc vector tip tuyn theo u,v tng ng.
[P
uv
] ma trn xon trn u,v
( )

= =
=
3
0
3
0
1 , 0 ,
i j
j i
ij
v u v u C v u Q
[ ]



=
0 0 0 1
0 1 0 0
1 2 3 3
1 1 2 2
H
M
Chng 7: ng cong v mt cong trong 3D


137
[ ]
[ ]
[ ]
[ ]
[ ]

=
uv
v
u
P
P
P
P
B











Hnh 7.16 Mt cong Hermite v cc im d liu
Cc vector tip tuyn v vector xon ca b mt cong c biu din qua phng trnh sau:
Q
u
(u,v) = [U] [M
H
]
u
[B] [M
H
]
T
[V]
T

Q
v
(u,v) = [U] [M
H
]
v
[B] [M
H
]
T
[V]
T

Q
uv
(u,v) = [U] [M
H
]
uv
[B] [M
H
]
T
[V]
T

Vi:
[ ] [ ]



=
0 1 0 0
2 4 6 6
3 3 6 6
0 0 0 0
&
V
H
U
H
M M
2.4.2. Mt cong Bezier
Mnh-patch Bzier

Hnh 7.17 Mt cong Bezier
Chng 7: ng cong v mt cong trong 3D


138
Mnh Bezier c hnh thnh trn php trt ca ng cong Bezier.Vic xy dng nn
mnh Bezier di cc im kim sot, to nn a din kim sot.
{ } m j n i P
j i
0 , 0 :
,

Phng trnh tng qut ca mt cong tham bin Bezier c dng:

= =
=
m
j
n
i
m j n i j i
v B u B P v u P
0 0
, , ,
) ( ). ( ) , ( trong u,v [0, 1]
Mnh Bezier bc ba:
Mt cong Bezier bc ba l mt ph bin nht trong CG, v i n gin ca n. N hnh
thnh trn 4x4 im kim sot, cng thc c dng:
a thc Bernstein c dng:
B
0
(t) = (1-t)
3

B
1
(t) = 3t (1-t)
2

B
2
(t) = 3t
2
(1-t)
B
3
(t) = t
3

Tnh cht ca mnh Bzier
Tnh bao li: Mt cong Bezier lun nm trong a din li ca cc im kim sot
Mt cong i qua 4 im cn P
00
, P
01
,P
10
,P
11
hay chnh xc
Q(0,0)=P
00
, Q(0,1)=P
01
, Q(1,0)=P
10
, Q(1,1)=P
11

ng cong bin ca Mt Bezier l ng cong Bezier
Mt cong l lin tc v o hm ring cc bc tn ti ca n cng lin tc.
o hm ring ca mt cong c dng:
) ( 3 / ) 0 , 1 (
) ( 3 / ) 1 , 0 (
) ( 3 / ) 0 , 0 (
) ( 3 / ) 0 , 0 (
03 13
02 03
00 01
00 01
P P v Q
P P u Q
P P v Q
P P u Q
=
=
=
=

Q(u,v) l mi im nm trn mt cong v
( ) ( ) ( )
ij
i j
j m i n
P v B u B v u Q

= =
=
3
0
3
0
, ,
,
( ) [ ] [ ] [ ] [ ] [ ]
T T
V M B N U v u Q = ,
Chng 7: ng cong v mt cong trong 3D


139
[N] v [M] c biu din =



0 0 0 1
0 0 3 3
0 3 6 3
1 3 3 1

Ni 2 ming Bezier Bc 3(Bi-cubic)

( ) [ ]



=
1 1 0 0 0
3 3 0 0
3 6 3 0
1 3 3 1
0 0 0 1
0 0 3 3
0 3 6 3
1 3 3 1
1 ,
2
3
33 32 31 30
23 22 21 20
13 12 11 10
03 02 01 00
2 3
v
v
v
B B B B
B B B B
B B B B
B B B B
u u u v u Q












Hnh 7.18 Ni hai mnh Bezier bc ba
Hai mnh Q v R cng chung tham bin ti bin (Gi s u), hai ng cong bin phi bng
nhau Q(1,v)=R(0,v). H s ca ct cui ma trn Q = ct u ma trn R, tng t: nu theo hng
ca v th hng s thay ct ma trn.
Bc ca mt cong theo mi hng ca tham bin bng s im kim sot tr 1.Tnh lin tc
hay o hm ca mt theo mi tham bin bng s im kim sot tr 2. Hnh dng ca mt bin
i theo cc cnh ca a gic kim sot. Mt li ch i qua cc im gc cnh ca a gic kim
sot, n ch nm trong phn gii hn bi li ca a gic li kim sot v khng thay i di tc
ng ca cc php bin i affine. Mi ng bin ca mt Bezier l mt ng cong Bezier vi
mt cong bc ba Bezier cc ng cong bin lun m bo l cc ng Bezier bc 3. Nh vy
li a gic cho b mt s l 4 x 4.
2.4.3. Mt cong B-Spline
Phng trnh mt B-spline:
[ ] [ ] 1
2 3
u u u U =
[ ] [ ] 1
2 3
v v v V =
Chng 7: ng cong v mt cong trong 3D


140

P
ij
l im kim sot
N v M l a thc B-spline
Vi cc mt cong m mt cong ph thuc vo cc nt vector
c im ca mt cong B-Spline
S bc caonht ca b mt theo mi hng th bng s im kim sot -1 theo hng .
o hm ring ca phng trnh b mt theo mi tham bin c bc bng s im kim
sot theo tham bin tr 2.
B mt B-spline th khng chu nh hng ca php bin i anfine. B mt s thay i
nu ta thay i a gic kim sot.
nh hng ca mt im kim sot n c gii hn bi + - k/2 h/2 khong i vi mi
tham s.
Nu s nh ca a gic kim sot bng s bc theo mi tham bin v khng c im kp
no th mt B-spline s chuyn thnh mt Bezier.
Nu cc a gic kim sot c dng tam gic th li a gic kim sot s c hnh dng gn
ging vi b mt cong.
Mi mt B-Spline lun nm trong bao li ca a gic kim sot .
Mi mt B-Spline c dng iu lun bm theo hnh dng ca a gic kim sot.
Tm tt:
Vic to ra cc ng cong theo mun cng l vn thng gp khi lm vic vi ho
my tnh. Chng ta kho st cch tip cn v ng cong bng Hermite, Bezier v B-spline. Cc
cch tip cn ny da trn c s v ng cong bng mt tp im m t hnh dng ca ng
cong gi l tp im kim sot. Khi thay i tp im ny, hnh dng ca ng cong s thay i
theo. Cch tip cn ny cho thy s thun li v linh hot khi cn phi v cc ng cong phc
tp v do n c dng nhiu trong thit k.
Mt nhc im trong cch v ng cong bng Bezier l khi mt phn ca ng cong
t yu cu, nhng khi hiu chnh phn cn li s mt i phn t yu cu, hay vic ni trn
j i
n
i
m
j
h j k i
P w M u N w u Q
,
1 1
, ,
. ) ( ). ( ) , (

= =
=

<
=
+
otherwise
x u x
u N
i i
k i
0
1
) (
1
,
1
1 , 1
1
1 ,
) ( ). ( ) ( ) (
) ( ,
+ +
+ +
+

=
i k i
k i k i
i k i
k i i
x x
u N u x
x x
u N x u
u k Ni
( )

+ + + =
+ =
=
) 1 ( 1
) 1 (
1 0
k n i n k n x
n i k k i x
k i x
i
i
i
Chng 7: ng cong v mt cong trong 3D


141
cc ng cong sn c. khc phc cc vn ny ta c cch tip cn ci tin v ng cong
bng B-spline.
Tng t nh vy vic biu din cc mt cong trong ho my tnh cng l mt vn
cn thit m t i tng trong th gii thc. Chng ta kho st v cc phng php biu din
mt cong thng qua phng trnh tham s. Trong , phng trnh tham s ca mt mt c dng
l mt phng trnh tham s hai bin p(u,v) v mt im bt k trn mt s c biu din di
dng p(u,v)= (x(u,v), y(u,v), z(u,v)). Chng ta kho st mt s mt n gin nh: mt k, mt trn
xoay, mt trt v mt Boolean Sum.
Trn c s cc ng cong bng Hermite, Bezier v B-spline chng ta cng xy dng c
cc mt Hermite, Bezier v B-spline.
Bi tp:
1. Cho 4 im P
0
(1,3,6), P
1
(6,0,3), P
2
(-1,3,-2) v P
3
(5,4,1) dng 4 im trn lm im kim
sot a ra phng trnh ca ng cong Bezier.
2. Cho hai im P
1
[-2 4 5] v P
2
[0 1 -6] nm trong mt phng xoy. Quay ng thng
quanh trc ox s c mt mt nn. Xc nh im ca mt ti t=0.8, =/4.
3. Ci t thut ton v ng cong bng Bezier cho php ngi dng nh ngha tp im
kim sot m t hnh dng ng cong v cho php ngi dng hiu chnh mt s im
kim sot m t hnh dng ng cong v cho php ngi dng hiu chnh mt s im
kim sot hiu chnh ng cong theo mun.
4. Vit phng trnh v ng Spline.
5. Vit chng trnh sinh ng C_curve (Fractal).
6. Vit chng trnh sinh ng Dragons (Fractal).
7. Vit chng trnh sinh ng Kon (Fractal).
8. Vit chng trnh sinh ng Mandelbrot (Fractal).
9. Vit chng trnh sinh ng Pythagoras (Fractal).



Ph lc 1


142
PH LC 1

Hng dn s dng th vin ho trong C/C++ hay BC
1. Yu cu
Phi c tp tin iu khin mn hnh EGAVGA.BGI (thng thng tp ny thng nm
trong th mc \BC\BGI hay TC\BGI khi ci t).
Nu chng ta c s dng ti font ch th cn phi c thm cc file (*.CHR) nh:
GOTH.CHR (ch Gothic), LITT.CHR (ch Small Font), SANS.CHR (ch Sans Serif),
TRIP.CHR (ch cao gp 3).
dng c th vin cc hm ho cn c dng lnh:
#include <graphics.h> v t mc chn Graphics library l ON ([x] trong menu
Options/Linker/Libraries.
Khi cn tham kho c php, cch s dng ca bt k mt hm ho no, a con tr v
tn hm trong chng trnh sau nhn t hp phm CTRL+F1. Mun tham kho danh sch ton
b cc hm ca th vin ho nhn t hp phm CTRL+F1 ngay ti dng ch <graphics.h>.
2. Khi to v ng ch ho
phn gii ca mn hnh c o bng s im theo chiu ngang nhn vi s im theo
chiu dc ca mn hnh ho. To gc ca mn hnh ho (0,0) l im nm ti gc trn
cng pha bn tri. Mi kiu ho dng mt h to ring. H to cho mn hnh VGA l
640x480.
Khi ng ho vi mn hnh ngm nh:
#include <graphics.h>
void main(void){
int gdriver, gmode, errocode;
gdriver = DETECT;//ngm nh
initgraph(&gdriver,&gmode,C:\TC\BGI); //tm mode mn hnh trong th mc BGI
errorcode = graphresult();
if (errorcode !=grOk) {
printf(\n Khng khi to c);
getch();exit(1);
}
...................// Cc thao tc ho tip theo
closegraph();
}
V d: vit chng trnh hai ng thng ct nhau
#include <conio.h>
#include <graphics.h>
#include <math.h>
// h s i t sang radian
Ph lc 1


143
#define RADS 0.017453293
void giaodiem(double x1, double y1, double x2, double y2,
double a1, double b1, double a2, double b2) {
double dx, dy, da, db, x, y, t, tich;
dx = x2 - x1;
dy = y2 - y1;
da = a2 - a1;
db = b2 - b1;
tich = db * dx - da * dy;
if (tich != 0) {
t = ((a1 - x1) * dy - (b1 - y1) * dx) / tich;
if (t>=0.0 && t<=1.0) {
x = t * (a2 - a1) + a1;
y = t * (b2 - b1) + b1;
line(x1, y1, x2, y2);
line(a1, b1, a2, b2);
setfillstyle(SOLID_FILL, RED);
fillellipse(x, y, 3, 3);
}
}
}
void main() {
int gr_drive = DETECT, gr_mode;
double x1, y1, x2, y2, a1, b1, a2, b2;
printf("\nNhap vao toa do doan thang thu nhat: ");
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
printf("\nNhap vao toa do doan thang thu hai: ");
scanf("%lf%lf%lf%lf", &a1, &b1, &a2, &b2);
initgraph(&gr_drive, &gr_mode, "");
giaodiem(x1, y1, x2, y2, a1, b1, a2, b2);
getch();
closegraph(); //ng ch ho
}
3. Cc hm c bn
3.1. Bng mu ca mn hnh ho.
Setbkcolor(int color) thit lp mu nn cho mn hnh ho
setcolor(int color) t mu v cho nt v hin ti
getmaxcolor() ly s mu cao nht c s dng trong ch ho hin ti
setallpalette(struct palettetype far
*palette)
s lm thay i ton b mu trong bng mu palette
setpalette( int colox, int colory) s lm thay i mu th colorx thnh mu colory
getpalette(struct palettetype far
*palette)
s ly li gi tr ca palette ang dng
textheight(W) ly chiu cao ca dng vn bn
Ph lc 1


144
outextxy(int x, int y, char * msg) Ch th a xu k t msg ra mn hnh ho ti v tr (x,y)
3.2. Nguyn s im
Nguyn s n gin nht chnh l im, mi nguyn s khc u c xy dng nn t
im.
int getmaxx() S chm im ln nht theo chiu ngang trong ch ho hin ti
int getmaxy() S chm im ln nht theo chiu dc trong ch ho hin ti
putpixel( x, y, color) v mt im sng ln mn hnh ti im (x, y) c mu color
getpixel(x,y) nhn bit mu hin ti ca im (x, y)
3.3. Nguyn s ng
Cc hm cho ng:
moveto(int x, int y) di chuyn v tr con tr hin ti ca mn hnh ho ti to (x,y)
getx(), gety() ly to ca con tr hin ti theo chiu ngang v chiu dc mn hnh
ho
lineto(int x, int y) v mt ng thng t v tr con tr hin ti ti v tr c to (x, y) trn
mn hnh ho
line(int x1, int y1, int x2,
int y2)
V mt ng thng t to (x1,y1) n to (x2, y2) trn mn hnh
ho. ng thng mi c v khng ph thuc vo v tr hin thi ca
con tr mn hnh
linerel(int dx, int dy) V mt on thng t v tr con tr hin ti ti v tr (x +dx, y+dy). Sau khi
v con tr chuyn ti v tr mi (x+dx, y+dy)
3.4. Nguyn s hnh ch nht
rectangle(int x1, int y1, int x2, int y2) v hnh ch nht c to pha gc trn bn tri l
(x1, y1) v gc di bn phi c to (x2,y2).
bar(int x1, int y1, int x2, int y2) v hnh ch nht c t mu pha trong. Hai ch th rectangle
v bar khc nhau ch rectangle ch to nn mt hnh ch nht vi ng vin bao quanh.
bar3d(int x1,int y1,int x2,int y2,int depth, int top) v khi hp ch nht, mt ngoi ca n l
hnh ch nht xc nh bi cc to (x1,y1,x2,y2) hnh ch nht ny c t mu, depth l
chiu su ca khi 3 chiu, top nhn gi tr 1 hoc 0 khi 3 chiu c np hay khng c np.
3.5. Nguyn s hnh trn
Tt c cc hm di y, gc tnh theo v gi tr t 0
0
n 360
0
.
arc(int x, int y, int gd,int gc,int r) v cung trn c (x,y) ta tm trn, r bn knh, gd gc
u, gc gc cui.
circle( int x, int y, int r) l hm v hnh trn c tm ti im (x,y) vi bn knh r.
ellipse(int x, int y,int gd, int gc,int xr, int yr) v 1 hnh ellipse c (x,y) to tm cung, gd
gc u, gc gc cui, xr l bn trc ngang, yr l bn trc ng.
Ph lc 1


145
pieslice(int x, int y, int gd, int gc, int r) v v t mu hnh qut c (x,y) l to tm qut,
gd l gc u, gc l gc cui, r l bn knh.
3.6. Nguyn s a gic
drawpoly(int numpoints, int far *polypoints) s v nn mt ng gp khc bt k vi
numpoints l s im m ng gp khc i qua, polypoints (mng) to im (x1,y1,x2,y2....).
Khi im cui (xn,yn) trng vi im u (x1,y1) th c mt a gic.
fillpoly(int numpoints, int *polypoints) s t mu a gic bng mu hin thi.
setfillstyle(int pattern, int color) dng xc nh mu t cho a gic, trong mu t l
cc hng s nguyn c nh ngha nh sau:
Tn hng mu Gi tr M t
EMPTY_FILL 0 T bng mu nn
SOLID_FILL 1 T bng nt lin
LINE_FILL 2 T ------
LTSLASH_FILL 3 T ////
SLASH_FILL 4 T ///// in m
BKSLASH_FILL 5 T \\\\\ in m
LTBKSLASH_FILL 6 T \\\\
HATCH_FILL 7 T ng gch bng nht
XHATCH_FILL 8 T ng gch bng ch thp
INTERLEAVE_FILL 9 T ng t qung
WIDE_DOT_FILL 10 T bng du chm tha
CLOSE_DOT_FILL 11 T bng du chm dy
3.7. Nguyn s vn bn
outtext( char far *textstring) s hin th ni dung xu textstring ti v tr hin thi ca mn
hnh ho.
outtextxy(int x, int y, char far *textstring) hin th ni dung xu textstring ti to (x, y)
trong mn hnh ho.
settextstyle(int font, int direction, int charzise) dng xc lp kiu ch vi cc font ch
khc nhau.
Trong int font c xc lp thng qua cc hng sau:

TN FONT Gi tr ngha
DEFAULT_FONT 0 Font 8x8 bit-mapped
TRIPLEX_FONT 1 Stroked triplex font
Ph lc 1


146
SMALL_FONT 2 Stroked small font
SANS_SERIF_FONT 3 Stroked sans-serif font
GOTHIC_FONT 4 Stroked gothic font
int direction c xc nh nu HORIZ_DIR = 0 l nm ngang t tri qua phi, VERT_DIR
=1 l thng ng t di ln trn.
int charsize nhn gi tr t 1 n 10 l h s phng i ch.
settextjustification( int hoz, int vert) xc nh v tr dng vn bn c a ra mn hnh
ho bi outtext() v outtextxy().
Trong int hoz c th nhn mt trong cc hng sau:
LEFT_TEXT =0 vn bn xut hin pha bn tri con tr mn hnh ho
CENTER_TEXT =1 vn bn xut hin gia vi tm l con tr mn hnh ho
RIGHT_TEXT =2 vn bn xut hin pha bn phi con tr mn hnh ho
Cn int vert l tham s c th nhn cc gi tr sau:
BOOTTOM_TEXT=0 vn bn xut hin pha trn con tr
CENTER_TEXT=1 vn bn xut hin quanh con tr
TOP_TEXT=2 vn bn xut hin pha di con tr
textheight(char *s) tr v chiu cao (theo pixel) ca chui do s tr ti. Vi 8x8 bit map Font
v h s khuych i ch l 1 th textheight(H)=8
textwidth(char *s) tr v chiu di ca chui tnh theo pixel.
3.8. Ca s (viewport)
viewport l 1 vng hnh ch nht trn mn hnh ho ging nh window trong textmode.
setviewport(int x1, int y1, int x2, int y2, int clip) trong (x1,y1,x2,y2) l gc tri trn v
gc phi di tho mn iu kin nh sau:
0<=x1 <= x2 v 0<= y1 <= y2
Tham s clip: clip=1 khng cho php v ra ngoi viewport
clip=0 cho php v ra ngoi viewport
getviewsettings(struct viewporttype *vp) nhn viewport hin hnh,
struct viewporttype {
int left,top,right,bottom;
int clip;
};
clearviewport(void) xo viewport
cleardevice(void) xo mi th trn mn hnh v a con tr v to (0,0) ca mn hnh
Ch : nh s dng viewport ta c th vit cc chng trnh ho c trc to , bng
cch thit lp viewport vi clip=0 (cho php v ra ngoi gii hn)
3.9. To hnh nh chuyn ng
Nguyn s mi m chng ta s xy dng l to hnh nh chuyn ng trn mn hnh ho.
V nguyn tc, c th to nn nhng hnh nh chuyn ng chng ta cn c mt hnh mu, sau
Ph lc 1


147
lu hnh mu trn mn hnh ho li bng ch th getimage(int x1, int y1, int x2, int y2, void
far *bitmap); trong bitmap l min nh dng lu hnh nh ca hnh ch nht c to
(x1,y1) v (x2, y2) trn mn hnh ho.
Ch th getimagesize(int x1, int y1, int x2, int y2) dng xc nh kch thc b nh dng
ct hnh nh gii hn trong hnh ch nht c to (x1, y1), (x2,y2).
Ch th putimage(int x, int y, void far * bitmap, int copymode) dng khi phc li hnh
nh c ct gi bng getimage(). Ch th putimage() kt hp vi ch th lm tr (delay() ) sao
cho s cc hnh nh hin th trn mn hnh ho khong 24 hnh/giy chng ta s nhn c mt
hnh nh chuyn ng.
V d 1: To hnh nh chuyn ng l mt mi tn.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define ARROW_SIZE 10
void draw_arrow(int x, int y);
int main(void) {
/* request autodetection */
int gdriver = DETECT, gmode, errorcode;
void *arrow;
int x, y, maxx;
unsigned int size;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "\\TC\\BGI");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) { /* an error occurred */
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
maxx = getmaxx(); x = 0;
y = getmaxy() / 2;
/* draw the image to be grabbed */
draw_arrow(x, y);
/* calculate the size of the image */
size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);
/* allocate memory to hold the image */
arrow = malloc(size);
/* grab the image */
getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);
/* repeat until a key is pressed */
Ph lc 1


148
while (!kbhit()){
/* erase old image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
x += ARROW_SIZE;
if (x >= maxx)
x = 0;
/* plot new image */
putimage(x, y-ARROW_SIZE, arrow, XOR_PUT);
}
/* clean up */
free(arrow);
closegraph();
return 0;
}
void draw_arrow(int x, int y) {
/* draw an arrow on the screen */
moveto(x, y);
linerel(4*ARROW_SIZE, 0);
linerel(-2*ARROW_SIZE, -1*ARROW_SIZE);
linerel(0, 2*ARROW_SIZE);
linerel(2*ARROW_SIZE, -1*ARROW_SIZE);
}
Cc code chng trnh v d cho bi tp lp trnh
Bi 1: quay i tng
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<alloc.h>
#define RADS 0.017453293
struct point{
int x,y,z;
}
a[4]=
{
{110,180,80},
{10,200,80},
{120,50,80},
{110,180,250}
};
int noi[4][4];
void Bresenham_Line(int x1,int y1, int x2, int y2, int c)
{
Ph lc 1


149
if(x1 == x2)
{
int i;
if(y1 < y2)
for(i = y1; i <= y2;i ++)
{
putpixel(x1,i,c); delay(10);
}
else
for(i = y2; i<= y1; i ++)
{
putpixel(x1,i,c); delay(10);
}
}
if(y1 == y2)
{
int i;
if(x1 < x2)
for(i = x1; i <= x2; i ++)
{
putpixel(i,y1,c);delay(10);
}
else
for(i = x2; i <= x1; i ++)
{
putpixel(i,y1,c); delay(10);
}
}
if(x1 < x2)
{
if(y1 < y2)
{
if((y2 - y1)/(x2-x1) < 1)
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy - Dx;
putpixel(x1,y1,c);
for(i = x1; i < x2; i ++)
{
if(p < 0)
p += 2*Dy;
else
{
p += 2*(Dy - Dx);
y1 ++;
}
x1 ++;
putpixel(x1,y1,c); delay(10);
Ph lc 1


150
}
}
else
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dx - Dy;
putpixel(x1,y1,c);
for(i = y1; i < y2; i ++)
{
if(p < 0)
p += 2*Dx;
else
{
p += 2*(Dx - Dy);
x1 ++;
}
y1 ++;
putpixel(x1,y1,c); delay(10);
}
}
}
if(y1 > y2)
{ if((y2 - y1)/(x2 - x1)> -1 )
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy + Dx;
putpixel(x1,y1,c);
for(i = x1; i <= x2; i ++)
{
if(p > 0)
p += 2*Dy;
else
{
p += 2*(Dy + Dx);
y1-- ;
}
x1 ++;
putpixel(x1,y1,c); delay(10);
}
}
else
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dx + Dy;
Ph lc 1


151
putpixel(x1,y1,c);
for(i = y1; i >= y2; i --)
{
if(p < 0)
p += 2*Dx;
else
{
p += 2*(Dx + Dy);
x1++ ;
}
y1 --;
putpixel(x1,y1,c); delay(10);
}
}
}
}
if(x1 > x2)
{
if(y1 < y2)
{ if((y2-y1)/(x2-x1) > -1)
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = -2*Dy - Dx;
putpixel(x1,y1,c);
for(i = x1; i > x2; i --)
{
if(p < 0)
{
p=p - 2*Dy - 2*Dx;
y1 ++;
}
else
p =p - 2*Dy;
x1 --;
putpixel(x1,y1,c);delay(10);
}
}
else
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = -2*Dx - Dy;
putpixel(x1,y1,c);
for(i = y1; i < y2; i ++)
{
if(p < 0)
p -= 2*Dx;
Ph lc 1


152
else
{
p -= 2*(Dx + Dy);
x1 --;
}
y1 ++;
putpixel(x1,y1,c); delay(10);
}
}
}
if(y1 > y2)
{
if((y2-y1)/(x2-x1) < 1)
{
int i;
int Dx = x2 - x1;
int Dy = y2 - y1;
int p = 2*Dy - Dx;
putpixel(x1,y1,c);
for(i = x1; i > x2; i --)
{
if(p > 0)
{
p =p - 2*Dy +2*Dx ;
y1--;
}
else

p -= 2*Dy;


x1 --;
putpixel(x1,y1,c); delay(10);
}
}
else
{
int i;
int Dx = x1 - x2;
int Dy = y1 - y2;
int p = 2*Dx + Dy;
putpixel(x1,y1,c);
for(i = y1; i > y2; i --)
{
if(p < 0)
{
p =p - 2*Dx + 2*Dy ;
x1 --;
}
else
Ph lc 1


153
p =p - 2*Dx ;
y1 --;
putpixel(x1,y1,c); delay(10);
}
}

}
}
}
void Dothi()
{
Bresenham_Line(getmaxx()/2,getmaxy()/2,getmaxx()-10,getmaxy()/2,15);
Bresenham_Line(getmaxx()/2,10,getmaxx()/2,getmaxy()/2,15);
Bresenham_Line(getmaxx()/2,getmaxy()/2,getmaxx()/2-170,getmaxy()/2+170,15);
Bresenham_Line(getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-170,getmaxy()/2+166,15);
Bresenham_Line(getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-163,getmaxy()/2+167,15);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(getmaxx()-9,getmaxy()/2+1," ");
outtextxy(getmaxx()-9,getmaxy()/2+10,"y");
outtextxy(getmaxx()/2,10,"-");
outtextxy(getmaxx()/2 - 10,10,"z");
outtextxy(getmaxx()/2-155,getmaxy()/2+170,"x");
}
point Diem3d(int x , int y , int z)
{
point p;
if(x>=0&&y>=0&&z>=0)
{
p.x = int(getmaxx()/2+y - x*cos(RADS*45));
p.y = int(getmaxy()/2-z + x*cos(RADS*45));
}
if(y>=0&&x<0&&z>=0)
{
p.x = int(y+getmaxx()/2-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
if(x>=0&&y<0&&z>=0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-(z-x*cos(RADS*45)));
}
if(x>=0&&y>=0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = getmaxy()/2-z+x*cos(RADS*45);
}
if(y>=0&&x<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2+(-z-x*cos(RADS*45)));
Ph lc 1


154
}
if(x>=0&&y<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
if(z>=0&&y<0&&x<0)
{
p.x = int(getmaxx()/2-(-y+x*cos(RADS*45)));
p.y = int(getmaxy()/2-(z-x*cos(RADS*45)));
}
if(x<0&&y<0&&z<0)
{
p.x = int(getmaxx()/2+y-x*cos(RADS*45));
p.y = int(getmaxy()/2-z+x*cos(RADS*45));
}
return(p);
}
point hinhchieu(int &x, int &y , int &z , int chieu)
{
point p;
if(chieu==1)
{
p.x =int( getmaxx()/2+y - x*cos(RADS*45));
p.y =int( getmaxy()/2 + x*cos(RADS*45));
}
if(chieu==2)
{
p.x =int ( getmaxx()/2+y-x*cos(RADS*45)-y);
p.y =int ( getmaxy()/2-z+x*cos(RADS*45));
}
if(chieu == 3)
{
p.x =int( getmaxx()/2+y-x*cos(RADS*45)+x*sin(RADS*45));
p.y =int( getmaxy()/2-z);
}
return(p);
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
if(chieu==2)
{
p.y = y*cos(RADS*goc) - z*sin(RADS*goc);
Ph lc 1


155
p.z = y*sin(RADS*goc) + z * cos(RADS*goc);
p.x =x;
}
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
void chieumat(point k[],int t, int m )
{
int i,j=0;
int n[4][4];
for(i = 0 ; i<4 ; i++)
for(j = 0 ; j<4 ; j++)
{
n[i][j]=1;
n[j][i]=1;
}
for(i = 0 ; i< 4 ; i++)
{
k[i] = hinhchieu(k[i].x,k[i].y,k[i].z,t);
}
for( i = 0 ; i< 4 ; i++)
for( j = 0 ; j< 4 ; j++)
{
if(i!=j&&n[i][j]==1&&n[j][i]==1)
{
Bresenham_Line(k[i].x,k[i].y,k[j].x,k[j].y,m);
n[i][j]=0;
n[j][i]=0;
}
}
}
void main()
{
clrscr();
point b[4],c[4],l[4];
int j=0;
int goc[2]={45,35};
int driver = DETECT, mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
Dothi();
for(int i = 0; i < 4; i ++)
b[i] = Diem3d(a[i].x,a[i].y,a[i].z);
for( i = 1; i < 4; i ++ )
{
Bresenham_Line(b[j].x,b[j].y,b[i].x,b[i].y,10);
Ph lc 1


156
}
Bresenham_Line(b[1].x,b[1].y,b[2].x,b[2].y,10);
Bresenham_Line(b[1].x,b[1].y,b[3].x,b[3].y,10);
Bresenham_Line(b[2].x,b[2].y,b[3].x,b[3].y,10);
settextjustify(LEFT_TEXT,RIGHT_TEXT);
printf("\nQuay quanh truc : oy goc 45");
printf("\nQuay quanh truc : ox goc 35.5");
for( i = 0 ; i< 4 ; i++)
{
c[i] = quay(a[i].x , a[i].y , a[i].z , goc[1] ,1);
}
for(i = 0 ; i< 4 ; i++)
{
c[i] = quay(c[i].x,c[i].y,c[i].z,goc[2],2);
}
for(i = 0; i< 4; i ++)
l[i] = c[i];
for( i = 0; i < 4; i ++)
c[i] = Diem3d(c[i].x,c[i].y,c[i].z);
outtextxy(10,110,"Chon mat chieu: ");
outtextxy(10,120,"xoy: Bam so 1.");
outtextxy(10,130,"xoz: Bam so 2.");
outtextxy(10,140,"yoz: Bam so 3.");
outtextxy(10,150,"Bam so 4 de ket thuc");
char m;
do{
m = getch();
for(i = 0;i < 4; i ++)
c[i] = l[i];
switch (m)
{
case '1' :{
chieumat(c,1,5);
break;
}
case '2' :{
chieumat(c,2,7);
break;
}
case '3' :
{
chieumat(c,3,9) ;
break;
}
}
}while( m !='4');
closegraph();
}
Bi 2: xn ta
#include <conio.h>
Ph lc 1


157
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#define ROUND(a) ((double)(a+0.5)
#define TRUE 1
#define FALSE 0
int cliptest(double p, double q, double *u1, double *u2)
{
double r;
int retVal = TRUE;
if (p < 0.0)
{
r = q / p;
if (r > *u2)
retVal = FALSE;
else
if (r > *u1)
*u1 = r;
}
else
if ( p > 0.0)
{
r = q / p;
if (r < *u1)
retVal = FALSE;
else
if (r < *u2)
*u2 = r;
}
else
{
if (q < 0.0)
retVal = FALSE;
}
return (retVal);
}
void clipline(double x1, double y1, double x2, double y2,
double xmin, double ymin, double xmax, double ymax)
{
double u1 = 0.0, u2 = 1.0, dx, dy;
double oldx1, oldy1, oldx2, oldy2;
oldx1 = x1;
oldy1 = y1;
oldx2 = x2;
oldy2 = y2;
dx = x2 - x1;
if (cliptest(-dx, x1 - xmin, &u1, &u2))
if (cliptest(dx, xmax-x1, &u1, &u2))
{
dy = y2 - y1;
Ph lc 1


158
if (cliptest(-dy, y1 - ymin, &u1, &u2))
if (cliptest(dy, ymax - y1, &u1, &u2))
{
if (u2 < 1.0)
{
x2 = x1 + u2 * dx;
y2 = y1 + u2 * dy;
}
if (u1 > 0.0)
{
x1 += u1 * dx;
y1 += u1 * dy;
}
setcolor(RED);
line(oldx1, oldy1, x1, y1);
line(x2, y2, oldx2, oldy2);
setcolor(YELLOW);
line(x1, y1, x2, y2);
}
}
}
void main()
{
int gr_drive = DETECT, gr_mode;
char c;
double x1, y1, x2, y2;
initgraph(&gr_drive, &gr_mode, "");
rectangle(100,50, getmaxx()-100, getmaxy()-50);
randomize();
outtextxy(100, getmaxy()-10, "Nhan phim bat ky de sinh duong khac; ESC de thoat");
do {
x1 = random(getmaxx() / 2);
y1 = random(getmaxy());
x2 = getmaxx()/2 + random(getmaxx() / 2);
y2 = random(getmaxy());
clipline(x1, y1, x2, y2, 100, 50, getmaxx()-100, getmaxy()-50);
c = getch();
} while (c != 27);
closegraph();
}
Bi 3: Php chiu
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<alloc.h>
#define RADS 0.017453293
struct point{
Ph lc 1


159
int x,y,z;
}
a[8]=
{
{30,100,50},
{30,230,50},
{30,230,90},
{30,100,90},
{120,100,50},
{120,230,50},
{120,230,90},
{120,100,90}

};
int n = 3,*d;
int noi[20][20];
void Dothi()
{
line (getmaxx()/2,getmaxy()/2,getmaxx()-10,getmaxy()/2);
line (getmaxx()/2,10,getmaxx()/2,getmaxy()/2);
line (getmaxx()/2,getmaxy()/2,getmaxx()/2-170,getmaxy()/2+170);
line (getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-170,getmaxy()/2+166);
line (getmaxx()/2-170,getmaxy()/2+170,getmaxx()/2-163,getmaxy()/2+167);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(getmaxx()-9,getmaxy()/2+1,"0");
outtextxy(getmaxx()-9,getmaxy()/2+10,"y");
outtextxy(getmaxx()/2,10,"-");
outtextxy(getmaxx()/2 - 10,10,"z");
outtextxy(getmaxx()/2-155,getmaxy()/2+170,"x");
}
point Diem3d(int &x, int &y, int &z)
{
point p;
p.x = int(getmaxx()/2+ y - x*cos(RADS*45));
p.y = int(getmaxy()/2 - z + x*cos(RADS*45));
return p;
}
point chance(int &x , int &y , int &z)
{
point p;
if(x>=0&&y>=0&&z>=0)
{
p.x = getmaxx()/2+y - x*cos(RADS*45);
p.y = getmaxy()/2-z + x*cos(RADS*45);
}
if(y>=0&&x<0&&z>=0)
{
p.x = y+getmaxx()/2-x*cos(RADS*45);
p.y = getmaxy()/2+z-x*cos(RADS*45);
}
Ph lc 1


160
if(x>=0&&y<0&&z>=0)
{
p.x = getmaxx()/2+y-x*cos(RADS*45);
p.y = getmaxy()/2-(z-x*cos(RADS*45));
}
if(x>=0&&y>=0&&z<0)
{
p.x = getmaxx()/2+(sqrt(pow(x,2)+pow(y,2)))*cos(RADS*45);
p.y = getmaxy()/2+(sqrt(pow(x,2)+pow(y,2)))*cos(RADS*45)-z;
}
if(y>=0&&x<0&&z<0)
{
p.x = getmaxx()/2+y-x*cos(RADS*45);
p.y = getmaxy()/2+(-z-x*cos(RADS*45));
}
return(p);
}
point hinhchieu(int &x, int &y , int &z , int chieu)
{
point p;
if(chieu==1)
{
p.x =int( getmaxx()/2+y - x*cos(RADS*45));
p.y =int( getmaxy()/2+x*cos(RADS*45));
}
if(chieu==2)
{
p.x =int ( getmaxx()/2+y-x*cos(RADS*45)-y);
p.y =int ( getmaxy()/2-z+x*cos(RADS*45));
}
if(chieu == 3)
{
p.x =int( getmaxx()/2+y-x*cos(RADS*45)+x*sin(RADS*45));
p.y =int( getmaxy()/2-z);
}
return(p);
}
point quay(int &x, int &y, int &z, int goc , int chieu)
{
point p;
if(chieu==1)
{
p.x = x*cos(RADS*goc) + z*sin(RADS*goc);
p.z = -x*sin(RADS*goc) + z * cos(RADS*goc);
p.y = y;
}
if(chieu==2)
{
p.y = y*cos(RADS*goc) - z*sin(RADS*goc);
p.z = y*sin(RADS*goc) + z * cos(RADS*goc);
Ph lc 1


161
p.x =x;
}
if(chieu==3)
{
p.x = x*cos(RADS*goc)-y*sin(RADS*goc);
p.y = x*sin(RADS*goc)+y*cos(RADS*goc);
p.z = z;
}
return p;
}
void chieumat(point k[],int t, int &m )
{
int i,j;
for(i = 0 ; i< 8 ; i++)
k[i] = hinhchieu(k[i].x,k[i].y,k[i].z,t);
for( i = 0 ; i< 8 ; i++)
for( j = 0 ; j< 8 ; j++)
{
if(noi[i][j]==1&&noi[j][i]==1)
{
Bresenham_Line(k[i].x,k[i].y,k[j].x,k[j].y,m);
}
}
noi[0][3]=1,noi[3][0]=1;
noi[4][7]=1,noi[7][4]=1;
noi[3][7]=1,noi[7][3]=1;
}
void main()
{
clrscr();
d = &n;
point b[8],g[3][8],c[8],l[8];
int t, goc ;
int driver = DETECT, mode;
initgraph(&driver,&mode,"c:\\tc\\bgi");
Dothi();
for(int i = 0; i < 8; i ++)
b[i] = Diem3d(a[i].x,a[i].y,a[i].z);
for( i = 0; i < 3; i ++ )
{
line(b[i].x,b[i].y,b[i + 4].x,b[i + 4].y);
line(b[i].x,b[i].y,b[i+1].x,b[i+1].y);
line(b[i+4].x,b[i+4].y,b[i+5].x,b[i+5].y);
noi[i][i+4]=1 , noi[i+4][i] =1;
noi[i][i+1] = 1, noi[i+1][i]=1;
noi[i+4][i+5]=1, noi[i+5][i+4]=1;
}
noi[0][3]=1,noi[3][0]=1;
noi[4][7]=1,noi[7][4]=1;
noi[3][7]=1,noi[7][3]=1;
Ph lc 1


162
line(b[0].x,b[0].y,b[3].x,b[3].y);
line(b[4].x,b[4].y,b[7].x,b[7].y);
line(b[3].x,b[3].y,b[7].x,b[7].y);
settextjustify(LEFT_TEXT,RIGHT_TEXT);
printf("\nQuay quanh truc :");
printf("\ny.Bam so 1");
printf("\nx.Bam so 2.");
printf("\nz.Bam so 3.");
scanf("%d",&t);
printf("\nQuay goc bao nhieu do:");
scanf("%d",&goc);
for( i = 0 ; i<= 7 ; i++)
{
c[i] = quay(a[i].x , a[i].y , a[i].z , goc ,t);
l[i] = c[i];
}
for( i = 0; i < 8; i ++)
c[i] = Diem3d(c[i].x,c[i].y,c[i].z);
for( i = 0; i < 3; i ++ )
{
line(c[i].x,c[i].y,c[i + 4].x,c[i + 4].y);
line(c[i].x,c[i].y,c[i+1].x,c[i+1].y);
line(c[i+4].x,c[i+4].y,c[i+5].x,c[i+5].y);
}
line(c[0].x,c[0].y,c[3].x,c[3].y);
line(c[4].x,c[4].y,c[7].x,c[7].y);
line(c[3].x,c[3].y,c[7].x,c[7].y);
outtextxy(10,410,"Chon mat chieu: ");
outtextxy(10,420,"xoy: Bam so 1.");
outtextxy(10,430,"xoz: Bam so 2.");
outtextxy(10,440,"yoz: Bam so 3.");
outtextxy(10,450,"Bam so 4 de ket thuc");
char m;
do{
m = getch();
for(i = 0;i < 8; i ++)
c[i]= l[i];
switch (m)
{
case '1' :{
chieumat(c,1,*(d));
break;
}
case '2' :{
chieumat(c,2,*(d));
break;
}
case '3' :
{
chieumat(c,3,*(d)) ;
Ph lc 1


163
break;
}
}
}while( m !='4');
closegraph();
}


Ph lc 2


164
PH LC 2
bi iu kin 1
MN: K THUT HO

H v tn: Lp:

1. Dng gii thut Bresenham vit hm sinh on thng (xt tt c trng hp ca h s k).
void Bre_line(int x1, int y1, int x2, int y2, int mau);
2. Xy dng th tc v tam gic (trong h to c gc (0,0) gia mn hnh) c cc to
nh sau:
A(x1,y1) ..... (40,50), B(x2,y2) ....... (90,80), C(x3,y3) ........(80,10)
3. Quay tam gic trn mt gc alfa quanh im c to :
S(x4,y4) .......(-40,50), alfa = 60
0

4. Chuyn ng tam gic trn (xo hnh c khi chuyn ng) khi dng cc phm mi tn ,
, ^, +
5. Cho hnh t din c cc to nh:
A(x1,y1,z1)....(40,50,10) B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90) D(x4,y4,z4) .....(100,50,60)
a. V hnh chiu vung gc ca n trn mt phng z=0 (xoy)
b. V hnh chiu vung gc sau khi quay n xung quanh trc oy mt gc Fi=-60
0

c. V hnh chiu Isometric ca n ln mt phng z=0 (xoy)
Ch : C th np bi theo cc phng n sau:
a. Np cc cu thnh cc file *.CPP
b. Gp thnh mt bi, trong bi chn cc phng n chy cc cu ca bi thi
c. C th dn cc cu (*.CPP) hay mt bi ln dng menu chn vo son tho word, ri
gi file .









Ph lc 2


165

bi iu kin 2
MN: K THUT HO

H v tn: Lp:

1. Dng gii thut Midpoint vit hm sinh on thng (xt tt c cc trng hp ca h s k).
void Mid_line(int x1, int y1, int x2, int y2, int mau);
2. Xy dng th tc v hnh ch nht (trong h to c gc (0,0) gia mn hnh) c cc to
nh sau:
A(x1,y1) .. (50,50), B(x2,y2) ... (100,50), C(x3,y3) ...(100,80), D(x4,y4)(80,50)
3. Quay hnh ch nht trn mt gc alfa quanh im c to :
S(x4,y4) .......(-40,50), alfa = 45
0

4. Chuyn ng hnh ch nht trn (xo hnh c khi chuyn ng) khi dng cc phm mi
tn , , ^, +
5. Cho hnh t din c cc to nh:
A(x1,y1,z1)....(40,50,10) B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90) D(x4,y4,z4) .....(100,50,60)
a. V hnh chiu vung gc ca n trn mt phng z=0 (xoy)
b. V hnh chiu vung gc sau khi quay n xung quanh trc oy mt gc Fi=-60
0

c. V hnh chiu Isometric ca n ln mt phng z=0 (xoy)
















Ph lc 2


166

bi iu kin 3
MN: K THUT HO

H v tn: Lp:

1. Dng gii thut Midpoint sinh ng trn.
void Mid_circle(int xc, int yc, int r, int mau);
2. Xy dng th tc v hnh 3 ng trn ct nhau (trong h to c gc (0,0) gia mn
hnh).
3. Quay 3 ng trn trn mt gc alfa quanh im c to :
S(x4,y4) .......(60,-70), alfa = 30
0

4. Chuyn ng 3 ng trn trn (xo hnh c khi chuyn ng) khi dng cc phm mi tn ,
, ^, +
5. Cho hnh t din c cc to nh:
A(x1,y1,z1)....(40,50,10) B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90) D(x4,y4,z4) .....(100,50,60)
a. V hnh chiu vung gc ca n trn mt phng z=0 (xoy)
b. V hnh chiu vung gc sau khi quay n xung quanh trc oy mt gc Fi=-60
0

c. V hnh chiu Isometric ca n ln mt phng z=0 (xoy)

















Ph lc 2


167

bi iu kin 4
MN: K THUT HO

H v tn: Lp:

1. Dng gii thut Midpoint sinh ng ellipse.
void Mid_ellip(int xc, int yc, int rx, int ry, int mau);
2. Xy dng th tc v ch H (trong h to c gc (0,0) gia mn hnh)
3. Quay ch H trn mt gc alfa quanh im c to :
S(x4,y4) .......(120,-60), alfa = 90
0

4. Chuyn ng ch H trn (xo hnh c khi chuyn ng) khi dng cc phm mi tn , , ^,
+
5. Cho hnh t din c cc to nh:
A(x1,y1,z1)....(40,50,10) B(x2,y2,z2) ......(90,80,0)
C(x3,y3,z3) ....(80,10,90) D(x4,y4,z4) .....(100,50,60)
a. V hnh chiu vung gc ca n trn mt phng z=0 (xoy)
b. V hnh chiu vung gc sau khi quay n xung quanh trc oy mt gc Fi=-60
0

c. V hnh chiu Isometric ca n ln mt phng z=0 (xoy)



Ti liu tham kho


168
TI LIU THAM KHO
[1] James D.Foley, Andrie van Dam, Steven K.Feiner, Jonhn F. Hughes, Computer
Graphics Principles and Practice, Addison Wesley, 1994.
[2] Hong Kim, Dng Anh c, L nh Duy, V Hi Qun. Gio trnh c s ho
My tnh, NXB Gio dc, 2000.
[3] L Tn Hng, Hunh Quyt Thng. K thut ho my tnh, NXB khoa hc v k
thut, 2002.
[4] Steven Harrington, Computer Graphics A Programming Approach, McGraw Hill
International Edition, 1987.
[5] Gerald Farin, Curves and Surfaces for Computer Aided Geometric Design A Practical
Guide, Academic Press Inc, 1990.
Mc lc


169
MC LC
LI NI U........................................................................................................................ 3
CHNG 1: TNG QUAN V K THUT HO...................................................... 4
1. CC KHI NIM TNG QUAN CA K THUT HO MY TNH
(COMPUTER GRAPHICS)......................................................................................................... 4
1.1. L ch s pht trin.................................................................................................... 4
1.2. K thut ha vi tnh. ......................................................................................... 5
2. CC K THUT HO.......................................................................................... 5
2.1. K thut ho im (Sample based-Graphics) .................................................... 5
2.2. K thut ho vector............................................................................................. 6
2.3. Phn loi ca ho my tnh................................................................................ 8
2.4. Cc ng dng tiu biu ca k thut ha............................................................ 9
2.5. Cc chun giao din ca h ho........................................................................ 11
3. PHN CNG HO (GRAPHICS HARDWARE)............................................... 11
3.1. Cc thnh phn phn cng ca h ho tng tc.............................................. 11
3.2. My in.................................................................................................................... 12
3.3. Mn hnh CRT....................................................................................................... 12
3.4. Mn hnh tinh th lng (Liquid Crystal Display LCD) ...................................... 15
Tm tt chng: ............................................................................................................... 16
Bi tp:.............................................................................................................................. 16
Bi tp trc nghim:.......................................................................................................... 17
CHNG 2: CC GII THUT SINH THC TH C S............................................ 18
1. CC I TNG HO C S.......................................................................... 18
1.1. H to th gii thc v h to thit b.......................................................... 18
1.2. im v on thng............................................................................................... 18
2. CC GII THUT XY DNG THC TH C S.............................................. 19
2.1. Gii thut v on thng thng thng ................................................................. 19
2.2. Thut ton DDA (Digital Differential Analizer) ................................................... 19
2.3. Gii thut Bresenham............................................................................................ 20
2.4. Gii thut trung im-Midpoint............................................................................. 22
2.5. Gii thut sinh ng trn (Scan Converting Circles)(Bresenham)...................... 24
2.7. Gii thut sinh ng trn Midpoint ..................................................................... 26
2.8. Gii thut sinh ng ellipse................................................................................ 27
2.9. Gii thut sinh k t ............................................................................................. 30
Mc lc


170
2.10. Gii thut sinh a gic (Polygon) .........................................................................32
Tm tt chng: ................................................................................................................36
Bi tp: ..............................................................................................................................36
Bi tp trc nghim:...........................................................................................................37
CHNG 3: CC PHP BIN I HO...................................................................41
1. CC PHP BIN I HNH HC HAI CHIU........................................................41
1.1. Php bin i Affine (Affine Transformations) .....................................................41
1.2. Cc php bin i i tng...................................................................................41
2. TA NG NHT V CC PHP BIN I .................................................45
2.1. To ng nht ....................................................................................................45
2.2. Php bin i vi to ng nht ........................................................................46
3. CC PHP BIN I HNH HC BA CHIU .........................................................47
3.1.Biu din im trong khng gian 3 chiu................................................................47
3.2. Php tnh tin..........................................................................................................47
3.3. Php t l.................................................................................................................48
3.4. Php bin dng .......................................................................................................48
3.5. Php ly i xng...................................................................................................48
3.6. Php quay 3 chiu...................................................................................................49
Tm tt: .............................................................................................................................53
Bi tp: ..............................................................................................................................54
Bi tp trc nghim:...........................................................................................................55
CHNG 4: CC GII THUT HO C S...........................................................59
1. H TA V M HNH CHUYN I...............................................................59
1.1. Cc h thng to trong ho...........................................................................59
1.2. Php nh x t ca s vo cng xem......................................................................61
2. CC GII THUT XN TI (CLIPPING) ................................................................62
2.1. Khi nim...............................................................................................................62
2.2. Clipping im.........................................................................................................63
2.3. Xn ta on thng..................................................................................................63
2.4. Gii thut xn ta a gic (Sutherland Hodgman) ..................................................69
Tm tt chng: ................................................................................................................73
Bi tp: ..............................................................................................................................74
Bi tp trc nghim:...........................................................................................................74
CHNG 5: PHP CHIU PROJECTION.......................................................................79
1. KHI NIM CHUNG...................................................................................................79
1.1.Nguyn l v 3D (three-Dimension) .......................................................................79
1.2. c im ca k thut ho 3D ..........................................................................79
Mc lc


171
1.3.Cc phng php hin th 3D................................................................................. 79
2.PHP CHIU................................................................................................................ 81
3. PHP CHIU SONG SONG (Parallel Projections ).................................................... 83
3.1.Php chiu trcgiao(Orthographic projection.......................................................... 83
3.2. Php chiu trc lung (Axonometric) ................................................................... 84
3.3. Php chiu xin - Oblique ..................................................................................... 87
4. PHP CHIU PHI CNH (Perspective Projection) ................................................. 89
4.1. Php chiu phi cnh mt tm chiu..................................................................... 91
4.2. Php chiu phi cnh hai tm chiu ...................................................................... 91
4.3. Php chiu phi cnh ba tm chiu ....................................................................... 92
Tm tt chng: ............................................................................................................... 93
Bi tp:.............................................................................................................................. 93
Bi tp trc nghim:.......................................................................................................... 94
CHNG 6: MU SC TRONG HO ...................................................................... 99
1. NH SNG V MU SC (light and color)............................................................. 99
1.1. Quan nim v nh sng.......................................................................................... 99
1.2. Yu t vt l .......................................................................................................... 99
1.3. Cm nhn mu sc ca con ngi (Physiology - Sinh l - Human Vision) ........ 101
1.4. Cc c trng c bn ca nh sng...................................................................... 103
2. NH SNG N SC............................................................................................. 104
2.1. Cng sng v cch tnh................................................................................. 104
2.2. Php hiu chnh gama.......................................................................................... 104
2.3. Xp x bn tng - halftone ................................................................................... 105
2.4. Ma trn Dither v php ly xp x bn tng ........................................................ 107
3. CC H MU TRONG MN HNH HA....................................................... 108
3.1. M hnh mu RGB (Red, Green, Blue - , lc, lam)......................................... 108
3.2. M hnh mu CMY (Cyan, Magenta, Yellow - xanh tm, ti, vng) .......... 109
3.3. M hnh mu YIQ............................................................................................... 110
3.4. M hnh mu HSV (Hue, Saturation,Value) - M thut...................................... 110
3.5. Biu mu CIE (1931 Commission Internationale de lEclairage) ............... 112
4. CHUYN I GIA CC H MU...................................................................... 115
4.1. Chuyn i HSV - RGB...................................................................................... 115
4.2. Chuyn i RGB sang XYZ................................................................................ 116
Tm tt: .......................................................................................................................... 117
Bi tp:............................................................................................................................ 118
Bi tp trc nghim:........................................................................................................ 118
CHNG 7: NG CONG V MT CONG TRONG 3D......................................... 120
Mc lc


172
1. NG CONG - CURVE.........................................................................................120
1.1. im biu din ng cong (curve represents points )......................................120
1.2. ng cong a thc bc ba tham bin .................................................................120
1.3. ng cong Hermite............................................................................................121
1.4. ng cong Bezier...............................................................................................122
1.5. ng cong B-spline............................................................................................124
2. M HNH B MT (Surface) V CC PHNG PHP XY DNG................130
2.1. Cc khi nim c bn ...........................................................................................130
2.2. Biu din mnh t gic.........................................................................................130
2.3. M hnh ho cc mt cong (Surface Patches).......................................................132
2.4. Mt t cc ng cong.........................................................................................136
Tm tt: ...........................................................................................................................140
Bi tp: ............................................................................................................................141
PH LC 1.........................................................................................................................142
1. Yu cu........................................................................................................................142
2. Khi to v ng ch ho..................................................................................142
3. Cc hm c bn ...........................................................................................................143
3.1. Bng mu ca mn hnh ho. ..........................................................................143
3.2. Nguyn s im....................................................................................................144
3.3. Nguyn s ng .................................................................................................144
3.4. Nguyn s hnh ch nht......................................................................................144
3.5. Nguyn s hnh trn .............................................................................................144
3.6. Nguyn s a gic ................................................................................................145
3.7. Nguyn s vn bn ...............................................................................................145
3.8. Ca s (viewport) .................................................................................................146
3.9. To hnh nh chuyn ng ...................................................................................146
PH LC 2.........................................................................................................................165
TI LIU THAM KHO...................................................................................................169
MC LC...........................................................................................................................170










K THUT HA
M s: 492KTH350

Chu trch nhim bn tho
TRUNG TM O TO BU CHNH VIN THNG 1

You might also like