Date post: | 05-Apr-2018 |
Category: |
Documents |
Upload: | le-anh-tuan |
View: | 214 times |
Download: | 0 times |
of 112
7/31/2019 76404645 DHMT Bai Giang Tom Tat
1/112
Bi Ging Tom Tt: Ha My Tnh
MUC LUC
Chng 1 .....................................................................................................4
GII THIU VHO A MY TINH ...................................................................4Tng quan h a my tinh ...........................................................................4
Cc ng dung cua h a my tinh .................................................................4
Cc thnh phn c ban cua hh a my tinh ................................................4
1.4 H ta th gii thc, h ta thit b v h ta chun ....................... 5
7
Chng 2 .....................................................................................................8
CC THUT TON .........................................................................................8
VE I TNG HO A C BAN .....................................................................8
2.1 Thut ton v on thng .........................................................................8
2.1.1 Thut ton DDA (Digital DifferentialAnalyzer) .........................................92.1.2 Thut ton Bresenham ......................................................................112.1.3 Thut ton MidPoint ..........................................................................14
2.2 Thut ton v ng trn ........................................................................17
2.2.1 Thut ton n gian ..........................................................................182.2.2 Thut ton MidPoint ..........................................................................19
2.3 Thut ton v Ellipse ..............................................................................21
2.4. ng cong tham s..............................................................................242.4.1. ng cong Bezier ..............................................................................24
2.4.1.1. Thut ton de Casteljau ..............................................................242.4.1.2. Thut ton Horner ......................................................................27
2.4.2. ng cong B-Spline ..........................................................................30
31
Bi tp chng 2 .........................................................................................37
Chng 3 ....................................................................................................39
T MAU ......................................................................................................39
Gii thiu vm u sc ..................................................................................39
T mu n gian .........................................................................................39
3.3 T mu theo dng qut ..........................................................................43
3.4 T mu theo bin ..................................................................................44
Bi tp chng 3 .........................................................................................46
Khoa Cng ngh Thng tin i hc Lt Trang 1
7/31/2019 76404645 DHMT Bai Giang Tom Tat
2/112
Bi Ging Tom Tt: Ha My Tnh
Chng 4 ....................................................................................................47
PHEP BIN I HAI CHIU ............................................................................47
4.1 Cc php ton c s vi ma ma trn. .......................................................47
4.2 Php tnh tin ........................................................................................48
4.3 Php bin i t l .................................................................................49
Php quay .................................................................................................49
4.5 Php i xng .......................................................................................52
4.6 Php bin dng ......................................................................................53
4.7 Php bin i Affine ngc ......................................................................54
4.8 H ta thun nht ..............................................................................55
4.9 Kt hp cc php bin i........................................................................56
Bi tp chng 4 .........................................................................................59
Chng 5 ....................................................................................................60
GIAO CC I TNG HO A .....................................................................60
Chng 6 ....................................................................................................85
HO A BA CHIU .......................................................................................85
Khoa Cng ngh Thng tin i hc Lt Trang 2
7/31/2019 76404645 DHMT Bai Giang Tom Tat
3/112
Bi Ging Tom Tt: Ha My Tnh
M U
ha my tnh l mt trong nhng lnh vc hp dn v pht trin nhanh caCng ngh Thng tin. N c ra i bi s kt hp ca 2 lnh vc thng tin v truyn
hnh, v c s dng rng ri trong hu ht cc ng dng nh khoa hc v cng ngh, yhc, gio dc, kin trc, v k c gii tr. u tin k thut ha c pht trin bi ccnhm k s s dng my tnh ln. Trong giai on u ca s pht trin ngi ta phi tnnhiu tin cho vic trang b cc thit b phn cng. Ngy nay, nh vo s tin b ca vix l, gi thnh ca my tnh cng lc cng ph hp vi ti tin ca ngi s dng trongkhi cc k thut ng dng ha ca n ngy cng cao hn nn c nhiu ngi quan tmnghin cu n lnh vc ny. Chng ta c th v ra nhng hnh nh khng ch l nh tnhm cn c th bin i thnh nhng hnh nh sinh ng qua cc php quay, tnh tin... Dovy, ha my tnh tr thnh mt lnh vc l th v c nhiu ng dng trong thc t.Tuy nhin, vic dy v hc k thut ha th khng n gin do ch ny c nhiu
phc tp, quan n tin hc v ton hc bi v hu ht cc gii thut v, t mu cng ccphp bin hnh u c xy dng da trn nn tng ca hnh hc khng gian hai chiuv ba chiu.
Gio trnh ha my tnh l mt mn hc c ging dy cho sinh vin chuynngnh Cng ngh Thng tin vi 45 tit l thuyt v 30 tit thc tp. Ni dung ca giotrnh ha my tnh ny tp trung vo 2 vn chnh nh sau :
Trnh by cc thut ton v v t cc ng c bn nh ng thng, a gic,ng trn, ellipse v cc ng Bezier, B-Spline. Cc thut ton ny gip cho
sinh vin c th t mnh thit k v v t mt hnh no . Ni dung th hai cp n ha hai chiu bao gm cc php bin iAffine, tm giao cc i tng, t mu, v quan st, hin th, bin i Affinenh ba chiu.
Gio trnh ha my tnh ny c xy dng da trn kinh nghim ging dy qua v da trn ti liu tham kho chnh l : Donald Hearn, M. Pauline Baker;Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986.
Trong qu trnh bin son chc khng trnh khi s st, ti xin trn trng nhnc s gp ca cc qu ng nghip v sinh vin gio trnh ngy cng c honthin hn.
Khoa Cng ngh Thng tin i hc Lt Trang 3
7/31/2019 76404645 DHMT Bai Giang Tom Tat
4/112
Bi Ging Tom Tt: Ha My Tnh
Chng 1
GII THIU V HOA MY TINH
Ni dung chnh
Tng quan v ha my tnh. Cc ng dng ca ha my tnh. Cc thnh phn c bn ca h ha my tnh. H ta thc v h ta ha.
Tng quan ha my tnh
ha my tnh l tt c nhng g lin quan n vic s dng my tnh pht sinh
ra hnh nh. Cc vn lin quan n cng vic ny bao gm: to, lu tr, thao tc trncc m hnh v cc nh.
Ngy nay, hu ht cc chng trnh son tho, bng tnh s dng ha trong giaodin vi ngi dng. S pht trin ca ha my tnh ngy cng rng ri vi cc ch ha hai chiu (2D) v 3 chiu (3D), v cao hn, n phc v trong cc lnh vc x hihc khc nhau nh khoa hc, gio dc, y hc, k thut, thng mi v gii tr. Tnh hpdn v a dng ca ha my tnh c th c minh ha rt trc quan thng qua vickho st cc ng dng ca n.
Cc ng dng ca ha my tnhNgy nay, ha my tnh c s dng trong rt nhiu lnh vc khc nhau nh
cng nghi p, thng mi, qun l, gio dc, gii tr, S lng cc chng trnh hang dng rt ln v pht trin lin tc. Sau y l mt s ng dng tiu biu:
H tr thit k Biu din thng tin Gii tr, ngh thut Gio dc, o to Giao tip gia ngi v my tnh
Cc thnh phn c bn ca h ha my tnh
2.1 Phn cng
Thit b thu nhn: bn phm, chut, my qut, camera, ... Thit b hin th: cc loi mn hnh CRT, LCD, Thit b tng tc: gng tay, knh 3D,
Khoa Cng ngh Thng tin i hc Lt Trang 4
7/31/2019 76404645 DHMT Bai Giang Tom Tat
5/112
Bi Ging Tom Tt: Ha My Tnh
2.2 Phn mm
Phn mm ha c th phn thnh 2 loi: cc cng c l p trnh v cc trnh ngdng ha phc v cho mt mc ch no . Cc cng c l p trnh cung cp mt t pcc th vin ha c th c dng trong cc ngn ng l p trnh cp cao nh Pascal,
C/C++/C#, Java, hay thm tr c c mt th vin ha c th nhng vo cc ngnng l p trnh cp bt k nh OpenGL, DirectX. Cc hm c s ca n bao gm vic tocc i tng c s ca hnh nh nh on thng, a gic, ng trn, thay i musc, chn khung nhn, bin i affine,
pht trin cc ng dng ha my tnh cn c cc loi phn mm sau:
To m hnh: 3DS Max, Maya, L p trnh, pht trin ng dng: OpenGL, DirectX,
1.4 H ta th gii thc, h ta thit b v h ta chunMt h ha c m t bao gm 3 min nh sau:
Min iu khin : bao bc ton b h thng. Min thc : nm trong min iu khin. Khi mt s no thm nhp vo
min thc, n s c chuyn thnh s thc du phy ng, v khi c mt sri khi min ny th n s c chuyn thnh s nguyn c du 16 bit.
Min hin th : nm trong min iu khin nhng phn bit vi min thc. Chc s nguyn 16 bit mi nm trong min hin th.
Trong lnh vc k thut ha, chng ta phi hiu c rng thc cht ca hal lm th no c th m t v bin i c cc i tng trong th gii thc trnmy tnh. Bi v, cc i tng trong th gii thc c m t bng ta thc. Trongkhi , h ta thit b li s dng h ta nguyn hin th cc hnh nh. y chnhl vn c bn cn gii quyt. Ngoi ra, cn c mt kh khn khc na l vi cc thitb khc nhau th c cc nh ngha khc nhau. Do , cn c mt phng php chuyni tng ng gia cc h ta v i tng phi c nh ngha bi cc thnh phnn gin nh th no c th m t gn ng vi hnh nh thc bn ngoi.
Hai m hnh c bn ca ng dng ha l da trn mu s ha v da trn c
trng hnh hc. Trong ng dng ha da trn mu s ha th cc i tng hac to ra bi li cc pixel ri rc. Cc pixel ny c th uc to ra bng cc chngtrnh v, my qut, ... Cc pixel ny m t ta xc nh v tr v gi tr mu. Thun lica ng dng ny l d dng thay i nh bng cch thay i mu sc hay v tr ca ccpixel, hoc di chuyn vng nh t ni ny sang ni khc. Tuy nhin, iu bt li l khngth xem xt i tng t cc gc nhn khc nhau. ng dng ha da trn c trnghnh hc bao gm cc i tng ha c s nh on thng, a gic,.... Chng c
Khoa Cng ngh Thng tin i hc Lt Trang 5
7/31/2019 76404645 DHMT Bai Giang Tom Tat
6/112
Bi Ging Tom Tt: Ha My Tnh
lu tr bng cc m hnh v cc thuc tnh. V d : on thng c m hnh bng haiim u v cui, c thuc tnh nh mu sc, dy. Ngi s dng khng thao tc trctip trn cc pixel m thao tc trn cc thnh phn hnh hc ca i tng.
1.1. H ta th gii thc
Mt trong nhng h ta thc thng c dng m t cc i tng trong thgii thc l h ta Descartes. Vi h ta ny, mi im P c biu din bng mtcp ta (xp,yp) vi xp, ypR (xem hnh 1.1).
Trong :
Ox : gi l trc honh. Oy : gi l trc tung. xp : honh im P. yp : tung im P.
1.2. H ta thit b
H ta thit b c dng cho mt thit b xut c th no , v d nh my in,mn hnh,.. Trong h ta thit b th cc im cng c m t bi cp ta (x,y).Tuy nhin, khc vi h ta thc l x, y N. iu ny c ngha l cc im trong hta thc c nh ngha lin tc, cn cc im trong h ta thit b l ri rc.Ngoi ra, cc ta x, y ca h ta thit b ch biu din c trong mt gii hn no ca N.
Khoa Cng ngh Thng tin i hc Lt Trang 6
7/31/2019 76404645 DHMT Bai Giang Tom Tat
7/112
Bi Ging Tom Tt: Ha My Tnh
V d : phn gii ca mn hnh trong ch ha l 640x480. Khi ,x(0,640) v y(0,480) (xem hnh 1.2).
1.3. H ta thit b chun
Do cch nh ngha cc h ta thit b khc nhau nn mt hnh nh hin th ctrn thit b ny l chnh xc th cha chc hin th chnh xc trn tht b khc. Ngi taxy dng mt h ta thit b chun i din chung cho tt c cc thit b c th mt cc hnh nh m khng ph thuc vo bt k thit b no.
Trong h ta chun, cc ta x, y s c gn cc gi tr trong on t [0,1].Nh vy, vng khng gian ca h ta chun chnh l hnh vung n v c gc tridi (0, 0) v gc phi trn l (1, 1).
Qu trnh m t cc i tng thc nh sau (xem hnh 1.3):
Khoa Cng ngh Thng tin i hc Lt Trang 7
7/31/2019 76404645 DHMT Bai Giang Tom Tat
8/112
Bi Ging Tom Tt: Ha My Tnh
Chng 2
CC THUT TON
VE I TNG HOA C BAN
Ni dung chnh
Cc thut ton v on thng. Thut ton MidPoint v ng trn, ellipse.
2.1 Thut ton v on thng
Xt on thng c h s gc 0
7/31/2019 76404645 DHMT Bai Giang Tom Tat
9/112
Bi Ging Tom Tt: Ha My Tnh
2.1.1 Thut ton DDA (Digital DifferentialAnalyzer)
DDA l thut ton tnh ton cc im v dc theo ng thng da vo h s gcca phng trnh ng thng y=mx+b.
Trong : m= y/x, y = yi+1 - yi , x = xi+1 - xi
Nhn thy trong hnh v 2.1 th ta ca im x s tng 1 n v trn mi im v,cn vic quyt nh chn yi +1 l yi +1 hay yi s ph thuc vo gi tr sau khi lm trn catung y. Tuy nhin, nu tnh trc tip gi tr thc ca y mi bc t phng trnhy=mx+b th cn mt php ton nhn v mt php ton cng s thc.
yi +1 = mxi +1 + b = m(xi + 1) + b = mxi + b + m
ci thin tc , ngi ta kh php nhn trn s thc.
Ta c : yi = mxi + b
yi +1 = yi + m int (yi +1)
Tm li khi 0
7/31/2019 76404645 DHMT Bai Giang Tom Tat
10/112
Bi Ging Tom Tt: Ha My Tnh
yi +1:= yi 1
Hnh 2.2 : Hai trng hp m>1 v 0
7/31/2019 76404645 DHMT Bai Giang Tom Tat
11/112
Bi Ging Tom Tt: Ha My Tnh
end
end;
Tng t, c th tnh ton cc im v cho trng hp m
7/31/2019 76404645 DHMT Bai Giang Tom Tat
12/112
Bi Ging Tom Tt: Ha My Tnh
Pi = x (d1 - d2) = x[2m(xi+1) + 2b - 2yi - 1]
= 2y(xi+1) - 2x.yi + x(2b - 1)
= 2y.xi - 2x.yi + 2y + x(2b - 1)
Vy C = 2y + x(2b - 1) = Const
Pi = 2y.xi - 2x.yi + C
Nhn xt rng nu ti bc th i ta xc nh c du ca Pi th xem nh ta xc nhc im cn chn bc (i+1). Ta c :
Pi +1 - Pi = (2y.xi+1 - 2x.yi+1 + C) - (2y.xi - 2x.yi + C )
Pi +1 = Pi + 2y - 2x ( yi+1 - .yi )
- Nu Pi < 0 : chn im P1, tc l yi +1= yi v Pi +1 = Pi + 2y.
- Nu Pi 0 : chn im P2, tc l yi +1= yi +1 v Pi +1 = Pi + 2y - 2x
- Gi tr P0 c tnh t im v u tin (x0, y0 ) theo cng thc :
P0 = 2y.x0 - 2x.y0 + C
Do (x0 ,y0 ) l im nguyn thuc v on thng nn ta c :
Th vo phng trnh trn ta c :
P0 = 2y x
Ci t minh ha thut ton Bresenham
Procedure Bres_Line (x1,y1,x2,y2 : integer);
Var dx, dy, x, y, P, const1, const2 : integer;
Begin
Khoa Cng ngh Thng tin i hc Lt Trang 12
7/31/2019 76404645 DHMT Bai Giang Tom Tat
13/112
Bi Ging Tom Tt: Ha My Tnh
dx : = x2 - x1; dy : = y2 - y1;
P : = 2*dy - dx;
Const1 : = 2*dy ; const2 : = 2*(dy - dx) ;
x:= x1; y:=y1;
Putpixel ( x, y, Color);
while (x < x-2 ) do
begin
x : = x +1 ;
if (P < 0) then P : = P + const1
else
begin
y : = y+1 ;
P : = P + const2
end ;
putpixel (x, y, color) ;
end ;
End ;
Nhn xt :
Thut ton Bresenham ch thao tc trn s nguyn v ch tnh ton trn php cngv php nhn 2. iu ny l mt ci tin lm tng tc ng k so vi thut tonDDA.
tng chnh ca thut ton ny l ch xt du Pi quyt nh im k tip,v s dng cng thc truy hi Pi +1 - Pi tnh Pi bng cc php ton n gintrn s nguyn.
Tuy nhin, vic xy dng trng hp tng qut cho thut ton Bresenham c phctp hn thut ton DDA.
Khoa Cng ngh Thng tin i hc Lt Trang 13
7/31/2019 76404645 DHMT Bai Giang Tom Tat
14/112
Bi Ging Tom Tt: Ha My Tnh
2.1.3 Thut ton MidPoint
Thut ton MidPoint c Pitteway cng b 1967, Van Aken ci tin 1984. Gi s ta chn P v, xc nh pixel tip theo ti N hay NE. Giao ca ng thng vi Xp+1 tiQ, M l trung im ca NE v E.
tng: M nm pha no ca ng thng, nu M pha trn ng thng th chn E,ngc li chn NE.
Nhim v: Xc nh M u.
Hnh 2.4: Thut ton MidPoint v on thng
Phng trnh ng thng: F(x,y)=ax+by+c
a = dy, b = - dx, c = B.dx
Gi tr hm ti M: F(M)=F(xp+1, yp+1/2) = do Nu d > 0, M nm di ng thng th chn NE.o Nu d < 0, M nm pha trn th chn E.
o Nu d = 0, chn E hay NE ty . Gi tr ca hm ti M ca ca im tip theo s v
o Gi gi tr d va tnh l:
o Gi s va chn E:
Khoa Cng ngh Thng tin i hc Lt Trang 14
7/31/2019 76404645 DHMT Bai Giang Tom Tat
15/112
Bi Ging Tom Tt: Ha My Tnh
o Gi s va chn NE:
dnew=dold + a + b = dold + (dy - dx)
(dy dx) l s gia ca im tip theo
Tnh gi tr khi u ca do Gi s v on thng t (x0, y0) n (x1, y1) trung im th nht c ta (x0+1, y0+1/2)
o F(x0, y0) = 0 dstart = a + b/2 = dy dx/2o
Trnh s thp phn ca dstart, nh ngha li hm nh sauF(x,y)=2(ax+by+c)
o Do vy, ta c
dstart = 2dy - dx; E = 2dy; NE = 2(dy - dx)
Ci t minh ha thut ton MidPoint
procedure MidpointLine(x0, y0, x1, y1,
color: integer)
var
dx, dy, x, y, d, incrE, incrNE:
Khoa Cng ngh Thng tin i hc Lt Trang 15
7/31/2019 76404645 DHMT Bai Giang Tom Tat
16/112
Bi Ging Tom Tt: Ha My Tnh
integer;
begin
dx := x1 x0;
dy := y1 y0;
d := 2*dy-dx;
incrE := 2*dy;
incrNE := 2*(dy-dx);
x :=x0;
y :=y0;
WritePixel(x, y, color);
while x
7/31/2019 76404645 DHMT Bai Giang Tom Tat
17/112
Bi Ging Tom Tt: Ha My Tnh
end
WritePixel(x, y, color);
end {while}
end;
2.2 Thut ton v ng trn
Trong h ta Descartes, phng trnh ng trn bn knh R c dng:
Vi tm O(0,0) : x2 + y2 = R2
Vi tm C(xc, yc): (x - xc)2 + (y - yc )2 = R2
Trong h ta cc :
x = xc + R.cos y = yc + Y.sin
vi [0, 2].
Hnh 2.5: 8 im i xng trong ng trn
Do tnh i xng ca ng trn C (xem hnh 2.5) nn ta ch cn v 1/8 cung trn, sau ly i xng qua 2 trc ta v 2 ng phn gic th ta v c c ng trn.
Khoa Cng ngh Thng tin i hc Lt Trang 17
7/31/2019 76404645 DHMT Bai Giang Tom Tat
18/112
Bi Ging Tom Tt: Ha My Tnh
2.2.1 Thut ton n gin
Cho x = 0, 1, 2, ..., int(2
2R ) viR > 1.
Ti mi gi tr x, tnh int(y =22 xR ).
V im (x,y) cng 7 im i xng ca n.
Ci t minh ha thut ton n gin
Procedure Circle (xc, yc, R : integer) ;
Var x, y : integer ;
Procedure DOIXUNG ;
Begin
putpixel (xc + x , yc +y, color) ;
putpixel (xc - x , yc + y, color) ;
putpixel (xc + x , yc - y, color) ;
putpixel (xc - x , yc- y, color) ;
putpixel (xc + y , yc + x, color) ;
putpixel (xc - y , yc + x, color) ;
putpixel (xc + y , yc - x, color) ;
putpixel (xc - y , yc - x, color) ;
End
Begin
For x :=0 to round(R*Sqrt(2)/2) do
Begin
y : = round(Sqrt(R*R - x*x)) ;
Khoa Cng ngh Thng tin i hc Lt Trang 18
7/31/2019 76404645 DHMT Bai Giang Tom Tat
19/112
Bi Ging Tom Tt: Ha My Tnh
DOIXUNG;
End ;
End ;
2.2.2 Thut ton MidPoint
Do tnh i xng ca ng trn nn ta ch cn v 1/8 cung trn, sau ly ixng l v c c ng trn. Thut ton MidPoint a ra cch chn y i+1 l yi hay yi-1bng cch so snh im thc Q(xi+1,y) vi im gia MidPoind l trung im ca S1 vS2. Chn im bt u v l (0,R). Gi s (x i, yi) l im nguyn tm c bcth i (xem hnh 2.6), th im (xi+1, yi+1) bc i+1 l s la chn gia S1 v S2.
Hnh 2.6 : ng trn vi im Q(x +1, y) v im MidPoint.t F(x,y) = x2 + y2 - R2, ta c :
F(x,y) < 0 , nu im (x,y) nm trong ng trn. F(x,y) = 0 , nu im (x,y) nm trn ng trn. F(x,y) > 0 , nu im (x,y) nm ngoi ng trn.
Khoa Cng ngh Thng tin i hc Lt Trang 19
7/31/2019 76404645 DHMT Bai Giang Tom Tat
20/112
Bi Ging Tom Tt: Ha My Tnh
Xt Pi = F(MidPoint) = F(xi +1, y- 1/2). Ta c :
Nu Pi < 0 : im MidPoint nm trong ng trn. Khi , im thc Q gn viim S1 hn nn ta chn yi+1 = yi.
Nu Pi >= 0 : im MidPoint nm ngai ng trn. Khi , im thc Q gn vi
im S2 hn nn ta chn yi+1 = yi - 1.
Mt khc :
Pi+1 - Pi = F(xi+1+1, yi+1 - 1/2) - F(xi + 1, yi - 1/2)
= [(xi+1 +1)2 + (yi+1 - 1/2)2 - R2 ] - [(xi +1)2 + (yi - 1/2)2 - R2]
= 2xi + 3 + ((yi+1)2+ (yi)2 ) - (yi+1 - yi)
Vy :
Nu Pi < 0 : chn yi+1 = yi. Khi , Pi+1 = Pi + 2xi + 3 Nu Pi >= 0 : chn yi+1 = yi - 1. Khi , Pi+1 = Pi + 2xi - 2yi + 5. Pi ng vi im ban u (x0, y0) = (0, R) l:
P0 = F(x0 + 1, y0 - 1/2) = F(1, R - 1/2) = 5/4 R
Minh ha thut ton MidPoint
Procedure DTR(xc, yc, r, mau : integer);
var x, y, p : integer ;
Begin
x:=0 ; y:=r;
p:=1 - r;
while ( y > x) do
begin
doi_xung;
if (p < 0) then p:=p + 2*x + 3
else begin
Khoa Cng ngh Thng tin i hc Lt Trang 20
7/31/2019 76404645 DHMT Bai Giang Tom Tat
21/112
Bi Ging Tom Tt: Ha My Tnh
p := p + 2*(x - y) + 5 ;
y :=y - 1;
end;
x := x + 1;
end; {while}
End;
2.3 Thut ton v Ellipse
Phng trnh elp c tm ti gc ta
p dng gii php trung im v ng trn v elp. Tnh i xng ca elp: khi bitta 1 im c th d dng suy ra ta ba im khc.
Hnh 2.7: Phn chia hai min ca ellipse
Tm ranh gii hai min trong elp
V tr: im P l tip im ca tip tuyn c h s gc 1 Xc nh: Vc t vung gc vi tip tuyn ti tip im -> gradient
Ti P1 cc thnh phn i v j ca vc t gradient c cng ln.
tng: nh gi hm ti im gia hai ta pixel chn v tr tip theo v. Duca n cho bit im gia nm trong hay ngoi elp.
Khoa Cng ngh Thng tin i hc Lt Trang 21
7/31/2019 76404645 DHMT Bai Giang Tom Tat
22/112
Bi Ging Tom Tt: Ha My Tnh
Vi vng 1
Hnh 2.8: Phn tch v hai min ca ellipse
Tnh bin quyt nh d = F(x, y) = F(xp + 1, yp - 1/2) Nu d < 0: chn E, x tng 1, y khng thay i.
Nu d0: chn SE, x tng 1, y gim 1.
Vi vng 2:
Tnh bin quyt nh d = F(x, y) = F(xp + 1/2, yp - 1)o Nu d < 0: chn SE, x tng 1, y gim 1.o Nu d 0: chn S, x khng tng, y gim 1.
Tm s gia nh vng 1 S = a2(-2yp + 3) SE = b2(2xp + 2) + a2(-2y + 3)
Tm gi tr khi u ca s gia d
Min 1:o Gi s a, b nguyn; im bt u v l (0, b)o im gia th nht: (1, b - 1/2)
Khoa Cng ngh Thng tin i hc Lt Trang 22
7/31/2019 76404645 DHMT Bai Giang Tom Tat
23/112
Bi Ging Tom Tt: Ha My Tnh
Min 2: Ph thuc vo im gia (xp+1, yp-1/2) ca im tip theo im cuicng ca min 1.
Minh ha thut ton MidPoint v Ellipse
procedure draw_ellipse(a, b, color: integer);
var x, y: integer; d1, d2: real;beginx:=0; {Khi ng}y:=b;d1:=b2-a2b+a2/4;EllipsePoints(x, y, color);while (a2(y-1/2)>b2(x+1)) do {Vng 1}begin
if d10 do {Vng 2}begin
if d2
7/31/2019 76404645 DHMT Bai Giang Tom Tat
24/112
Bi Ging Tom Tt: Ha My Tnh
y:=y-1endelsebegin
d2:=d2+a2(-2*y+3);
y:=y-1endEllipsePoints (x, y, color);end {Vng 2}
end
2.4. ng cong tham s
2.4.1. ng cong Bezier
2.4.1.1. Thut ton de CasteljauThut ton de Casteljau s dng mt dy cc im iu khin xy dng vi m gi trt trong on [0, 1] tng ng vi mt im P(t). Do , thut ton sinh ra mt dy ccim t t p cc im cho trc. Khi cc im iu khin thay i, ng cong s thayi theo. Cch xy dng da trn mt lot cc php ni suy tuyn tnh v do rt ddng giao tip. Ngoi ra, phng php cng suy ra nhiu tnh cht hu ch ca ngcong.
Parabol da trn ba im
Trong mt phng R2xt ba imP0, P1, P2. t
Trong , t [0, 1]. Ni cch khc, vi mi t [0, 1], cc im )(10 tP , )(1
1 tP nm trncc on thng P0P1 v P1P2 tng ng.
Khoa Cng ngh Thng tin i hc Lt Trang 24
7/31/2019 76404645 DHMT Bai Giang Tom Tat
25/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.9: ng cong Bezier xc nh bi ba im iu khin
L p li php ni suy tuyn tnh trn cc im mi )(10 tP v )(1
1 tP ta c:
Qu tch ca )(:)( 20 tPtP = khi t thay i trong on [0, 1] s cho ta ng cong nhhnh (b) trn.
D dng ch ra rng
Suy raP(t) l ng cong parabol theo bin t.
V d: Phng trnh ng cong BezierP(t) tng ng ba im iu khin P0(0, 0),P1(2,2),P2(6, 0) l
Khoa Cng ngh Thng tin i hc Lt Trang 25
7/31/2019 76404645 DHMT Bai Giang Tom Tat
26/112
Bi Ging Tom Tt: Ha My Tnh
Tng qut cho trng hp s im iu khin 3 ta c:
Thut ton de Casteljau cho L + 1 im iu khin
Trong mt phng R2xtL+1 im P0, P1,..., PL. Vi mi gi tr t cho trc, ta xy dngtheo quy np ng cong )(0 tP
L nh sau:
1. [Khi to] t r = 0 v ir
iPtP =:)( vi mi i=0, 1, , L-r.
2. [Kt thc?] Nu r = L dng; ngc li t
3. Thay rbi r+1 v chuyn sang bc 2.
Minh ha thut ton Casteljau
Casteljau(float t)Begin
Point2D Q[MaxVertices];int i, r;for (i = 0; i
7/31/2019 76404645 DHMT Bai Giang Tom Tat
27/112
Bi Ging Tom Tt: Ha My Tnh
ve ng cong Bezier ta ch cn p dng gi hm Casteljau trong th tucDrawCurve sau:
DrawCurve(float a, float b, int NumPoints)Begin
float Delta = (b - a)/(float)NumPoints;float t = a;int i;moveto(Casteljau(t).x, Casteljau(t).y);for (i = 1; i
7/31/2019 76404645 DHMT Bai Giang Tom Tat
28/112
Bi Ging Tom Tt: Ha My Tnh
l a thc Bernstein, v
k
Ll t hp ch p kcaL phn t.
V d, t nh ngha trn, ta c cc a thc Bernstein bc ba:
th minh ha ca bn a thc ny khi t [0, 1]:
Khoa Cng ngh Thng tin i hc Lt Trang 28
7/31/2019 76404645 DHMT Bai Giang Tom Tat
29/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.10 . Cc a thc Bernstein bc ba
V d phng trnh tham s ca ng cong Bezier tng ng bn im iu khinP0(0,0),P1(2, 3),P2(6, 0),P3 (9, 2) c dng:
V ng cong Bezier qua a thc Bernstein
Da vo lc Horner tnh gi tr a thc Bernstein, ta xy dng th tc xc nhng cong Bezier hiu qu hn Casteljau. Mt v d nhn lng nhau ca lc Hornertrong trng hp a thc bc ba:
Tng t vi ng cong Bezier bc ba:
trong ,s = 1 t.Nhn xt rng:
Do , ta c chng trnh tnh gi tr hm BezierP(t) trong trng hp tng qut, viNumVertices chnh l s im iu khinL+1.
Minh ha thut ton Horner
Horner_Bezier(float t)Begin
int i, L_choose_i;
Khoa Cng ngh Thng tin i hc Lt Trang 29
7/31/2019 76404645 DHMT Bai Giang Tom Tat
30/112
Bi Ging Tom Tt: Ha My Tnh
float Fact, s;Point2D Q;s = 1.0 - t;Fact = 1.0;L_choose_i = 1;
Q.x = P[0].x*s;Q.y = P[0].y*s;for(i = 1; i < NumVertices; i++)begin
Fact *= t;L_choose_i *= (NumVertices - i + 1)/i;Q.x = (Q.x + Fact*L_choose_i*P[i].x)*s;Q.y = (Q.y + Fact*L_choose_i*P[i].y)*s;
endQ.x += Fact*t*P[NumVertices].x;
Q.y += Fact*t*P[NumVertices].y;return(Q);End
2.4.2. ng cong B-Spline
Nhn xt rng ng cong Bezier iu khin mt cch ton cc, ngha l khi mtim iu khin thay i th ton b ng cong cng thay i theo. Trong thc t tamun iu khin mt cch a phng, tc l ta mong mun thay i mt on trnng cong nh hnh 2.11. iu ny ng cong Bezier khng thc hin c. Do ,
ta cn tm mt lp cc hm trn li m vn gi tnh cht tt ca a thc Bernstein v cchm ny c gi tr cha trong on [0, 1] ngi thit k iu khin a phng ngcong.
Khoa Cng ngh Thng tin i hc Lt Trang 30
7/31/2019 76404645 DHMT Bai Giang Tom Tat
31/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.11: Thay i ng cong mong mun
c th iu khin hnh dng cc hm trn, ta cn xy dng cc hm lin tcRk(t)l nhng a thc tng khc. Do ,Rk(t) trn mi khong(ti, ti+1] l a thc no . Suyra ng congP(t) l tng cc a thc tng khc vi trng lng l cc im iu khin.Chng hn, trong khong no , ng cong c dng
Trong khong k tip, c c cho bi mt tng cc a thc khc, nhng tt c cc oncong ny to thnh mt ng cong lin tc. ng cong ny c gi l ng congSpline. Trn mt h cc hm trn, ta chn xy dng cc hm trn c gi tr nh nht v
do iu khin a phng tt nht. Khi , ta gi ng cong ny lB-Spline.Mi hmB-Splinephc thuc vo m vc bc m-1, chng ta k hiuNk,m thay choRk(t).Do , phng trnh ng congB-Spline c dng:
Khoa Cng ngh Thng tin i hc Lt Trang 31
7/31/2019 76404645 DHMT Bai Giang Tom Tat
32/112
Bi Ging Tom Tt: Ha My Tnh
Nh vy, xc nh ng cong B-Spline, ta cn:
Vector knot T = (t0, t1, ..., ); L +1 im iu khinP0, P1, ..., PL; Bc m ca cc hmB-spline.
Cng thc xc hm quyB-splineNk,m
V d, xt vector Knot T=(t0 = 0,t1 = 1,t2 = 2,...) c khong cch gia cc Knot l 1. Khi:
th ca hm N0,2(t) trn on [0, 2] l cc a thc bc 1 v l mt tam gic vi ccnh (0, 0), (1, 1) v (2, 0).
Khoa Cng ngh Thng tin i hc Lt Trang 32
7/31/2019 76404645 DHMT Bai Giang Tom Tat
33/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.12: th cc hm B-spline tuyn tnh.
Trong thc t, m = 3, v m = 4 thng c s dng ng vi ng congB-Sline bc 2v bc 3.
m = 3
Khoa Cng ngh Thng tin i hc Lt Trang 33
7/31/2019 76404645 DHMT Bai Giang Tom Tat
34/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.13: th hm B-Spline bc 2(m=2)
Khoa Cng ngh Thng tin i hc Lt Trang 34
7/31/2019 76404645 DHMT Bai Giang Tom Tat
35/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 2.14: th hm B-Spline bc 3 (m=4)
Thut ton minh ha v ng cong B-Spline
Create_Knot(intm)
Begin if(NumVertices < m || NumVertices + m > Max)return;
inti; for(i = 0; i < m; i++) Knot[i] = 0; for(; i Knot[k + 1]) return 0; return 1;
end else
begin
Khoa Cng ngh Thng tin i hc Lt Trang 35
7/31/2019 76404645 DHMT Bai Giang Tom Tat
36/112
Bi Ging Tom Tt: Ha My Tnh
floatSum, Demo1, Demo2;Demo1 = Knot[k + m - 1] - Knot[k];
if(Demo1 != 0)Sum = (t - Knot[k]) * N(k, m - 1, t) / Demo1;
else
Sum = 0;Demo2 = Knot[k + m] - Knot[k + 1];
if(Demo2 != 0)Sum += (Knot[k + m] - t) * N(k + 1, m - 1, t) / Demo2;
return Sum;end
End
Brestern_Spline(floatt)Begin
Create_Knot(M); PointQ = newPoint();Q.X = 0;Q.Y = 0;
floatx = 0, y = 0; for(inti = 0; i
7/31/2019 76404645 DHMT Bai Giang Tom Tat
37/112
Bi Ging Tom Tt: Ha My Tnh
Bi tp chng 2
1. Vit chng trnh v bu tri c 10.000 im sao, mi im sao xut hinvi mt mu ngu nhin. Nhng im sao ny hin ln ri t t tt cng rt
ngu nhin.2. Vit chng trnh thc hin 2 thao tc sau :
- Khi to ch ha, t mu nn, t mu ch, nh dng ch(settextstyle(f,d,s)), xut mt chui k t ra mn hnh. i font, hng, kchthc.- Xut mt chui ra mn hnh, chui ny c t bng. (lu rng ni dung
chui k t, mu t, mu bng l c nhp t bn phm).3. Vit chng trnh v on thng AB vi mu color theo gii thut DDA.
Bit rng ta A,B, color c nhp t bn phm. Trang tr mu nn, ghi
ch cc ta A, B hai u on thng.4. Tng t nh bi tp 3 nhng s dng gii thut MidPoint. Lu cctrng hp c bit ca h s gc.
5. Tng hp bi tp 4, vit chng trnh v ng thng bng gii thutMidPoint cho tt c cc trng hp ca h s gc. Lu xt trng hp c
bit khi ng thng song song vi trc tung hay vi trc honh.6. Vit chng trnh v ng trn theo gii thut n gin.7. Vit chng trnh v ng trn theo gii thut MidPoint.8. Vit chng trnh v mt ng trn tm O bn knh R. V cc ng trn
ng tm vi O, c bn knh chy t 1 n R. Sau xo cc ng trn
ng tm ny v v cc ng trn ng tm khc i t R n 1.9. Vit chng trnh v mt ng trn tm O bn knh R. Hy v mt on
thng t tm O di R. Hy quay on thng ny quanh ng trn.10. Vit chng trnh v Elippse.11. Vit chng trnh v Elippse c bn knh ln l a, bn knh nh l b v mt
ng trn ni tip Elippse. T ng trn bng cc ng trn ng tm.Sau t elippse bng cc elippse ng tm c bn knh ln chy t b na, bn knh nh l b.
12. Vit chng trnh v mt hnh ch nht, mt hnh vung v mt hnh bnh
hnh. Yu cu ch thch ta cc nh.13. Vit chng trnh v mt tam gic. Ta cc nh c nhp t bnphm, mi cnh c mt mu khc nhau.
14. Vit chng trnh v mt a gic c n nh.15. Vit chng trnh v ng cong Bezier vi n im iu khin: P1,
P2, , Pn nh p t file text.16. Vit chng trnh v ng cong B-Spline vi n im iu khin: P1,
Khoa Cng ngh Thng tin i hc Lt Trang 37
7/31/2019 76404645 DHMT Bai Giang Tom Tat
38/112
Bi Ging Tom Tt: Ha My Tnh
P2, , Pn nh p t file text.
Khoa Cng ngh Thng tin i hc Lt Trang 38
7/31/2019 76404645 DHMT Bai Giang Tom Tat
39/112
Bi Ging Tom Tt: Ha My Tnh
Chng 3
T MAU
Ni dung chnh
C s v mu sc. Thut ton t mu theo bin FloodFill. Thut ton t mu bng dng qut Scanvert.
Gii thiu v mu scT mu mt vng l thay i mu sc ca cc im v nm trong vng cn t. Mt vngt thng c xc nh bi mt ng khp kn no gi l ng bin. Dng ng
bin n gin thng gp l a gic. Vic t mu thng chia lm 2 cng on :
Xc nh v tr cc im cn t mu. Quyt nh t cc im trn bng mu no. Cng on ny s tr nn phc tp khi
ta cn t theo mt mu t no ch khng phi t thun mt mu.
Gio trnh gii thiu 3 cch tip cn chnh t mu:
T mu theo tng im (c th gi l t mu n gin). T mu theo dng qut. T mu da theo ng bin.
T mu n ginThut ton ny bt u t vic xc nh mt im c thuc vng cn t hay khng ? Nung l im thuc vng cn t th s t vi mu mun t.
T ng trn
t ng trn th ta tm hnh vung nh nht ngoi tip ng trn bng cch xcnh im trn bn tri (xc-r, yc-r) v im di bn phi (xc+r, yc+r) ca hnh vung(xem hnh 3.1).
Thut ton
Cho i i t xc-r n xc+rCho j i t yc-r n yc+r
Tnh khong cch d gia hai im (i,j) v tm (xc,yc)Nu d
7/31/2019 76404645 DHMT Bai Giang Tom Tat
40/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 3.1: ng trn ni tip hnh vung.
T a gic
Tm hnh ch nht nh nht c cc cnh song song vi hai trc ta cha a giccn t da vo hai ta (xmin, ymin), (xmax, ymax). Trong , xmin, ymin l honh v tung nh nht, xmax, ymax l honh v tung ln nht ca cc nh ca agic.
Cho x i t xmin n xmax, y i t ymin n ymax (hoc ngc lai). Xt im
P(x,y) c thuc a gic khng ? Nu c th t vi mu cn t (xem hnh 3.2).
Hnh 3.2: a gic ni tip hnh ch nht.
Mt im nm trong a gic th s giao im t mt tia bt k xut pht t im ct bin ca a gic phi l mt s l ln. c bit, ti cc nh cc tr (cc i hay cc
Khoa Cng ngh Thng tin i hc Lt Trang 40
7/31/2019 76404645 DHMT Bai Giang Tom Tat
41/112
Bi Ging Tom Tt: Ha My Tnh
tiu ) th mt giao im phi c tnh 2 ln (xem hnh 2.5). Tia c th qua phi hay quatri. Thng thng ta chn tia qua phi.
V d : Xt a gic gm 13 nh l P0, P1, ....., P12 = P0 (xem hnh 2.5).
Hnh 3.3: a gic c 13 nh.Gi tung ca nh Pi l Pi.y . Nu :
- Pi.y < Min ( Pi+1.y, Pi-1.y) hay Pi.y > Max ( Pi+1.y, Pi-1.y) th Pi l nh cc tr.- Pi-1.y < Pi.y < Pi+1.y hay Pi-1 > Pi.y > Pi+1.y th Pi l nh n iu.- Pi = Pi+1 v Pi.y < Min( Pi+2.y, Pi-1.y) hay Pi > Max( Pi+2.y, Pi-1.y) th on [Pi, Pi+1]
l on cc tr.-
Pi = Pi+1 v Pi-1.y < Pi.y < Pi+2.y hay Pi-1 > Pi.y > Pi+2.y th on [Pi,Pi+1] l on niu.
Thut ton xc nh im nm trong a gic- Vi mi nh ca a gic ta nh du l 0 hay 1 theo qui c nh sau: nu l nh
cc tr hay on cc tr th nh s 0. Nu l nh n iu hay on n iu thnh du 1.
- Xt s giao im ca tia na ng thng t P l im cn xt vi bin ca agic. Nu s giao im l chn th kt lun im khng thc a gic. Ngc li,s giao im l l th im thuc a gic.
Minh ha thut ton xt im thuc a gic
Function PointInpoly(d: dinh; P: d_dinh; n: integer)var count, i: integer;
x_cut: longint;function next(i: integer): integer;begin
Khoa Cng ngh Thng tin i hc Lt Trang 41
7/31/2019 76404645 DHMT Bai Giang Tom Tat
42/112
Bi Ging Tom Tt: Ha My Tnh
next := (i + n + 1) mod nend;function prev(i: integer): integer;beginprev := (i + n - 1) mod n
end;
Begincount := 0;for i := 0 to n-1 do
if d[i].y = P.y thenbegin
if d[i].x > P.x thenbegin
if ((d[prev(i)].y < P.y) and (P.y < d[next(i)].y)) or
((d[prev(i)].y > P.y) and (P.y > d[next(i)].y)) thencount := count + 1;if d[next(i)].y = P.y then
if ((d[prev(i)].y < P.y) and (P.y < d[next(next(i))].y)) or((d[prev(i)].y > P.y and (P.y > d[next(next(i))].y)) then
count := count + 1;end;
end else {d[i].y = P.y}if ((d[i].y < P.y) and (P.y < d[next(i)].y)) or((d[i].y > P.y) and (P.y > d[next(i)].y)) then
beginx_cut := d[i].x + Round((d[next(i)].x - d[i].x)/ (d[next(i)].y - d[i].y) * (P.y - d[i].y));
if x_cut >= P.x then count := count + 1;end;if (count mod 2 = 0) then PointInPoly := falseelse PointInpoly := true;
End;
- Minh ha thut ton t a gic
Procedure Todg ( d:dinh; n,maubien : integer ; d: dinh; n:integer ) ;var x, y:integer;P: d_dinh;Begin
for x:=xmin to xmax dofor y:= ymin to ymax dobegin
Khoa Cng ngh Thng tin i hc Lt Trang 42
7/31/2019 76404645 DHMT Bai Giang Tom Tat
43/112
Bi Ging Tom Tt: Ha My Tnh
P.x:= x; P.y := y;if pointInpoly (d, P, n) thenif getpixel(x,y)maubien then putpixel(x,y,color);
end;End;
Nhn xt: Thut ton t n gin c u im l t rt mn v c th s dng c cho agic li hay a gic lm, hoc a gic t ct, ng trn, ellipse. Tuy nhin, gii thutny s tr nn chm khi ta phi gi hm PointInpoly nhiu ln. khc phc nhc imny ngi ta a ra thut ton t mu theo dng qut.
3.3 T mu theo dng qut
tng: S dng giao im gia cc bin a gic v ng qut nhn ra pixel ctrong a gic?
Cc bc thut ton:
- Tm ymin, ymax ln lt l gi tr nh nht, ln nht ca tp cc tung ca ccnh ca a gic cho.
- ng vi mi dng qut y = k vi k thay i t ymin n ymax, 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 : x0 ,x1 ,..., xn ,...- V cc on thng trn ng thng y = k ln lt c gii hn bi cc cp cch
qung nhau: (x0, x1), ( x1, x2 ), ....
Thut ton
ScanConvert( Polygon P, Color C)Begin
For y:=0 To ScreenYMax DoBegin
I
7/31/2019 76404645 DHMT Bai Giang Tom Tat
44/112
Bi Ging Tom Tt: Ha My Tnh
Sp xp I: X tng dn vV on thng cch qung theo mu C;
End;End;
3.4 T mu theo bin
tng
Thut ton nhm t mu vng kn, gii hn bi mu Bcolor, m s dng t lFcolor vi im (x,y) nm trong vng t mu.
Thut s dng php gi quy, ban u (x,y) c kim tra mu, nu mu ca nl Fcolor hoc Bcolor th tin trnh kt thc. Trong trng hp ngc li, im(x,y) c t vi mu Fcolor v qu trnh gi quy vi cc im lng ging ca(x,y). Cc im lng ging c s dng l 4 lng ging.
XX (x,y) X
X
4 lng ging ca (x,y): (x+1,y), (x-1,y), (x,y+1),(x,y-1)
Chng trnh minh ha
BoundaryLine(int x, int y, int Bcolor, int Fcolor)
Begin if(getPixel(x, y) Bcolor || getPixel(x, y) Fcolor)Begin
putPixel(x, y,Fcolor) = Fcolor;Boundary(x+1,y,Bcolor,Fcolor);Boundary(x-1,y,Bcolor,Fcolor);Boundary(x,y+1,Bcolor,Fcolor);Boundary(x,y-1,Bcolor,Fcolor);
EndEnd
Chng trnh kh quy
BoundaryLine(int x, int y, int Bcolor, int Fcolor)Begin
int color, count=0;Point mPT[MaxPT];
Khoa Cng ngh Thng tin i hc Lt Trang 44
7/31/2019 76404645 DHMT Bai Giang Tom Tat
45/112
Bi Ging Tom Tt: Ha My Tnh
mPT[count].x=x; mPT[count].y=y;while(count>0)Begin
count--;color = getPixel(mPT[count].x, mPT[count].y);
if(color != Bcolor || color != Fcolor)Begin
putPixel(x,y,Fcolor);mPT[count].x=x+1; mPT[count++].y=y;mPT[count].x=x-1; mPT[count++].y=y;mPT[count].x=x; mPT[count++].y=y+1;mPT[count].x=x; mPT[count++].y=y-1;
EndEnd
End
Khoa Cng ngh Thng tin i hc Lt Trang 45
7/31/2019 76404645 DHMT Bai Giang Tom Tat
46/112
Bi Ging Tom Tt: Ha My Tnh
Bi tp chng 3
1. Vit chng trnh v mt a gic n nh, xt xem mt im P no c thuc agic khng ?
2. Vit chng trnh v mt a gic n nh. T a gic bng gii thut t n gin(Tm xmin, ymin, xmax, ymax).
3. Vit chng trnh v mt ng trn. T ng trn bng gii thut t n gin.4. Vit chng trnh v mt a gic n nh. T a gic bng gii thut t bin. Lu
cho cc trng hp ca a gic : hnh ch nht, a gic li, a gic lm.5. Vit chng trnh v mt ng trn. T ng trn bng gii thut t bin.6. Vit chng trnh v mt a gic n nh. T a gic bng gii thut dng qut.7. Vit chng trnh v mt ng trn. T ng trn bng gii thut t mu theo
dng qut.8. Vit chng trnh v hai ng trn C1 v C2 ct nhau. T phn giao ca hai
ng trn . T phn b ca C2. T phn b ca C1. Lu rng 3 mu t nyphi khc nhau.
Khoa Cng ngh Thng tin i hc Lt Trang 46
7/31/2019 76404645 DHMT Bai Giang Tom Tat
47/112
Bi Ging Tom Tt: Ha My Tnh
Chng 4
PHEP BIN I HAI CHIU
Ni dung chnh
Cc php bin i ma trn. Cc php bin i Affine 2D c s. Cc php bin i 3D g p.
4.1 Cc php ton c s vi ma ma trn.
Nhc li cc php ton trn ma trn:
Cng, tr ma trn: Ch thc hin cho hai ma trn cng bc
Nhn hai ma trn: Ma trn bc n1 m1 v ma trn bc n2 m2 nhn c vi nhau num1= n2
o ma trn vung: Khng c php chia ma trn
Nu [A][X]=[Y] th [X]=[A]-1 [Y], trong [A]-1 l ma trn o ca ma trn vung[A].
[A][A]
-1
= [I] trong [I] l ma trn n v.
Tnh ||A||: Thay cc phn t ca[A] bng cc phn ph i s ca n. Phn ph i s ca phn t (aij) l:
Khoa Cng ngh Thng tin i hc Lt Trang 47
7/31/2019 76404645 DHMT Bai Giang Tom Tat
48/112
Bi Ging Tom Tt: Ha My Tnh
[Mij] c to ra nh xa hng i, ct j ca [A].
4.2 Php tnh tin
C hai quan im v php bin i hnh hc, l :
Bin i i tng : thay i ta ca cc im m t i tng theo mtqui tc no . Bin i h ta : To ra mt h ta mi v tt c cc im m t itng s c chuyn v h ta mi.
Cc php bin i hnh hc c s l : tnh tin, quay, bin i t l. Php bin i Affine
hai chiu (gi tc l php bin i) l mt nh x T bin i im P(P x, Py) thnh imQ(Qx, Qy) theo h phng trnh sau:
Dng dch chuyn i tng t v tr ny sang v tr khc. Nu gi trx v try ln lt l di theo trc honh v trc tung th ta im mi Q(x', y') sau khi tnh tin imP(x,y) s l :
(trx, try) c gi l vector tnh tin hay vector di (xem hnh 4.1).
Hay
Q = P*M +tr,
Khoa Cng ngh Thng tin i hc Lt Trang 48
7/31/2019 76404645 DHMT Bai Giang Tom Tat
49/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 4.1 : Php bin i tnh tin im P thnh Q
4.3 Php bin i t l
Php bin i t l lm thay i kch thc i tng. co hay gin ta camt im P(x,y) theo trc honh v trc tung ln lt l Sx v Sy (gi l cc h s t l),ta nhn Sx v Sy ln lt cho cc ta ca P.
Khi cc gi tr Sx , Sy nh hn 1, php bin i s thu nh i tng. Ngcli, khi cc gi tr ny ln hn 1, php bin i s phng ln i tng.
Khi Sx = Sy , ngi ta gi l php ng dng. y l php bin i boton tnh cn xng ca i tng. Ta gi l php phng i nu |S|>1 v lphp thu nh nu |S|
7/31/2019 76404645 DHMT Bai Giang Tom Tat
50/112
Bi Ging Tom Tt: Ha My Tnh
Php quay quanh gc ta
Ta c cng thc bin i ca php quay im P(x,y) quanh gc ta gc (xem hnh4.2):
Hay Q = P*M, trong :
Hnh 4.2 : Php quay quanh gc ta
Php quay quanh mt im bt k
Khoa Cng ngh Thng tin i hc Lt Trang 50
7/31/2019 76404645 DHMT Bai Giang Tom Tat
51/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 4.3 : Php quay quanh mt im bt k.
Xt im P(P.x,P.y) quay quanh im V(V.x, V.y) mt gc n imQ(Q.x,Q.y). Ta c th xem php quay quanh tm V c kt hp t php cc bin c bnsau:
Php tnh tin (-V.x, -V.y) dch chuyn tm quay v gc ta . Quay quanh gc ta O mt gc . Php tnh tin (+V.x, +V.y) a tm quay v v tr ban u.
Ta cn xc nh ta ca im Q (xem hnh 4.3).
T php tnh tin (-V.x,-V.y) bin i im P thnh P' ta c:
P' = P + V
Hay
P'.x = P.x - V.x
P'.y = P.y - V.y
Php quay quanh gc ta bin i im P' thnh Q'
Q' = P'.M
Hay
Khoa Cng ngh Thng tin i hc Lt Trang 51
7/31/2019 76404645 DHMT Bai Giang Tom Tat
52/112
Bi Ging Tom Tt: Ha My Tnh
Q'.x = P'.x*cos - P'.y*sin
Q'.y = P'.x*sin + P'.y*cos
Php tnh tin (+V.x, +V.y) bin i im Q' thnh Q ta c
Q = Q' + V
Hay
Q.x = Q'.x + V.x
Q.y = Q'.y + V.y
Q.x = (P.x - V.x)*cos - (P.y - V.y)*sin + V.x
Q.y = (P.x - V.x)*sin + (P.y - V.y)*cos + V.y
Q.x = P.x*cos - P.y*sin + V.x*(1- cos) + V.y*sin
Q.y = P.x*sin + P.y*cos - V.x*sin + V.y*(1- cos)
Vy
Q = P.M + tr.
Vi
4.5 Php i xng
Php i xng trc c th xem l php quay quanh trc i xng mt gc 1800.
Phng trnh ban u :
Khoa Cng ngh Thng tin i hc Lt Trang 52
7/31/2019 76404645 DHMT Bai Giang Tom Tat
53/112
Bi Ging Tom Tt: Ha My Tnh
Q.x = a*P.x + c*P.y + trx
Qy = b*P.x + d*P.y + try
Hay
Trc i xng l trc honh :
Ta c :
Tng t trc i xng l trc tung :
Ta c :
4.6 Php bin dng
Php bin dng lm thay i, mo m hnh dng ca cc i tng.
- Bin dng theo phng trc x s lm thay i honh cn tung gi nguyn.
V d : bin i im P(P.x, P.y) thnh im Q(Q.x, Q.y) theo phng trc x l php
bin i c biu din bi phng trnh sau:
Q.x = P.x + h*P.y
Khoa Cng ngh Thng tin i hc Lt Trang 53
7/31/2019 76404645 DHMT Bai Giang Tom Tat
54/112
Bi Ging Tom Tt: Ha My Tnh
Q.y = P.y
- Bin dng theo phng trc y s lm thay i tung cn honh gi nguyn.
Q.x = P.x
Q.y = g*P.x + P.y
4.7 Php bin i Affine ngc
Php bin i ngc dng khi phc mt php bin i thc hin. Gi Q l nh caP qua php bin i T c ma trn bin i M l : P.M.
Php bin i ngc T-1 s c ma trn bin i l M-1 l ma trn nghch o ca ma trnM.
Vi ma trn bin i Affine dng:
th ma trn nghch o l:
Php tnh tin
Khoa Cng ngh Thng tin i hc Lt Trang 54
7/31/2019 76404645 DHMT Bai Giang Tom Tat
55/112
Bi Ging Tom Tt: Ha My Tnh
Php quay
Php bin i t l
Php bin dng
4.8 H ta thun nht
Ta thun nht ca mt im trn mt phng c biu din bng b ba s t l(xh, yh, h) khng ng thi bng 0 v lin h vi cc ta (x, y) ca im bi cngthc :
Nu mt im c ta thun nht l (x,y,z) th n cng c ta thun nht l(h.x, h.y, h.z) trong h l s thc khc 0 bt k. Mt im P(x,y) s c biu din didng ta thun nht l (x,y,1). Trong h ta thun nht cc ma trn ca php bin
Khoa Cng ngh Thng tin i hc Lt Trang 55
7/31/2019 76404645 DHMT Bai Giang Tom Tat
56/112
Bi Ging Tom Tt: Ha My Tnh
i c biu din nh sau :
Php tnh tin
Php quay
Php bin i t l
Thun li ca h ta thun nht l khi ta kt hp hai hay nhiu php bin i affine thima trn hp ca nhiu php bin i c tnh bng cch nhn cc ma trn ca cc php
bin i thnh phn.
4.9 Kt hp cc php bin i
Qu trnh p dng cc php bin i lin tip to nn mt php bin i tng thc gi l s kt hp cc php bin i.
Kt hp php tnh tin
Nu ta thc hin php tnh tin ln im P c im P', ri li thc hin tip mt php
tnh tin khc ln P' c im Q. Nh vy, im Q l nh ca php bin i kt hp haiphp tnh tin lin tip.
Khoa Cng ngh Thng tin i hc Lt Trang 56
7/31/2019 76404645 DHMT Bai Giang Tom Tat
57/112
Bi Ging Tom Tt: Ha My Tnh
Vy kt hp hai php tnh tin l mt php tnh tin. T , ta c kt hp ca nhiu phptnh tin l mt php tnh tin.
Kt hp php quayTng t, ta c ta im Q l im kt qu sau khi kt hp hai php quay quanh gcta MR1(1) v MR2(2) l :
Kt hp php bin i t l
Tng t nh php tnh tin, ta c ta im Q l im c c sau hai php tnh tinM1(Sx1, Sy1), M2(Sx2, Sy2) l:
Khoa Cng ngh Thng tin i hc Lt Trang 57
7/31/2019 76404645 DHMT Bai Giang Tom Tat
58/112
Bi Ging Tom Tt: Ha My Tnh
Khoa Cng ngh Thng tin i hc Lt Trang 58
7/31/2019 76404645 DHMT Bai Giang Tom Tat
59/112
Bi Ging Tom Tt: Ha My Tnh
Bi tp chng 4
1. V mt hnh bnh hnh bng cch s dng php tnh tin. (V on thng AB, sau tnh tin AB thnh on thng CD//AB, v AD, Tnh tin AD thnh BC (xemhnh v).
2. Vit chng trnh v mt hnh vung ABCD (xem hnh v).
Tnh tin hnh vung n v tr khc. Phng to hnh vung ABCD. Bin dng hnh vung thnh hnh thoi.
3. V mt elip, sau v thm 3 elip khc c cng tm vi elip cho, c dn trc Ox l K v Oy l 1.
4. V mt elip nghing mt gc G c cc trc khng song song vi cc trc ta.
5. V mt bng hoa bng cch v cc elip nghing mt gc G vi cc mu khcnhau. V n khi no n phm bt k th ngng.
6. Vit chng trnh m phng s chuyn ng ca elip bng cch cho elip ny quayquanh tm ca n.
7. Vit chng trnh m phng s chuyn ng ca tri t quay quanh mt tri.8. Vit chng trnh v mt ng trn tm O bn knh R. V mt ng knh AB.
Quay ng knh ny quanh tm ng trn.9. Tm v tr mi ca tam gic A(1,1), B(3,2), C(2,4) qua php quay gc 30 o qua
im (5,5).
Khoa Cng ngh Thng tin i hc Lt Trang 59
7/31/2019 76404645 DHMT Bai Giang Tom Tat
60/112
Bi Ging Tom Tt: Ha My Tnh
Chng 5
GIAO CC I TNG HOA
Ni dung chnh
Khi nim window. Cc thao tc loi b phn hnh nh nm ngoi mt vng cho trc. Thit k v ci t c cc thut ton tm giao cc i tng ha: ng
thng, hnh ch nht, a gic. K thut Ray tracing.
5.1. M u
Cc hnh nh c nh ngha trn h ta th gii thc, sau c h ha vln cc h ta thit b. in hnh, mt vng ha cho php ngi s dng xc nhvng no ca hnh nh s c hin th v bn mun t n ni no trn h ta thitb. Mt vng n l hoc vi vng ca hnh nh c th c chn. Nhng vng ny cth c t nhng v tr tch bit, hoc mt vng c th c chn vo mt vng lnhn. Qu trnh bin i ny lin quan n nhng thao tc nh tnh tin, bin i t lvng c chn v xa b nhng phn bn ngoi vng c chn.
Vng c dng hnh ch nht c xc nh trong h ta th gii thc c gi lmt ca s (window). Cn vng hnh ch nht trn thit b hin th ca s nh x
n c gi l mt vng quan st (viewport).
Hnh 5.1: Ca s v vng quan st
nh x mt vng ca s vo trong mt vng quan st, kt qu l ch hin th nhngphn trong phm vi ca s. Mi th bn ngoi ca s s b loi b. Cc th tc loi b
Khoa Cng ngh Thng tin i hc Lt Trang 60
7/31/2019 76404645 DHMT Bai Giang Tom Tat
61/112
Bi Ging Tom Tt: Ha My Tnh
cc phn hnh nh nm bn ngoi bin ca s c gi l cc thut ton tm giao hocn gin c gi l clipping.
Bi ton t ra trn y cng l mt trong nhng bi ton quan trng ca hamy tnh l xc nh phn giao ca cc i tng ha: giao ca hai on thng, on
thng v hnh cha nht, a gic v hnh ch nht, Cc thut ton cn thc hin nhanhnht c th minh ha c p nht cc kt qu thay i trong ng dng ha. Phngphp gii tch c dng gii quyt cc bi ton trong chng ny.
5.2. Giao cua hai on thng
Giao ca hai ng thng i qua hai im minh ha qua th d n gin: ng thng iqua ta (4,2) v ta (2,0) c giao vi on thng i qua (0,4) v (4,0)?
Gii php
- Xc nh phng trnh ng thng qua 2 im y = ax + b, trong a = (y2-y1)/(x2-x1)
- T th d trn c: y=-2+x v y=4-x giao im ti (3, 1)
Tng qut: nu ta c y = a1 + b1x v y = a2 + b2x th giao im s ti:
xi = -(a1 - a2)/(b1 - b2)yi = a1 + b1xi
Cc trng hp c bit: song song trc x hay y, song song vi nhau.
Nu s dng phng php tm giao ng thng: i hi kim tra ta ca giao ngthng c nm trong cc on thng?
Phng php khc: biu din on thng bng tham s on thng 1 t (xA, yA) n (xB,yB) on thng 2 t (xC, yC) n (xD, yD) tnh ton giao ca 2 on thng ti ta ct, s:
Khoa Cng ngh Thng tin i hc Lt Trang 61
7/31/2019 76404645 DHMT Bai Giang Tom Tat
62/112
7/31/2019 76404645 DHMT Bai Giang Tom Tat
63/112
Bi Ging Tom Tt: Ha My Tnh
1. Ca hai u mt ca on thng nm trong hnh ch nht, chng hn AB.2. Mt trong hai u mt ca on thng nm trong hnh ch nht, chng hn
BC.3. Ca hai u mt ca on thng nm ngoi hnh ch nht nhng c giao im,
chng hn CD.
4. Ca hai u mt ca on thng nm ngoi hnh ch nht v khng c giaoim, chng hn DE.
Hai trng hp 1 v 4 gi l cc trng hp tm thng, tc l xc nh c ngayc tn ti giao im hay khng. Cc trng hp cn li ta phi tin hnh thut ton xcnh giao im s c trnh by trong phn tip theo sau.
Hnh 5.4: Hai trng hp tm thng ca giao on thng v hnh ch nht
5.3.1 Tim giao bng cch gii h phng trnh
a bi ton v xc nh giao im ca hai on thng c trnh by trong phn3.2. Theo phng php ny, chng ta cn tnh ton v kim tra nhiu kh nng; do khng hiu qu.
5.3.2 Thut ton chia nh phn
Mt tip cn l da trn c ch nh m c pht trin bi Cohen v Sutherland.
Mi im hai u mt on thng trong hnh nh s c gn mt m nh phn 4 bit,c gi l m vng, gip nhn ra vng ta ca mt im. Cc vng ny c xydng da trn s xem xt vi bin ca s, nh hnh 6-8. Mi v tr bit trong m vngc dng ch ra mt trong bn v tr ta tng ng ca im so vi ca s: bntri (left), phi (right), trn nh (top), di y (bottom). Vic nh s theo v tr bittrong m vng t 1 n 4 cho t phi sang tri, cc vng ta c th lin quan vi v trbit nh sau:
Khoa Cng ngh Thng tin i hc Lt Trang 63
7/31/2019 76404645 DHMT Bai Giang Tom Tat
64/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.5: M ha cc u mt ca on thng
Gi tr 1 bt k v tr no ch ra rng im v tr tng ng, ngc li bit v tr l 0. Nu mt im nm trong ca s, m v tr l 0000. Mt im bn di v bn trica s c m vng l 0101.
Thut ton chia nh phn1. Nu E(A)=0 v E(B)=0 kt lun AB = AB; thut ton dng.2. Nu [E(A) AND E(B)] != 0 kt lun AB = ; kt thc thut ton.3. Nu E(A)=0 v E(B) 0(tc A v B ) thc hin:
a. t C = A,D = B.b. Trong khi di ||CD|| ln hn
t M l trung im ca on CD.
Nu E(M)=0 th c p nht C = M ngc li D = M.
c. Kt lun AB = AM; kt thc thut ton.4. Nu E(A) = 0 v E(B)=0, hon i vai tr ca A v B; l p li bc 3.5. Ngc li, thc hin:
a. t C = A,D = B.b. Trong khi di ||CD|| ln hn
t M l trung im ca on CD.
Nu E(M)=0 p dng Bc 3 cho hai on MC v MD. Kt lun
AB=CD;kt thc thut ton.
Nu [E(M) AND E] != 0 t C = M.
Nu [E(M) AND E(D)] != 0 t D = M.
Nu [E AND E(D)] != 0 kt lun AB =; kt thc thut ton.
Khoa Cng ngh Thng tin i hc Lt Trang 64
7/31/2019 76404645 DHMT Bai Giang Tom Tat
65/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.6: Minh ha ca thut ton chia nh phn.
5.3.3 Thut ton Cohen-Sutherland
Xc nh nhanh on thng c cn ct xn hay khng nh cc php ton logc ANDv OR:
Kt qu php OR hai m u mt on thng cho kt qu 0: c hai im nmtrong ch nht.
Kt qu php AND hai m u mt on thng cho kt qu khc 0: c haiim nm ngoi ch nht.
Hnh 5.7: on thng giao vi hnh ch nht
Khoa Cng ngh Thng tin i hc Lt Trang 65
7/31/2019 76404645 DHMT Bai Giang Tom Tat
66/112
Bi Ging Tom Tt: Ha My Tnh
Giao ca on thng vi cc cnh ch nht song song trc tung: x c gi tr Xmin, Xmax v h s gc a = (y2 - y1)/(x2 - x1) y = y1 + a(x x1)
Giao on thng vi cc cnh song song trc honh: y c gi tr Ymin, Ymax v h s gc a = (y2 - y1)/(x2 - x1) x = x1 + (y - y1)/a
Thut ton ma hoa
EncodePoint(PointLeftTop,PointRightBottom,PointP)Begin byte code = 0; if(P.X < LeftTop.X)
Begin
code |= 8;End if(P.X > RightBottom.X)
Begincode |= 4;
End if(P.Y < RightBottom.Y)
Begincode |= 2;
End
if(P.Y > LeftTop.Y)Begincode |= 1;
End
return code;End
Thut toan Cohen-Shuterland
InterLineRectangle(PointLeftTop,PointRightBottom,PointA,PointB)
Beginbyte codeA, codeB, codeOut;
floatx = 0, y = 0;codeA = EncodePoint(LeftTop, RightBottom, A);codeB = EncodePoint(LeftTop, RightBottom, B);
while (true)begin
Khoa Cng ngh Thng tin i hc Lt Trang 66
7/31/2019 76404645 DHMT Bai Giang Tom Tat
67/112
Bi Ging Tom Tt: Ha My Tnh
if(codeA == 0 && codeB == 0)begin
returntrue;end
if((codeA & codeB) != 0)
begin returnfalse;
end
if(codeA != 0) codeOut = codeA; else codeOut = codeB;
if((codeOut & 8) != 0)//Lbegin
x = LeftTop.X;
y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);end elseif((codeOut & 4) != 0)//R
beginx = RightBottom.X;y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);
end elseif((codeOut & 2) != 0)//B
beginy = RightBottom.Y;
x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);end elseif((codeOut & 1) != 0)//T
beginy = LeftTop.Y;x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);
end
if(codeOut == codeA)begin
A.X = (int)x;A.Y = (int)y;codeA = EncodePoint(LeftTop, RightBottom, A);
end else
beginB.X = (int)x;B.Y = (int)y;
Khoa Cng ngh Thng tin i hc Lt Trang 67
7/31/2019 76404645 DHMT Bai Giang Tom Tat
68/112
Bi Ging Tom Tt: Ha My Tnh
codeB = EncodePoint(LeftTop, RightBottom, B);end
endEnd
5.3.4 Thut ton Liang-Barsky
Mt thut ton tm giao on thng v hnh ch nht hiu qu dng phng trnhtham s c pht trin bi Liang v Barsky. H ghi ch rng nu mt im (x, y)dc theo ng m nm trong ca s c nh ngha bi cc ta (xw min, ywmin) v(xwmax, ywmax), th cc iu kin sau y phi c tha:
xwmin x1 + x u xwmaxywmin y1 + y u ywmax
Bn bt phng trnh trn c th c vit li theo hnh thc sau:pku qk, k = 1, 2, 3, 4
y p v q c nh ngha nh sau:
p1 = -x, q1 = x1 - xwminp2 = -x, q2 = xwmax x1p3 = -y, q3 = y1 - ywminp4 = y, q4 = ywmax y1
Bt k on thng no song song vi mt trong cc bin ca s s c pk = 0, gi tr kph thuc vo bin ca s (k = 1, 2, 3, v 4 tng ng vi bin tri, phi, di, trn). Nuvi cc gi tr ca k, chng ta c th gp q k < 0, khi on thng s hon ton nmngoi bin v c th b loi b khi xt sau ny. Nu q k 0, ng thng tng ng nmtrong bin.
Khi pk < 0, s ko di khng gii hn ca on thng t bn ngoi vo bn trong cabin ca s ko di. Nu pk > 0, on thng tin t bn trong ra bn ngoi. Vi p k khc 0,chng ta c th tnh gi tr ca u tng ng vi im m ti on thng ko di ctbin k ko di ca ca s:
u = qk/ pk
i vi mi on thng, chng ta c th tnh cc gi tr cho cc tham s u1 v u2 xc nh phn no ca on nm bn trong ca s. Gi tr ca u1 c xc nh bng cchnhn cc cnh ca ca s xem on ko di no t ngoi vo trong (p < 0). i vi cccnh ca s, chng ta tnh rk= qk/ pk. Gi tr ca u1 l ln nht trong tp cha 0 v cc gi
Khoa Cng ngh Thng tin i hc Lt Trang 68
7/31/2019 76404645 DHMT Bai Giang Tom Tat
69/112
Bi Ging Tom Tt: Ha My Tnh
tr khc ca r. Ngc li, gi tr ca u2 c xc nh bng cch kim tra cc bin xemon no ko di no t bn trong ra bn ngoi (p > 0). Mt gi tr ca rk c tnh chomi bin ca s, v gi tr ca u2 l nh nht trong tp cha 1 v cc gi tr c tnhca r. Nu u1 > u2, on hon ton nm ngoi ca s v c th b vt b. Ngc li, ccim u mt ca on b ct c tnh t hai gi tr ca tham s u.
Thut ton ny c trnh by trong th tc sau y. Cc tham s giao im ca onc khi to cc gi tr u1 =0 v u2 = 1. i vi mi bin ca s, cc gi tr thch hpcho p v q c tnh v c dng bi hm cliptest xc nh xem on no c th bloi b hoc xem cc tham s giao im sp sa b thay i khng. Khi p < 0, tham s rc dng cp nht u1; khi p>0, tham s r c dng cp nht u2. Nu vic cp nhtu1 hoc u2 a n kt qu u1 > u2, chng ta loi b on thng. Ngc li, chng ta cpnht tham s u thch hp ch nu gi tr mi a n kt qu lm ngn on thng. Khi p= 0 v q < 0, chng ta vt b on thng bi v n song song v bn ngoi bin. Nuon thng vn cha b loi b sau tt c bn gi tr ca p v q va c kim tra xong,
cc im u mt ca on b ct c xc nh t cc gi tr ca u1 v u2.
Chng trnh minh ha thut ton Liang-Barsky
procedure clipper (var x1, y1, x2, y2 : float);
function cliptest (p, q : real; var u1, u2 : real);
Begin
result := true;
if p < 0 then begin {on t bn ngoi vo bn trong bin }
r := q / p;
if r > u2 then result := false
{hu b on hoc cp nht u1 nu thch hp}
else if r > u1 then u1 :=r
end {if p < 0}
else if p > 0 then begin {on t bn trong ra bn ngoi ca bin}
r := q / p;
if r < u1 then result := false
Khoa Cng ngh Thng tin i hc Lt Trang 69
7/31/2019 76404645 DHMT Bai Giang Tom Tat
70/112
Bi Ging Tom Tt: Ha My Tnh
else if r < u2 then u2 := r
end {if p > 0}
else
if q < 0 then result := fasle;
cliptest := result
End; {cliptest}
Begin {clipper}
u1 := 0;
u2 := 1;
dx := x2 x1;
if cliptest (-dx, x1 xwmin, u1, u2) then
if cliptest (dx, xwmax x1, u1, u2) then
begin
dy := y2 - y1;
if cliptest (-dy, y1 ywmin, u1, u2) then
if cliptest(dy, ywmax y1, u1, u2) then
begin
{nu u1 v u2 nm trong on [0,1], dng tnh cc im u mt mi}
if u2 < 1 then
begin
x2 := x1 + u2 * dx;
y2 := y1 + u2 * dy
Khoa Cng ngh Thng tin i hc Lt Trang 70
7/31/2019 76404645 DHMT Bai Giang Tom Tat
71/112
Bi Ging Tom Tt: Ha My Tnh
end; {if u2 < 1}
if u1 > 0 then
begin
x1 := x1 + u1 * dx;
y1 := y1 + u1 * dy
end; {if u1 > 0}
end {if cliptest}
End; {clipper}
Thut ton Liang v Barsky gim bt cc tnh ton cn thit ct cc on. Mi lncp nht u1 v u2 cn ch mt php chia, v cc giao im vi ca s c tnh ch mtln, khi m cc gi tr u1 v u2 va hon thnh. Tri li, thut ton ca Cohen vSutherland lp li vic tnh giao im ca on vi cc bin ca s, v mi php tnh giaoim cn c hai php chia v nhn.
5.4. Giao ca on thng v a gic li
V tr tng i ca mt im vi on thng
Trong nhiu ng dng, ta quan tm n khi nim na mt phng trong v na mtphng ngoi xc nh bi mt on thng. Khi nim ny lin quan mt thit n phpvector ca on thng.
Hnh 5.8: V tr tng i ca im Q vi on thng l.
Khoa Cng ngh Thng tin i hc Lt Trang 71
7/31/2019 76404645 DHMT Bai Giang Tom Tat
72/112
Bi Ging Tom Tt: Ha My Tnh
Phng trnh tng qut ca on thng lc dng ax + by +c = 0. K hiu:
l cc na mt phng ngoi v na mt phng trong xc nh bi l, trong D = -c, n =(a,b)t. Tiu chun kim tra im Q thuc mt na phng no ca on thng l:
Thut ton xc nh giao im on thng v a gic li
Hnh 5.9: Giao ca on thng v a gic li
Thut ton Cyrus-Beckda trn tiu chun loi b n gin bng cch xc nh v trtng i ca mt im vi mt on thng. Gi s a gic li (R) c nh ngha nhmt dy cc nhPi = (xi, yi),i=0, 1,..., L, trong h ta thc viP0 = PL. Mc ch caphn ny l loi b nhng phn ca on AB khng nm trong ca s (R) (Hnh 5.9).
K hiu li, i =0, 1,..., L, l on thng i qua hai nh lin tipPi, Pi+1. t:
Khoa Cng ngh Thng tin i hc Lt Trang 72
7/31/2019 76404645 DHMT Bai Giang Tom Tat
73/112
Bi Ging Tom Tt: Ha My Tnh
l cc na mt phng ngoi v mt phng trong xc nh bi li, trong ni l php vectorca li c chn hng ra na mt phng ngoi vDil hng s no . V (R) l t p linn c xc nh bi:
tng ca thut ton nh sau:
Vi mi on thng li, i =0, 1,..., L, chng ta loi b phn ca on thng ABthuc na mt phng ngoi xc nh bi liv c p nht AB=AB(
il ).
Nu ti bc no , AB ( +il ) th kt lun giao ca on thng v a gic libng trng; ngc li, nu bc cui cng phn on thng AB cn li nm
trong (R) chnh l phn giao cn tm.
Thut ton
Cyrus_Beck(Point2D *A, Point2D *B, VertPtr2D Poly)Begin
float t_in = 0.0, t_out = 1.0, t_hit, Denom, D;Point2D F, S;Vector2D c, n, a;VertPtr2D Tempt = Poly;
if (Tempt == NULL)return False;F = Tempt->Vertex;c.dx = (*B).x - (*A).x;c.dy = (*B).y - (*A).y;a.dx = (*A).x;a.dy = (*A).y;while ((Tempt = Tempt->Next) != NULL)begin
S = Tempt->Vertex;n.dx = (S.y - F.y);n.dy = -(S.x - F.x);D = n.dx*F.x + n.dy*F.y;if ((Denom = Dot2D(n, c)) == 0.0)
if (Dot2D(n, a) > D) return False;elsebegin
t_hit = (D - Dot2D(n, a)) / Denom;
Khoa Cng ngh Thng tin i hc Lt Trang 73
7/31/2019 76404645 DHMT Bai Giang Tom Tat
74/112
Bi Ging Tom Tt: Ha My Tnh
if (Denom > 0.0)if (t_out > t_hit) t_out = t_hit;
elseif (t_in < t_hit) t_in = t_hit;
if (t_in > t_out) return False;
endF=S;
endF.x = (1 - t_in)*(*A).x + t_in*(*B).x;F.y = (1 - t_in)*(*A).y + t_in*(*B).y;S.x = (1 - t_out)*(*A).x + t_out*(*B).x;S.y = (1 - t_out)*(*A).y + t_out*(*B).y;*A = F;*B = S;return True;
End
5.5. Giao hai a giac
Thut ton Sutherland-Hodgman
K hiu Subj v Clip l danh sch cc nh ca hai a gic (S) v (C) tng ng. C bnkh nng xy ra gia mi cnh ca (S) v ca (C):
1. Hai inh F v S nm trong: xut S.
2. inh F nm trong v S nm ngoi: tm giao im I v xut n.3. Hai inh F v S nm ngoi: khng xut.4. inh F nm ngoi v S nm trong: tm giao im I; xut I v S.
Khoa Cng ngh Thng tin i hc Lt Trang 74
7/31/2019 76404645 DHMT Bai Giang Tom Tat
75/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.10: Bn trng hp vi mi cnh ca (S)
Xt v d hnh (a):
Khoa Cng ngh Thng tin i hc Lt Trang 75
7/31/2019 76404645 DHMT Bai Giang Tom Tat
76/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.11: V du thut ton Sutherland-Hodgman
1. Danh sch Subj sau khi ct (S) vi cnh bn tri ca (C):
(1, 2, D, E, F, G, 3, 4, I, A, 1).
2. Danh sch Subj sau khi ct (S) vi cnh bn di ca (C):
(5, 6, E, F, 7, 5, 4, I, A, 1, 5).
Khoa Cng ngh Thng tin i hc Lt Trang 76
7/31/2019 76404645 DHMT Bai Giang Tom Tat
77/112
Bi Ging Tom Tt: Ha My Tnh
3. Danh sch Subj sau khi ct (S) vi cnh bn phi ca (C):
(8, 9, F, 7, 5, 4, I, A, 1, 5, 8).
4. Danh sch Subj sau khi ct (S) vi cnh bn trn ca (C):
(9, F, 7, 5, 4, I, 10, 11, 5, 8, 9).
Thut ton Weiler-Atherton
Cch tip cn ca Weiler-Atherton nhm tm ra giao ca hai a gic bt k, thm ch cl hng trong cc a gic. Ngoi ra c th tm phn hp v hiu hai a gic na. Xt v dhnh 5.12 sau.
Hnh 5.12: V du thut ton Weiler-Atherton
Hai a gic (S) v (C) c biu din bi danh sch cc nh, k hiu Subj = (A, B, C, D,E, A) v Clip = (a, b, c, d, e, a) tng ng.
Tt c cc giao im ca hai a gic c xc nh v lu vo mt danh sch.Trong v d trn c tt c su giao im: 1, 2, 3, 4, 5, 6.
Thc hin tin trnh: ln theo hng thun v nhy l xy dng hai danh sch:
Khoa Cng ngh Thng tin i hc Lt Trang 77
7/31/2019 76404645 DHMT Bai Giang Tom Tat
78/112
Bi Ging Tom Tt: Ha My Tnh
Xut pht t giao im i vo l im i t ngoi vo trong ca a gic (C),duyt trn (S) n khi g p giao im th chuyn sang duyt trn (C), v l p li.Qu kt thc khi g p im xut pht ban u. Tip tc kim tra giao im trn (S)cha c i qua v l p li tin trnh trn. Ta c hai a gic sinh ra l (1, B, 2, 1)v (3, 4, 5, 6, 3).
Hp hai a gic (S) (C)
i trn (S) theo hng thun cho n khi g p im ra l im i t trong ra ngoi caa gic (C) duyt cho n khi g p giao im khc vi (C) thduyt sang (C) cho n khig p giao im k tip ri chuyn sang (S). Qu kt thc khi g p im xut pht ban u.
Kt qu(S) (C) gm hai a gic:
(2, C, 3, 2) (l hng). (4, D, 5, c, d, e, 6, E, A, 1, a, b, 4).
Hiu hai a gic (C) \ (S)
i trn (S) theo hng thun cho n khi g p im vo duyt cho n khi g p giaoim khc vi (C) thduyt sang (C) theo hng ngc cho n khi g p giao im ktip ri chuyn sang (S). Qu kt thc khi g p im xut pht ban u.
(C) \ (S): (1, B, 2, 3, 4, b, a, 1); v (5, 6, e, d, c, 5). (S) \ (C): (4, 5, D, 4); v (6, 3, C, 2, 1, A, E, 6).
5.6. Ray tracing hai chiu: phn x trong bung kn
Mc ch ca phn ny l p dng mt s khi nim hnh hc to mt ng dng
Khoa Cng ngh Thng tin i hc Lt Trang 78
7/31/2019 76404645 DHMT Bai Giang Tom Tat
79/112
Bi Ging Tom Tt: Ha My Tnh
ha: m phng qu trnh chuyn ng ca tia sng trong bung kn.
Phng php Ray tracing l mt cng c quan trng trong ha my tnh tnghp cc nh. Trong tng hp nh, cc tia sng nhn to ln theo trong th gii thc bachiu cha nhiu i tng. ng i ca mi tia sng xuyn qua cc i tng trong
sut hoc phn x li ty theo mc phn x ca i tng cho n khi n dng li i tng no . Mu ca i tng ny s c t cho pixel tng ng trn thit bhin th. M phng qu trnh Ray tracing rt d dng trong khng gian hai chiu.
Hnh dung qu o ca tri pinpall nh khi n va chm vo cc i tng trongbung kn. Hnh bn di minh ha nht ct ngang ca mt bung kn c nm bc tngv cha ba tr trn. Tripinpallbt u ti v tr Sva di chuyn theo hng vectorccho n g p vt cn s b phn x v di chuyn theo hng mi. Qua trnh c l p linhiu ln. Qu o ca tripinpalll ng gp khc m ta c th hnh dung ng ica tia sng di chuyn trong bung kn.
Hnh 5.13: V du v Ray tracing.
Chng ta s xy dng thut ton xc nh i tng no tia sng s g p trc v vtr va trm ti . V tr va chm s l im khi u cho cho ng i k tip vi hngdi chuyn mi.
Vector phn x
Hnh 5.14 phn gii vector c thnh thnh phn m dc theo n v thnh phn e vung gcvi n. Ta c, r = e m.Nhng e = c m nn r = c 2m.
Khoa Cng ngh Thng tin i hc Lt Trang 79
7/31/2019 76404645 DHMT Bai Giang Tom Tat
80/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.14: Phan x tia sng
V vectorm l vector phn gii ca vectorc theo vectorn nn
Nn
Thu tuc xac inh vector phan xa r t vector c va phap vector n
Reflection(Vector2D c, Vector2D n, Vector2D *r)
Begin
float Coeff = 2*Dot2D(c, n)/Dot2D(n, n);
(*r).dx = c.dx - Coeff*n.dx;
(*r).dy = c.dy - Coeff*n.dy;
End
Giao ca tia sng v ng thng
Phng trnh tham s ca tia sng xut pht t Schuyn ng theo vector ch phng ccho bi
R(t):= S + ct, t 0.
Khoa Cng ngh Thng tin i hc Lt Trang 80
7/31/2019 76404645 DHMT Bai Giang Tom Tat
81/112
Bi Ging Tom Tt: Ha My Tnh
Bc tng tng ng ng thng:
trong , php vectorn hng ra ngoi bung kn. Nu 0 th tia sng ct ngthng tiPh = S + cth, trong :
V d, cho ng thng 6x 8y + 10 = 0 v tia sng xut pht t S(7, 4) di chuyn theovector ch phng c=(2, 1)t. ng thng cn =(6,8)t vD = 10.
Ta c
Suy ra giao im I:
I = S + tc =(7, 4) + (2, 1)1 = (5, 5).
Vector phn x
Thu tuc xac inh thi im giao th
Khoa Cng ngh Thng tin i hc Lt Trang 81
7/31/2019 76404645 DHMT Bai Giang Tom Tat
82/112
Bi Ging Tom Tt: Ha My Tnh
Ray_With_Line(Point2D S, Vector2D c, Vector2D normal, float D, float *t_hit)
Begin
float Denom = Dot2D(normal, c);
Vector2D s;
PointToVector2D(S, &s);
if (Denom == 0.0)
*t_hit = -1.0;
else
*t_hit = (D - Dot2D(normal, s))/Denom;
End
Giao ca tia sng v hnh trn
Hnh tr tng ng ng trn (C) bn knhR tmI. Xt s tng giao ca tia sng vng trn.
Ta c
Suy ra
Hay tng ng
trong
Khoa Cng ngh Thng tin i hc Lt Trang 82
7/31/2019 76404645 DHMT Bai Giang Tom Tat
83/112
Bi Ging Tom Tt: Ha My Tnh
Nghim ca phng trnh (c th o)
V d, cho ng trn (x 1)2 + (y 4)2 = 4 v tia sng xut pht t S(8, 9) di chuyntheo vector ch phng c = (-1, 1)t.
Phng trnh giao im
At2 + 2Bt + C = 0,
trong
Suy ra
Vy ta giao im lPh = S + thc =(8 5, 9 5).
Vector phn x
Khoa Cng ngh Thng tin i hc Lt Trang 83
7/31/2019 76404645 DHMT Bai Giang Tom Tat
84/112
Bi Ging Tom Tt: Ha My Tnh
Thu tuc xac inh thi im giao
Ray_With_Circle(Point2D S, Vector2D c, Point2D Center, float Rad,float*t_hit)
Begin
float A, B, C, delta;
Vector2D tempt;
tempt.dx = S.x - Center.x;
tempt.dy = S.y - Center.y;
A = Dot2D(c, c);
B = Dot2D(tempt, c);
C = Dot2D(tempt, tempt) - Rad*Rad;
delta = B*B - A*C;
if (delta < 0.0)
*t_hit = -1.0;
else
*t_hit = (-B - sqrt(delta))/A;
End
Khoa Cng ngh Thng tin i hc Lt Trang 84
7/31/2019 76404645 DHMT Bai Giang Tom Tat
85/112
Bi Ging Tom Tt: Ha My Tnh
Chng 6
HOA BA CHIU
Ni dung chnh
Gii thiu ha 3 chiu (3D). Hin th i tng 3D. Cc php bin i Affine 3D c s.
6.1. Gii thiu ha 3 chiu
Cc i tng trong th gii thc phn ln l cc i tng 3 chiu cn thit b hinth ch 2 chiu. Do vy, mun c hnh nh 3 chiu ta cn phi gi lp. Chin lc c bn
l chuyn i tng bc. Hnh nh s c hnh thnh t t, ngy cng chi tit hn.
Qui trnh hin th nh 3 chiu nh sau
Bin i t h ta i tng sang h ta th gii thc . Mi i tng c mt trong mt h ta ring c gi l h ta i tng.
C 2 cch m hnh ha i tng:
o Solid modeling: m t cc vt th (k c bn trong).
o Boudary representation: ch quan tm n b mt i tng.
Cc i tng c th c biu din bng m hnh Wire-Frame. Nhn thy rng khibiu din i tng, ta c th chn gc ta v n v o lng sao cho vic biu dinl thun li nht. Thng th ngi ta chun ha kch thc ca i tng khi biu din.Biu din bin cho php x l nhanh cn silid modeling cho hnh nh y v xc thchn.
o Loi b cc i tng khng nhn thy c: Loi b cc i tng hon tonkhng th nhn thy trong cnh. Thao tc ny gip ta lc b bt cc i tng
khng cn thit do gim chi ph x l.o Chiu sng cc i tng: Gn cho cc i tng mu sc da trn cc c tnhca cc cht to nn chng v cc ngun sng tn ti trong cnh. C nhiu mhnh chiu sng v to bng : constant-intensity, Interpolate,...
o Chuyn t wordspace sang eye space. Thc hin mt php bin i h ta t v tr quan st v gc ta v mt phng quan st v mt v tr mongc.
Khoa Cng ngh Thng tin i hc Lt Trang 85
7/31/2019 76404645 DHMT Bai Giang Tom Tat
86/112
Bi Ging Tom Tt: Ha My Tnh
Hnh nh hin th ph thuc vo v tr quan st v gc nhn.H qui chiu c gc t ti v tr quan st v ph hp vi hng nhn s thunli cho cc x l tht.
o Loi b phn nm ngoi viewing frusturn: Thc hin vic xn i tng trong
cnh cnh nm gn trong mt phn khng gian hnh chp ct gii hn vngquan st m ta gi l viewing frustum. Viewung frustum c trc trng vi tianhn, kch thc gii hn bi vng ta mun quan st.
o Chiu t eye space xung screen space: Thc hin vic chiu cnh 3 chiu tkhng gian quan st xung khng gian mn hnh.C 2 phng php chiu:- Chiu song song.- Chiu phi cnh.Khi chiu ta phi tin hnh vic kh mt khut c th nhn c hnh nhtrung thc.
Kh mt khut cho php xc nh v tr (x,y) trn mn hnh thuc v i tngno trong cnh.o Chuyn i tng sang dng pixel.o Hin th i tng.
6.2. Biu din i tng 3 chiu
Trong ha my tnh, cc i tng lp th c th c m t bng cc b mtca chng. V d : mt hnh lp phng c xy dng t su mt phng, mt hnh trc xy dng t s kt hp ca mt mt cong v hai mt phng v hnh cu c xy
dng t ch mt mt cong. Thng thng biu din mt i tng bt k, ngi tadng phng php xp x a cc mt v dng cc mt a gic.
im trong khng gian 3 chiu c ta (x,y,z) m t mt v tr trong khng gian.
typedef struct {int x;int y;int z;
} Point _3D ;
Vect: xc nh bi 3 ta dx, dy, dz m t mt hng v di ca vc t.
Vc t khng c v tr trong khng gian.
Khoa Cng ngh Thng tin i hc Lt Trang 86
7/31/2019 76404645 DHMT Bai Giang Tom Tat
87/112
Bi Ging Tom Tt: Ha My Tnh
Tch v hng ca hai vc t
V1* V2 = dx1dx2 + dy1dy2 + dz1dz2
Hay V1* V2 = |V1||V2| cos
typedef struct {int dx;int dy;int dz;
} Vector ;
on thng trong khng gian 3 chiu: biu din t hp tuyn tnh ca 2 im
biu din dng tham s ca on thng, ta c :
P = P1 + t*( P2 - P1 ) , ( 0 t 1)
typedef struct {Point P1;Point P2;
} Segment ;
Tia (Ray) : l mt on thng vi mt u nm v cc.
Biu din dng tham s ca tia :
P = P1 + t*V , ( 0 t < )
typedef struct {Point P1;Vector V;
} Ray;
ng thng (Line): l mt on thng vi c hai u nm v cc
Biu din dng tham s ca ng thng
P = P1 + t*V , ( t < )
typedef struct {Point P1;Vector V;
} Line;
Khoa Cng ngh Thng tin i hc Lt Trang 87
7/31/2019 76404645 DHMT Bai Giang Tom Tat
88/112
Bi Ging Tom Tt: Ha My Tnh
a gic (Polygon) : l mt vng gii hn bi hn dy cc im ng phng .
typedef struct {Point *Points;int nPoints;
} Polygon;
C th biu din mt mt a gic bng mt tp hp cc nh v cc thuc tnh kmtheo. Khi thng tin ca mi mt a gic c nhp, d liu s c in vo cc bng sc dng cho cc x l tip theo, hin th v bin i.
Cc bng d liu m t mt a gic c th t chc thnh hai nhm : bng hnh hcv bng thuc tnh. Cc bng lu tr d liu hnh hc cha ta cc nh v cc thams cho bit v nh hng trong khng gian ca mt a gic. Thng tin v thuc tnh cacc i tng cha cc tham s m t trong sut, tnh phn x v cc thuc tnh kt
cu ca i tng. Mt cch t chc thun tin lu tr cc d liu hnh hc l to ra 3danh sch : mt bng lu nh, mt bng lu cnh v mt bng lu a gic. Trong :
o Cc gi tr ta cho mi nh trong i tng c cha trong bng lu nh.o Bng cnh cha cc con tr tr n bng nh cho bit nh no c ni vi
mt cnh ca a gic.o Cui cng l bng lu a gic cha cc con tr tr n bng lu cnh cho bit
nhng cnh no to nn a gic.
Mt phng (Plane) :
typedef struct {Vector N;int d;
} Plane;
Phng trnh biu din mt phng c dng : Ax + By + Cz + D = 0. Trong (x,y,z) lmt im bt k ca mt phng v A, B, C, D l cc hng s din t thng tin khng gianca mt phng.
xc nh phng trnh mt phng, ta ch cn xc nh 3 im khng thng hng ca
mt phng ny. Nh vy, xc nh phng trnh mt phng qua mt a gic, ta s sdng ta ca 3 nh u tin (x1,y1), (x2,y2), (x3,y3) trong a gic ny.
T phng trnh mt phng trn, ta c
Khoa Cng ngh Thng tin i hc Lt Trang 88
7/31/2019 76404645 DHMT Bai Giang Tom Tat
89/112
Bi Ging Tom Tt: Ha My Tnh
Axk+ Byk+ Czk+ D = 0 , k = 0, 1, 2, 3.
Trong :
Khai trin cc nh thc trn ta c :
A = y1(z2 - z3) + y2(z3 - z1) + y3(z1 - z2)
B = z1(x2 - x3) + z2(x3 - x1) + z3(x1 - x2)
C = x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2)
A = - x1(y2z3 - y3z2) - x2(y3z1 - y1z3) - x3(y1z2 - y2z1)
Hng ca mt phng thng c xc nh thng qua vc t php tuyn ca n. Vct php tuyn n = (A,B,C).
12 Hinh 5.15: Mt phng trong khng gian
M hnh khung ni kt
Mt phng php thng dng v n gin m hnh ha i tng l m hnhkhung ni kt. Mt m hnh khung ni kt gm c mt tp cc nh v tp cc cnh
Khoa Cng ngh Thng tin i hc Lt Trang 89
7/31/2019 76404645 DHMT Bai Giang Tom Tat
90/112
Bi Ging Tom Tt: Ha My Tnh
ni cc nh . Khi th hin bng m hnh ny, cc i tng 3 chiu c v rng vkhng ging thc t lm. Tuy nhin, v bng m hnh ny th nhanh nn ngi tan=(A,B,C) thng dng n trong vic xem phc tho cc i tng. hon thinhn, ngi ta dng cc k thut to bng v loi b cc ng khut, mt khut.
Vi m hnh khung ni kt, hnh dng ca i tng 3 chiu c biu din bnghai danh sch: danh sch cc nh v danh sch cc cnh ni cc nh . Danh schcc nh cho bit thng tin hnh hc, cn danh sch cc cnh xc nh thng tin v skt ni. Chng ta hy quan st mt vt th ba chiu c biu din bng m hnhkhung ni kt nh sau:
Hnh 5.16: M hnh khung kt ni
Bng danh sch cc cnh v nh biu din vt th
Khoa Cng ngh Thng tin i hc Lt Trang 90
7/31/2019 76404645 DHMT Bai Giang Tom Tat
91/112
Bi Ging Tom Tt: Ha My Tnh
Ngi ta c th v cc i tng theo m hnh khung ni kt bng cch s dng ccphp chiu song song hay php chiu phi cnh s c gii thiu chng 6.
6.3. Cc php bin i 3 chiu
6.3.1. H ta bn tay phi - bn tay tri
H ta theo qui c bn tay phi : bn tay phi sao cho ngn ci hngtheo trc z, khi nm tay li, cc tay chuyn ng theo hng t trc x n trc y.
1
23 Hnh 5.17: H ta bn tay phai
H ta ta theo qui c bn tay tri : bn tay phi sao cho ngn ci hngtheo trc z, khi nm tay li, cc ngn tay chuyn ng theo hng t trc x n
trc y.45
Khoa Cng ngh Thng tin i hc Lt Trang 91
z
y
x
7/31/2019 76404645 DHMT Bai Giang Tom Tat
92/112
Bi Ging Tom Tt: Ha My Tnh
67 Hinh 5.18: H ta bn tay tri
H ta thun nht: Mi im (x, y, z) trong khng gian -cc c biudin bi mt b bn ta trong khng gian 4 chiu thu gn (hx, hy, hz, h).
Ngi ta thng chn h = 1.
2 Cc php bin i tuyn tnh l t hp ca cc php bin i sau : t l, quay,bin dng v i xng. Cc php bin i tuyn tnh c cc tnh cht sau :
- Gc ta l im bt ng.- nh ca ng thng l ng thng.- nh ca cc ng thng song song l cc ng thng song song.- Bo ton t l khong cch.- T hp cc php bin i c tnh phn phi
6.3.2. Cc php bin i Affine c s
Php tnh tin
Php bin i t l
12 Khi Sx= Sy= Szta c php bin i ng dng.
Khoa Cng ngh Thng tin i hc Lt Trang 92
z
x
y
7/31/2019 76404645 DHMT Bai Giang Tom Tat
93/112
Bi Ging Tom Tt: Ha My Tnh
6.3.2.1 Php quay quanh trc x
Hnh 5.19 : Php quay quanh truc x
- L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc x :
- Ta c :
+=
=
=
cossin'
coscos'
'
zyz
zyy
xx
Cc ta y,z bin thin tng t php quay gc quanh gc ta trong mtphng yoz (y ng vai tr x, z ng vai tr y).
Do ,
=
1000
0cossin0
0sincos0
0001
xT
6.3.2.2 Php quay quanh trc y
- L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc y :
- Ta c :
+=
=
=
cossin'
sincos'
'
xzx
xzz
yy
Do ,
Khoa Cng ngh Thng tin i hc Lt Trang 93
z
x
y
P
P
7/31/2019 76404645 DHMT Bai Giang Tom Tat
94/112
Bi Ging Tom Tt: Ha My Tnh
=
1000
0cos0sin
0010
0sin0cos
yT
6.3.2.3 Php quay quanh trc z
- L php bin i P(x,y,z) P(x,y,z) qua php quay gc quanh trc y :
- Ta c :
+=
=
=
cossin'
sincos'
'
yxy
yxx
zz
Do ,
=
1000
0100
00cossin
00cos
zT
6.3.2.4 Php quay quanh trc song song vi trc ta
Php quay quanh trc song song vi trc ta hiu qu vi nhiu php bin i,
trong thc t i tng thng quay quanh trc ca n. Ta xt trng hp trc itng song song vi 1 trong cc trc ta . n gin ta phn tch chuyn ngquay ca i tng song song vi trc cho trc theo cc bc :
Bc 1 : Tnh tin trc i tng trng vi trc ta m n song song. Bc 2 : Quay i tng quanh trc ca n tng ng quay quanh trc ta
. Bc 3 : Tnh tin tr li.
VD : Xt php quay gc quanh trc x song song vi x i qua (m, n, l)
Khoa Cng ngh Thng tin i hc Lt Trang 94
7/31/2019 76404645 DHMT Bai Giang Tom Tat
95/112
Bi Ging Tom Tt: Ha My Tnh
Hnh 5.20 : Php quay quanh truc x song song vi x
Bc 1 : Tnh tin x trng vi x.
=
1
01000010
0001
]T[-m,-n,-l
lnm
Bc 2 : Quay quanh trc x vi gc
=
1000
0cossin0
0sincos0
0001
xT
Bc 3 : Tnh tin tr li
1
0100
0010
0001
=l]n,T[m,=[-m,-n,-l]T1-
lnm
Do , ma trn biu din php quay gc quanh trc xsong song x i qua (m,n,l) l :
T= T[-m,-n,-l] xT T[m,n,l]
VD : Tm nh ca hnh ch nhtA(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh trc x song song x i qua (1,1,1).
Gii :
Tnh : T= T[-1,-1,-1] xT T T[1,1,1]
A(1,2,1) A=(1,2,1,1) T
Khoa Cng ngh Thng tin i hc Lt Trang 95
P
P
x
z
x
y
7/31/2019 76404645 DHMT Bai Giang Tom Tat
96/112
Bi Ging Tom Tt: Ha My Tnh
B(3,2,1) B=(3,2,1,1) T
C(3,4,3) C=(3,4,3,1) T
D(1,4,3) D=(1,4,3,1) T
6.3.2.5 Php quay quanh trc bt k
Xt php quay gc quanh trc bt k, ta thc hin qua cc bc sau :
Hnh 5.21: Php quay quanh trucbt k
Bc 1 : Tnh tin trng gc ta .
1...0100
0010
0001
=y,-P.z]T[-P.x,-P.
zPyPxP
Bc 2 : Quay quanh trc z gc sao choP,Pthuc (xOz)
=
1000
0100
00cossin
00cos
zT
Bc 3 : Quay quanh trc y gc sao choP, Pthuc Ox
=
1000
0cos0sin
0010
0sin0cos
yT
Bc 4 : Quay quanh trc x gc
:
Khoa Cng ngh Thng tin i hc Lt Trang 96
z
x
y
P
Px
7/31/2019 76404645 DHMT Bai Giang Tom Tat
97/112
Bi Ging Tom Tt: Ha My Tnh
=
1000
0cossin0
0sincos0
0001
xT
Bc 5 :Ngc bc 3
Bc 6: Ngc bc 2
Bc 7 :Ngc bc 1
Cch xc nh chiu dng trong cc php quay
nh ngha v chiu quay c dng chung cho c h ta theo qui c bn tayphi v bn tay tri. C th chiu dng c nh ngha nh sau :
o Quay quanh truc x : t trc dng y n trc dng xo Quay quanh trc y : t trc dng z n trc dng xo Quay quanh trc x : t trc dng x n trc dng y
Ngoi cc php bin i trn, ta xt thm mt s php bin i Affine khc sau y:
Php i xng qua mt phng ta
Php i xng qua trc x, y v z
Khoa Cng ngh Thng tin i hc Lt Trang 97
7/31/2019 76404645 DHMT Bai Giang Tom Tat
98/112
Bi Ging Tom Tt: Ha My Tnh
Php bin dng
Khoa Cng ngh Thng tin i hc Lt Trang 98
7/31/2019 76404645 DHMT Bai Giang Tom Tat
99/112
Bi Ging Tom Tt: Ha My Tnh
Bi tp chng 6
1. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh gc ta .
2. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =30o quanh im M(1,1,1).
3. Tm v tr mi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quaygc =45o quanh trc xsong song x i qua (1,1,1).
Khoa Cng ngh Thng tin i hc Lt Trang 99
7/31/2019 76404645 DHMT Bai Giang Tom Tat
100/112
Bi Ging Tom Tt: Ha My Tnh
PHU LUCTH VIN HOA OPENGL
OpenGL l g?
OpenGL (GL l t vit tt ca Graphics Library) l phn mm giao din vi ccphn cng ho. OpenGL c pht trin bi Silicon Graphic Inc. OpenGL cng lmt giao din lp trnh ng dng (Application Program Interface API). N bao gmkhong 150 cu lnh h tr nhiu ngn ng nh C, C++, Java, C#...Cho php ngilp trnh s dng to ra ng dng tng tc ho 3D.
OpenGL c thit k khng ph thuc nn tng phn cng cng nh h iuhnh my tnh (independence of hardware platform and operating system). Nh mtchng trnh chung gian gia ngi dng v phn cng my tnh. Vi OpenGL chng
ta s to ra cc m hnh phc tp t nhng i tng hnh hc c bn. l cc im(Points), ng (Line), a gic (Polygon).
C php ca OpenGL
Cc cu lnh ca OpenGL u s dng tin t gl v cc t tip theo c bt ubng k t hoa, v d glClearColor(). Tng t nh vy, cc hng c nh nghabng tin t GL_ tip theo l cc t vit hoa c ngn cch bi k t gch di, v dGL_COLOR_BUFFER_BIT.
glVertex3fv
ch ra nh dng vector, nu c
loi d liu: ffloat
d double float
S i, (2,3 hoc 4) s signed short integer
i signed integer
Loi d liu khc trong lnh OpenGL :
- b character
- ub unsigned character
- us unsigned short integer
- ui unsinged integer.
D liu v hng v nh dng vector.
Khoa Cng ngh Thng tin i hc Lt Trang 100
7/31/2019 76404645 DHMT Bai Giang Tom Tat
101/112
Bi Ging Tom Tt: Ha My Tnh
Cu lnh OpenGL cho ta thy c ngha chc nng ca hm.Tham s v loitham s xut hin tu thuc cc hm khc nhau.
i khi trong cu lnh c thm du * ch rng c php ny c th c nhiulnh. V d, glColor*() c gi tr cho cc lnh khc nhau bn thit lp mu hinhnh. Hoc glClear*() c cc lnh sau: glClearColor(), glClearDepth(),
glClearAccum(), glClearStencil().
OpenGL l mt my trng thi
OpenGL l mt my trng thi. Bn t n ti cc trng thi khc nhau (hoc ccch ). Chng gi nguyn tc dng cho n khi ta thay i trng thi khc. Chnghn t mu hin hnh l mt bin trng thi. Bn c th t mu hin ti bi mutrng, mu hoc mu no khc, v sau mi i tng c v bi mu choti khi bn t mu hin ti bng mu khc. Mu hin ti ch l mt trong nhiu bintrng thi m OpenGL lu gi. Cn nhiu trng thi khc nh im nhn hin hnh, v
tr v c tnh nh sng, thuc tnh cht liu,
Bin trng thi l ni lu gi cc trng thi. Mi bin trng thi hoc ch cmt gi tr mc nh ban u. Ta c th xem gi tr ca chng thng qua 6 hm sau:
o glGetBooleanv()
o glGetDoublev()
o glGetFloatv()
o glGetIntergerv()
o glGetPointerv()
o glIsEnabled()
Mt vi bin trng thi c nhiu hn ch nh lnh yu cu (chng hnglGetLight*(), glGetError(), hoc glGetPolygonStipple()). Hn na ta c th lu vly ra cc gi tr ca tp trng thi bin trn thuc tnh stack vi lnh glPushAttrib()hoc glPushClientAttrib() v glPopAttrib() hoc glPopClientAttrib().
Cc th vin lin quan
Mc d OpenGL l cng c mnh song cc i tng v u l nhng i tnghnh hc c bn. n gin mt s th tc, chng ta c cung cp mt s th vin c th iu khin vic v i tng mc cao hn.
OpenGL Utility Library (GLU): Bao gm mt s th tc thit lp ma trnxc nh hng nhn, ma trn cc php chiu, v biu din cc mt trong khnggian 3 chiu.
OpenGL Utility Toolkit (GLUT): bao gm cc th tc nhm n gin hovic to cc i tng hnh hc. c bit hnh trong khng gian 3 chiu (solidhnh c, wire hnh khung).
Khoa Cng ngh Thng tin i hc Lt Trang 101
7/31/2019 76404645 DHMT Bai Giang Tom Tat
102/112
Bi Ging Tom Tt: Ha My Tnh
Khi lp trnh OpenGL trong C# ta s dng thm mt s th vin sau: csgl.dll,csgl.native.dll, CsGL.Basecode.
Hin th cc i tng hnh hc c bn:im, on thng, a gic
to mt i tng hnh hc t cc nh, ta t cc nh gia (hai hmglBegin(param) v glEnd(). Tham s param a vo cho hm glBegin() s quyt nhi tng OpenGL v ra t cc nh khai bo bn trong.
V d:
glBegin(GL_POLYGON);
glVertex2f(0.0, 0.0);
glVertex2f(0.0, 1.0);
glVertex2f(0.5, 1.0);
glVertex2f(1.0, 0.5);
glVertex2f(0.5, 0.0);
glEnd();
Hm glBegin(Glenum mode). Bin mode ch ra i tng c v, nhn mt trong ccgi tr sau:
Gi tr ngha
GL_POINTS V cc im
GL_LINES V cc on thng
GL_POLYGON V a gic li
GL_TRIANGLES V tam gic
GL_QUADS V t gic
GL_LINE_STRIP V ng gp khc khng khp kn
Khoa Cng ngh Thng tin i hc Lt Trang 102
7/31/2019 76404645 DHMT Bai Giang Tom Tat
103/112
Bi Ging Tom Tt: Ha My Tnh
GL_LINE_LOOP V ng gp khc khp kn
GL_TRIANGLE_STRIP Mt di cc tam gic lin kt vi nhau
GL_TRIANGLE_FAN Mt di cc tam gic lin kt theo hnh qut
GL_QUAD_STRIP Mt di cc t gic lin kt vi nhau
Danh sch cc hnh th hin s kt qu tng ng ca bin mode
Hnh phu luc 1: Cc i tng hnh hc c ban
Qui lut hin th r rng trn hnh v, ring vi GL_QUAD_STRIP c v vi quilut ni 4 im c v tr 2n,2n+1,2n+3,2n+2 vi 2n l im khi u ca hnh t gic. ch nh 1 nh ta dng lnh sau:glVertex{2,3,4}{sifd}[v](to ).Trong :
- {2,3,4} ch nh s chiu ca khng gian.
- [v] nu to im c truyn t mt mng cho trc.
Khoa Cng ngh Thng tin i hc Lt Trang 103
7/31/2019 76404645 DHMT Bai Giang Tom Tat
104/112
Bi Ging Tom Tt: Ha My Tnh
- {sifd} ch nh kiu d liu ca to , ngha c ch nh trong bng sau:
K hiu Kiu