DHMT Bai Giang Tom Tat

Embed Size (px)

Citation preview

Bai Giang Tom Tt: Hoa May TinhMU C LU CChng 1.....................................................................................................4 GII THIU VHO A MAY TINH...................................................................4 Tng quan hoa may tinh ...........................................................................4 Cac ng du ng cua hoa may tinh .................................................................4 Cac tha nh ph n c ban cua hho a may 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 VEI TNG HO A C BAN .....................................................................8 2.1 Thut ton v on thng .........................................................................8 2.1.1 Thut ton DDA (Digital DifferentialAnalyzer).........................................9 2.1.2 Thut ton Bresenham......................................................................11 2.1.3 Thut toa n MidPoint..........................................................................14 2.2 Thut ton v ng trn........................................................................17 2.2.1 Thut toa n n gian..........................................................................18 2.2.2 Thut toa n MidPoint..........................................................................19 2.3 Thut ton v Ellipse..............................................................................21 2.4. ng cong tham s ..............................................................................24 2.4.1. ng cong Bezier..............................................................................24 2.4.1.1. Thut toa n de Casteljau..............................................................24 2.4.1.2. Thut toa n Horner......................................................................27 2.4.2. ng cong B-Spline ..........................................................................30 31 Bi tp chng 2.........................................................................................37 Chng 3....................................................................................................39 T MAU......................................................................................................39 Gii thiu vmau sc..................................................................................39 T mau n gia n .........................................................................................39 3.3T ma u theo dong que t..........................................................................43 3.4T ma u theo bin..................................................................................44 Bi tp chng 3.........................................................................................46 Khoa Cng ngh Thng tin ai hoc a LatTrang 1Bai Giang Tom Tt: Hoa May TinhChng 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.5Php i xng .......................................................................................52 4.6 Phep bi n dang......................................................................................53 4.7Php 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 CAC I TNG HOA .....................................................................60 Chng 6....................................................................................................85 HOA BA CHI U .......................................................................................85 Khoa Cng ngh Thng tin ai hoc a LatTrang 2Bai Giang Tom Tt: Hoa May TinhM U ha my tnh lamt trong nhng linh vc hp dn vaphat trin nhanh cua Cng nghThng tin. Noc ra i bi s kt hp ca 2 lnh vc thng tin v truyn hnh, va c sdung rng rai trong hu ht cac ng dung nh khoa hoc va cng ngh, y hoc, giao duc, kin truc, va k cagiai tri. u tin k thut ha c pht trin bi cc nhm k s s dng my tnh ln. Trong giai on u ca s pht trin ngi ta phi tn nhiu tin cho vic trang b cc thit b phn cng. Ngy nay, nh vo s tin b ca vi x l, gi thnh ca my tnh cng lc cng ph hp vi ti tin ca ngi s dng trong khi cc k thut ng dng ha ca n ngy cng cao hn nn c nhiu ngi quan tm nghin cu n lnh vc ny. Chng ta c th v ra nhng hnh nh khng ch l nh tnh m cn c th bin i thnh nhng hnh nh sinh ng qua cc php quay, tnh tin... Do vy, 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 mau cng cc php bin hnh u c xy dng da trn nn tng ca hnh hc khng gian hai chiu v ba chiu. Giao trinh ha may tinh l mt mn hc c ging dy cho sinh vin chuyn ngnh Cng nghThng tin vi 45 tit l thuyt v 30 tit thc tp. Ni dung ca gio trnh ha may tinh 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 dungthhai cpnhahai chiubaogmccphpbini Affine, tim giao cac i tng, t mau, vaquan st,hin thi , bin i Affine nh ba chiu.Gio trnh ha may tinh ny c xy dng da trn kinh nghim ging dy qua v da trnti liuthamkhochnhl : DonaldHearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986.Trong quatrinh bin soan chc khng tranh khoi s sot, ti xin trn trong nhn c s gp ca cc quyng nghip v sinh vin giao trinh ngy cng c hoan thin hn.Khoa Cng ngh Thng tin ai hoc a LatTrang 3Bai Giang Tom Tt: Hoa May TinhChng 1GII THIU V HOA MAY TINHNi dung chnh Tng quan v hoa may tinh. Ca c ng dung cua ho a may tinh. Ca c thanh phn c ban cua h hoa may tinh. H toa thc va h toa hoa. Tng quan hoa may tinh ho a may tinh la tt ca nhng gi lin quan n vi c s dung may tinh phat sinh ra hinh anh. Cac vn linquan n cng vi c nay bao gm: tao, lu tr, thao tac trn ca c m hinh va ca c a nh.Ngay nay, hu ht cac chng trinh soan thao, bang tinh sdung ho a trong giao din vi ngi dung. Sphat trin cua ho a may tinh ngay ca ng rng rai vi cac ch ho a hai chiu (2D) va3 chiu (3D), vacao hn, nophu c vutrong ca c linh vc xahi hoc khac nhau nh khoa ho c, giao du c, y ho c, kythut, thng mai vagiai tri. Tinh hp dn vaa dang cu a hoa may tinh cothc minh hoa rt trc quan thng qua vic khao sat ca c ng dung cua no. Ca c ng dung cua hoa may tinhNgay nay, ho a may tinh c sdung trong rt nhiu linh vc khac nhau nh cng nghip, thng mai, quan ly, giao duc, giai tri, Slng cac chng trinh hoa ng dung rt ln va phat trin lin tuc. Sau y la mt s ng dung tiu biu: H tr thit k Biu din thng tin Giai tri, ngh thut Giao duc, ao tao Giao tip gia ngi va may tinh Ca c thanh phn c ban cua h hoa may tinh2.1 Phn cng Thit bi thu nhn: ban phim, chut, may quet, camera, ... Thit bi hin thi: cac loai man hinh CRT, LCD, Thit bi tng tac: gng tay, kinh 3D, Khoa Cng ngh Thng tin ai hoc a LatTrang 4Bai Giang Tom Tt: Hoa May Tinh2.2 Phn mmPhn mm ho a cothphn thanh 2 loai: ca c cng culp trinh vaca c trinh ng dung hoa phuc vucho mt muc ich nao o . Cac cng culp trinh cung cp mt tp ca c th vin ho a cothc dung trong ca c ngn nglp trinh cp cao nh Pascal, C/C++/C#, Java, hay thm tricocamt th vin ho a cothnhung vao ca c ngn nglp trinh c p bt kynh OpenGL, DirectX. Ca c ham c scua nobao gm vi c tao ca c i tng c scua hinh anh nh oan thng, a giac, ng tron, thay i mau s c, chon khung nhin, bin i affine, phat trin cac ng dung hoa may tinh cn co ca c loai phn mm sau: Tao m hinh: 3DS Max, Maya, Lp trinh, phat trin ng dung: 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 s ri 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. Ch c 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 ha l lm th no c th m t v bin i c cc i tng trong th gii thc trn my tnh. Bi v, cc i tng trong th gii thc c m t bng ta thc. Trong khi , h ta thit b li s dng h ta nguyn hin th cc hnh nh. y chnh l vn c bn cn gii quyt. Ngoi ra, cn c mt kh khn khc na l vi cc thit b khc nhau th c cc nh ngha khc nhau. Do , cn c mt phng php chuyn i tng ng gia cc h ta v i tng phi c nh ngha bi cc thnh phn n 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 ha c to ra bi li cc pixel ri rc. Cc pixel ny c th uc to ra bng cc chng trnh v, my qut, ... Cc pixel ny m t ta xc nh v tr v gi tr mu. Thun li ca ng dng ny l d dng thay i nh bng cch thay i mu sc hay v tr ca cc pixel, hoc di chuyn vng nh t ni ny sang ni khc. Tuy nhin, iu bt li l khng th xem xt i tng t cc gc nhn khc nhau. ng dng ha da trn c trng hnh hc bao gm cc i tng ha c s nh on thng, a gic,.... Chng c Khoa Cng ngh Thng tin ai hoc a LatTrang 5Bai Giang Tom Tt: Hoa May Tinhlu tr bng cc m hnh v cc thuc tnh. V d : on thng c m hnh bng hai im u v cui, c thuc tnh nh mu sc, dy. Ngi s dng khng thao tc trc tip trn cc pixel m thao tc trn cc thnh phn hnh hc ca i tng.1.1. H ta th gii thcMt trong nhng h ta thc thng c dng m t cc i tng trong th gii thc l h ta Descartes. Vi h ta ny, mi im P c biu din bng mt cp ta (xp,yp) vi xp, yp R (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 bH 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 h ta 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 ai hoc a LatTrang 6Bai Giang Tom Tt: Hoa May TinhV d: phngii camnhnhtrongchhal640x480. Khi , x(0,640) v y(0,480) (xem hnh 1.2).1.3. H ta thit b chunDo cch nh ngha cc h ta thit b khc nhau nn mt hnh nh hin th c trn thit b ny l chnh xc th cha chc hin th chnh xc trn tht b khc. Ngi ta xy dng mt h ta thit b chun i din chung cho tt c cc thit b c th m t 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 tri di (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 ai hoc a LatTrang 7Bai Giang Tom Tt: Hoa May TinhChng 2CC THUT TON VE I TNG HOA C BANNi dung chnh Ca c thut toan ve oan thng. Thut toan MidPoint ve ng tron, ellipse.2.1 Thut ton v on thngXt on thng c h s gc 0 P.xthen begin 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)) then count := count + 1; ifd[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.yand (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 begin x_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 :=false else 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:=xmintoxmax do for y:= ymin to ymaxdo begin Khoa Cng ngh Thng tin ai hoc a LatTrang 42Bai Giang Tom Tt: Hoa May Tinh P.x:= x; P.y := y;ifpointInpoly (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 a gic li hay a gic lm, hoc a gic t ct, ng trn, ellipse. Tuy nhin, gii thut ny s tr nn chm khi ta phi gi hm PointInpoly nhiu ln. khc phc nhc im ny ngi ta a ra thut ton t mu theo dng qut.3.3T mau theo dong quet tng: S dng giao im gia cc bin a gic v ng qut nhn ra pixel c trong a gic?Cac bc thut toan:- Tm ymin, ymax ln lt l gi tr nh nht, ln nht ca tp cc tung ca cc nh 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 ,... - Vecc on thng trn ng thng y = k ln lt c gii hn bi cc cp cach quang nhau: (x0, x1), ( x1, x2 ), ....Thut toanScanConvert( Polygon P, Color C)BeginFor y:=0 To ScreenYMax DoBeginI 0)Begincount--;color = getPixel(mPT[count].x, mPT[count].y);if(color != Bcolor || color != Fcolor)BeginputPixel(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;EndEndEndKhoa Cng ngh Thng tin ai hoc a LatTrang 45Bai Giang Tom Tt: Hoa May TinhBi tp chng 31. Vit chng trnh v mt a gic n nh, xt xem mt im P no c thuc a gic 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 mtng trn. T ng trn bng gii thut tn 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 dong quet. 7. Vit chng trnh v mtng trn. Tng trn bng gii thut t mau theo dong quet.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 ny phi khc nhau.Khoa Cng ngh Thng tin ai hoc a LatTrang 46Bai Giang Tom Tt: Hoa May TinhChng 4PHEP BIN I HAI CHIUNi dung chnh Ca c phep bin i ma trn. Ca c phep bin i Affine 2D c s . Ca c phep bin i 3D gp.4.1 Cc php ton c s vi ma ma trn. Nhc lai ca c phep toan trn ma trn:Cng, tr ma trn: Ch thc hin cho hai ma trn cng bcNhn hai ma trn: Ma trn bc n1 m1 v ma trn bc n2 m2 nhn c vi nhau nu m1= n2o 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 ai hoc a LatTrang 47Bai Giang Tom Tt: Hoa May Tinh [Mij] c to ra nh xa hng i, ct j ca [A].4.2 Php tnh tinC 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 mt qui tc no . Bin i h ta : To ra mt h ta mi v tt c cc im m t i tng 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(Px, Py) thnh im Q(Qx, Qy) theo h phng trnh sau:Dng dch chuyn i tng t v tr ny sang v tr khc. Nu gi trx vtryln lt l di theo trc honh v trc tung th ta im mi Q(x', y') sau khi tnh tin im P(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 ai hoc a LatTrang 48Bai Giang Tom Tt: Hoa May TinhHnh 4.1 : Php bin i tnh tin im P thnh Q4.3 Php bin i t l Php bin i t l lm thay i kch thc i tng. co hay gin ta ca mt 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 , Synh hn 1, php bin i s thu nh i tng. Ngc li, 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 bo ton tnh cn xng ca i tng. Ta gi l php phng i nu |S|>1 v l php thu nh nu |S| RightBottom.X)Begincode |= 4;Endif (P.Y < RightBottom.Y)Begincode |= 2;Endif (P.Y > LeftTop.Y)Begincode |= 1;Endreturn code;EndThut toan Cohen-ShuterlandInterLineRectangle(Point LeftTop, Point RightBottom, Point A, Point B)Beginbyte codeA, codeB, codeOut;float x = 0, y = 0;codeA = EncodePoint(LeftTop, RightBottom, A);codeB = EncodePoint(LeftTop, RightBottom, B);while (true)beginKhoa Cng ngh Thng tin ai hoc a LatTrang 66Bai Giang Tom Tt: Hoa May Tinhif (codeA == 0 && codeB == 0)beginreturn true;endif ((codeA & codeB) != 0)beginreturn false;endif (codeA != 0) codeOut = codeA;else codeOut = codeB;if ((codeOut & 8) != 0)//Lbeginx = LeftTop.X;y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);endelse if ((codeOut & 4) != 0) //Rbeginx = RightBottom.X;y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X);endelse if ((codeOut & 2) != 0)//Bbeginy = RightBottom.Y;x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);endelse if ((codeOut & 1) != 0)//Tbeginy = LeftTop.Y;x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y);endif (codeOut == codeA)beginA.X = (int)x;A.Y = (int)y;codeA = EncodePoint(LeftTop, RightBottom, A);endelsebeginB.X = (int)x;B.Y = (int)y;Khoa Cng ngh Thng tin ai hoc a LatTrang 67Bai Giang Tom Tt: Hoa May TinhcodeB = EncodePoint(LeftTop, RightBottom, B);endendEnd 5.3.4 Thu t toan Liang-Barsky Mt thut ton tim giao oan thng vahinh chnht hiu qu dng phng trnh tham sc 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 (xwmin, ywmin) v (xwmax, ywmax), th cciu kin sau y phi c tha:xwminx1 +x u xwmax ywminy1 +y u ywmaxBn bt phng trnh trn c th c vit li theo hnh thc sau:pkuqk, k = 1, 2, 3, 4 y p v q c nh ngha nh sau: p1 = -x,q1 = x1 - xwminp2 = -x,q2 =xwmax x1 p3 = -y,q3 = y1 - ywmin p4 =y,q4 = ywmax y1Bt k on thng no song song vi mt trong cc bin ca s s c pk = 0, gi tr k ph thuc vo bin ca s (k = 1, 2, 3, v 4 tng ng vi bin tri, phi, di, trn). Nu vi cc gi tr ca k, chng ta c th gp qk < 0, khi on thng s hon ton nm ngoi bin v c th b loi b khi xt sau ny. Nu qk 0, ng thng tng ng nm trong bin.Khi pk < 0, s ko di khng gii hn caon thng t bn ngoi vo bn trong ca bin ca s ko di. Nu pk > 0, on thng tin t bn trong ra bn ngoi. Vi pk khc 0, chng ta c th tnh gi tr ca u tng ng vi im m ti on thng ko di ct bin k ko di ca ca s:u = qk / pki 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 cch nhn cc cnh ca ca s xem on ko di no t ngoi vo trong (p < 0). i vi cc cnh ca s, chng tatnh rk = qk/ pk. Gi tr ca u1 l ln nht trong tp cha 0 v cc gi Khoa Cng ngh Thng tin ai hoc a LatTrang 68Bai Giang Tom Tt: Hoa May Tinhtr khc ca r. Ngc li, gi tr ca u2 c xc nh bng cch kim tra cc bin xem on no ko di no t bn trong ra bn ngoi (p > 0). Mt gi tr ca rk c tnh cho mi bin ca s, v gi tr ca u2 l nh nht trong tp cha 1 v cc gi tr c tnh ca r.Nu u1 > u2, on hon ton nm ngoi ca s v c th b vt b. Ngc li, cc im 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 on c khi to cc gi tr u1 =0 v u2 = 1. i vi mi bin ca s, cc gi tr thch hp cho p v q c tnh v c dng bi hm cliptest xc nh xem on no c th b loi b hoc xem cc tham s giao im sp sa b thay i khng.Khi p < 0, tham s r c dng cp nht u1; khi p>0, tham s r c dng cp nht u2. Nu vic cp nht u1 hoc u2 a n kt qu u1 > u2, chng ta loi b on thng. Ngc li, chng ta cp nht 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. Nu on 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 trinh minh hoa thut toan Liang-Barskyprocedure clipper (var x1, y1, x2, y2 : float); function cliptest (p, q : real; var u1, u2 : real);Begin result := true; ifp < 0 then begin {on t bn ngoi vo bn trong bin } r := q / p; ifr > u2 thenresult := false {hu b on hoc cp nht u1 nu thch hp} else ifr > 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; ifr < u1 thenresult := false Khoa Cng ngh Thng tin ai hoc a LatTrang 69Bai Giang Tom Tt: Hoa May Tinhelse ifr < u2then u2 := r end {if p > 0} elseifq < 0 then result := fasle; cliptest := result End; {cliptest} Begin {clipper} u1 := 0; u2 := 1; dx := x2 x1; ifcliptest (-dx, x1 xwmin, u1, u2) then ifcliptest (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 nmtrong 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 ai hoc a LatTrang 70Bai Giang Tom Tt: Hoa May Tinhend; {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 ln cp nht u1 v u2 cn ch mt php chia, v cc giao im vi ca s c tnh ch mt ln, khi mccgitr u1vu2vahonthnh. Tri li, thut toncaCohenv Sutherland lp li vic tnh giao im ca on vi cc bin ca s, v mi php tnh giao im cn c hai php chia v nhn.5.4.Giao cua oan thng va a giac liVi tri tng i cua mt im vi oan thngTrong nhiu ng dung, ta quan tm n khai nim na mt phng trong vana mt phng ngoai xac inh bi mt oan thng. Khai nim nay lin quan mt thit n phap vector cua oan thng.Hinh 5.8: Vi tri tng i cua im Q vi oan thng l.Khoa Cng ngh Thng tin ai hoc a LatTrang 71Bai Giang Tom Tt: Hoa May TinhPhng trinh tng quat cua oan thng l co dang ax + by +c = 0. Ky hiu:laca c na mt phng ngoai vana mt phng trong xac inh bi l, trong oD = -c, n = (a,b)t. Tiu chun kim tra im Q thu c mt na phng nao cua oan thng l:Thut toan xa c inh giao im oan thng va a giac liHinh 5.9: Giao cua oan thng va a gia c liThut toan Cyrus-Beck da trn tiu chun loai bon gian bng cach xac inh vitritng i cua mt im vi mt oan thng. Giasa giac li (R) c inh nghia nh mt day ca c inh Pi = (xi, yi),i=0, 1,..., L, trong htoa thc vi P0 = PL. Muc i ch cua phn nay la loai bo nhng phn cu a oan AB khng nm trong ca s (R) (Hinh 5.9).Ky hiu li, i =0, 1,..., L, la oan thng i qua hai inh lin tip Pi, Pi+1. t:Khoa Cng ngh Thng tin ai hoc a LatTrang 72Bai Giang Tom Tt: Hoa May Tinhlacac na mt phng ngoai vamt phng trong xa c inh bi li, trong oni laphap vector cua li c chon hng ra na mt phng ngoai vaDi lahng snao o . Vi(R) latp li nn c xa c inh bi:Y tng cua thut toan nh sau: Vi mi oan thng li,i =0, 1,..., L,chung ta loai bophn cua oan thng AB thuc na mt phng ngoai xa c inh bi li va cp nht AB=AB(il). Nu tai bc nao o, AB (+il) thikt lun giao cua oan thng vaa giac li bng trng; ngc lai, nu bc cui cung phn oan thng AB con lai nm trong (R) chinh la phn giao cn tim.Thut toanCyrus_Beck(Point2D *A, Point2D *B, VertPtr2D Poly)Beginfloat 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)beginS = 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;elsebegint_hit = (D - Dot2D(n, a)) / Denom;Khoa Cng ngh Thng tin ai hoc a LatTrang 73Bai Giang Tom Tt: Hoa May Tinhif (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;End5.5.Giao hai a giacThut toa n Sutherland-HodgmanKyhiu Subj vaClip ladanh sa ch ca c inh cua hai a giac (S) va(C) tng ng. Cobn kha nng xay ra gia mi canh cua (S) va cua (C):1. Hai inh F va S nm trong: xut S.2. inh F nm trong va S nm ngoai: tim giao im I va xut no .3. Hai inh F va S nm ngoai: khng xut.4. inh F nm ngoai va S nm trong: tim giao im I; xut I va S.Khoa Cng ngh Thng tin ai hoc a LatTrang 74Bai Giang Tom Tt: Hoa May TinhHinh 5.10: Bn trng hp vi mi canh cua (S)Xet vidu hinh (a):Khoa Cng ngh Thng tin ai hoc a LatTrang 75Bai Giang Tom Tt: Hoa May TinhHinh 5.11: Vi du thut toan Sutherland-Hodgman1. Danh sa ch Subj sau khi ct (S) vi ca nh bn trai cua (C):(1, 2, D, E, F, G, 3, 4, I, A, 1).2. Danh sa ch Subj sau khi ct (S) vi ca nh bn di cu a (C):(5, 6, E, F, 7, 5, 4, I, A, 1, 5).Khoa Cng ngh Thng tin ai hoc a LatTrang 76Bai Giang Tom Tt: Hoa May Tinh3. Danh sa ch Subj sau khi ct (S) vi ca nh bn phai cua (C):(8, 9, F, 7, 5, 4, I, A, 1, 5, 8).4. Danh sa ch Subj sau khi ct (S) vi ca nh bn trn cua (C):(9, F, 7, 5, 4, I, 10, 11, 5, 8, 9).Thut toa n Weiler-AthertonCa ch tip cn cua Weiler-Atherton nhm tim ra giao cua hai a giac bt ky, thm chicol hng trong ca c a gia c. Ngoai ra co th tim phn hp va hiu hai a giac na. Xet vi duhinh 5.12 sau.Hinh 5.12: Vi du thut toan Weiler-AthertonHai a giac (S) va (C) c biu din bi danh sach ca c inh, ky hiu Subj = (A, B, C, D,E, A) vaClip = (a, b, c, d, e, a) tng ng. Tt cacac giao im cua hai a giac c xac inh valu vao mt danh sach. Trong vi du trn co tt ca sau giao im: 1, 2, 3, 4, 5, 6. Thc hin tin trinh: ln theo hng thun va nhay la xy dng hai danh sa ch:Khoa Cng ngh Thng tin ai hoc a LatTrang 77Bai Giang Tom Tt: Hoa May TinhXut phat tgiao im i vaolaim i tngoai vao trong cu a a gia c(C),duyt trn (S)n khi gp giao im thichuyn sang duyt trn (C),va lp lai.Quakt thu c khi gp im xut phat ban u. Tip tuc kim tra giao im trn (S) cha c i qua valp lai tin trinh trn. Ta cohai a giac sinh ra la(1, B, 2, 1) va (3, 4, 5, 6, 3).Hp hai a giac (S) (C)i trn (S) theo hng thun cho n khi gp i m ra laim i ttrong ra ngoai cua a giac (C) duyt cho n khi gp giao im khac vi (C) thiduyt sang (C) cho n khi gp giao im ktip ri chuyn sang (S). Quakt thu c khi gp im xut phat ban u. Kt qua (S) (C) gm hai a giac: (2, C, 3, 2) (lhng). (4, D, 5, c, d, e, 6, E, A, 1, a, b, 4).Hiu hai a gia c (C) \ (S)i trn (S)theo hng thun cho n khi gp i m vao duyt cho n khi gp giao im khac vi(C) thi duyt sang (C)theo hng ngc cho n khi gp giao im ktip ri chuyn sang (S). Qua kt thuc khi gp im xut phat ban u. (C) \ (S): (1, B, 2, 3, 4, b, a, 1); va (5, 6, e, d, c, 5). (S) \ (C): (4, 5, D, 4); va (6, 3, C, 2, 1, A, E, 6).5.6.Ray tracing hai chiu: phan xa trong bung ki n Muc i ch cua phn nay laa p dung mt skhai nim hinh ho c tao mt ng dung Khoa Cng ngh Thng tin ai hoc a LatTrang 78Bai Giang Tom Tt: Hoa May Tinh ho a: m phong qua trinh chuyn ng cua tia sang trong bung kin.Phng phap Ray tracing lamt cng cuquan trong trong hoa may tinh tng hp ca c anh. Trong tng hp a nh, cac tia sang nhn tao ln theo trong thgii thc ba chiu cha nhiu i tng. ng i cu a mi tia sang xuyn qua cac i tng trong sut ho c phan xalai tuy theo mc phan xacu a i tng cho n khi nodng lai i tng nao o . Mau cua i tng nay sec t cho pixel tng ng trn thit bihin thi . M phong qua trinh Ray tracing rt d dang trong khng gian hai chiu.Hinh dung quyao cua traipinpallnhokhi nova cham vao ca c i tng trong bung kin. Hinh bn di minh hoa nhat ct ngang cu a mt bung kin conm bc tng vacha ba trutron. Trai pinpall bt u tai vitriS va di chuyn theo hng vector c cho n gp vt ca n sebiphan xavadi chuyn theo hng mi. Qua trinh c lp lai nhiu ln. Quyao cu a trai pinpall lang gp khuc mata cothhinh dung ng i cua tia sang di chuyn trong bung kin.Hinh 5.13: Vi du vRay tracing.Chung ta se xy dng thut toan xac inh i tng nao tia sa ng se gp trc va vitriva tram tai o. Vi tri va cham sela im khi u cho cho ng i k tip vi hng di chuyn mi. Vector phan xaHinh 5.14 phn giai vector c thanh thanh phn m do c theo n vathanh phn e vung gc vi n. Ta co, r = e m. Nhng e = c m nn r = c 2m.Khoa Cng ngh Thng tin ai hoc a LatTrang 79Bai Giang Tom Tt: Hoa May TinhHinh 5.14: Phan xa tia sangVi vector m la vector phn giai cua vector c theo vector n nnNnThu tuc xac inh vector phan xa r t vector c va phap vector nReflection(Vector2D c, Vector2D n, Vector2D *r)Beginfloat Coeff = 2*Dot2D(c, n)/Dot2D(n, n);(*r).dx = c.dx - Coeff*n.dx;(*r).dy = c.dy - Coeff*n.dy;EndGiao cua tia sang va ng th ngPhng trinh tham scua tia sang xut phat tS chuyn ng theo vector chiphng c cho biR(t):= S + ct, t 0.Khoa Cng ngh Thng tin ai hoc a LatTrang 80Bai Giang Tom Tt: Hoa May TinhBc tng tng ng ng thng:trong o , phap vector n hng ra ngoai bung kin. Nu 0 thitia sang ct ng thng tai Ph = S + cth , trong o:Vidu, cho ng thng 6x 8y + 10 = 0 vatia sang xut phat tS(7, 4) di chuyn theo vector chi phng c= (2, 1)t. ng thng co n =(6,8)t va D = 10.Ta coSuy ra giao im I:I = S + tc =(7, 4) + (2, 1)1 = (5, 5).Vector phan xaThu tuc xac inh thi im giao thKhoa Cng ngh Thng tin ai hoc a LatTrang 81Bai Giang Tom Tt: Hoa May TinhRay_With_Line(Point2D S, Vector2D c, Vector2D normal, float D, float *t_hit)Beginfloat 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;EndGiao cua tia sang va hinh tronHinh trutng ng ng tron (C) ban kinh R tm I. Xet stng giao cua tia sang vang tron.Ta coSuy raHay tng ngtrong oKhoa Cng ngh Thng tin ai hoc a LatTrang 82Bai Giang Tom Tt: Hoa May TinhNghim cua phng trinh (co th ao)Vidu, cho ng tron (x 1)2 + (y 4)2 = 4 vatia sang xut phat tS(8, 9) di chuyn theo vector chiphng c = (-1, 1)t.Phng trinh giao imAt2 + 2Bt + C = 0,trong oSuy raVy toa giao im la Ph = S + thc =(8 5, 9 5).Vector phan xaKhoa Cng ngh Thng tin ai hoc a LatTrang 83Bai Giang Tom Tt: Hoa May TinhThu tuc xac inh thi im giaoRay_With_Circle(Point2D S, Vector2D c, Point2D Center, float Rad,float*t_hit)Beginfloat 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;EndKhoa Cng ngh Thng tin ai hoc a LatTrang 84Bai Giang Tom Tt: Hoa May TinhChng 6 HOA BA CHIUNi dung chnh Gii thiu hoa 3 chiu (3D). Hin thii tng 3D. Ca c phep 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 hin th 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 m t 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 khi biu din i tng, ta c th chn gc ta v n v o lng sao cho vic biu din l 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 thc hn. o Loi b cc i tng khng nhn thy c: Loi b cc i tng hon ton khng 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 tnh ca cc cht to nn chng v cc ngun sng tn ti trong cnh. C nhiu m hnh chiu sng v to bng : constant-intensity, Interpolate,... o Chuyn t word space 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 mong c. Khoa Cng ngh Thng tin ai hoc a LatTrang 85Bai Giang Tom Tt: Hoa May TinhHnh 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 thun li 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 vng quan st m ta gi l viewing frustum. Viewung frustum c trc trng vi tia nhn, 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 t khng 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 nh trung thc. Kh mt khut cho php xc nh v tr (x,y) trn mn hnh thuc v i tng no 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 mt ca chng. V d : mt hnh lp phng c xy dng t su mt phng, mt hnh tr c 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 ta dng 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 ai hoc a LatTrang 86Bai Giang Tom Tt: Hoa May TinhTch v hng ca hai vc t V1* V2 = dx1dx2 + dy1dy2 + dz1dz2 HayV1* 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 ai hoc a LatTrang 87Bai Giang Tom Tt: Hoa May Tinh 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 km theo. Khi thng tin ca mi mt a gic c nhp, d liu s c in vo cc bngs c 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 hc v bng thuc tnh. Cc bng lu tr d liu hnh hc cha ta cc nh v cc tham s cho bit v nh hng trong khng gian ca mt a gic. Thng tin v thuc tnh ca cc 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 3 danh 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) l mt im bt k ca mt phng v A, B, C, D l cc hng s din t thng tin khng gian ca 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 s dng 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 ai hoc a LatTrang 88Bai Giang Tom Tt: Ha My TnhAxk + 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. Vc t 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 hnh khung ni kt. Mt m hnh khung ni kt gm c mt tp cc nh v tp cc cnh Khoa Cng ngh Thng tin ai hoc a Lat Trang 89Bai Giang Tom Tt: Ha My Tnhni cc nh . Khi th hin bng m hnh ny, cc i tng 3 chiu c v rng v khng ging thc t lm.Tuy nhin, v bng m hnh ny th nhanh nn ngi ta n=(A,B,C) thng dng n trong vic xem phc tho cc i tng. hon thin hn, 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 bng hai danh sch: danh sch cc nh v danh sch cc cnh ni cc nh . Danh sch cc nh cho bit thng tin hnh hc, cn danh sch cc cnh xc nh thng tin v s kt ni. Chng ta hy quan st mt vt th ba chiu c biu din bng m hnh khung ni kt nh sau: Hinh 5.16: M hinh khung kt ni Bng danh sch cc cnh v nh biu din vt th Khoa Cng ngh Thng tin ai hoc a Lat Trang 90Bai Giang Tom Tt: Ha My TnhNgi ta c th v cc i tng theo m hnh khung ni kt bng cch s dng cc php 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 hng theo trc z, khi nm tay li, cc tay chuyn ng theo hng t trc x n trc y. 123 Hinh 5.17: H toa ban tay phai H ta ta theo qui c bn tay tri : bn tay phi sao cho ngn ci hng theo trc z, khi nm tay li, cc ngn tay chuyn ng theo hng t trc x n trc y. 45Khoa Cng ngh Thng tin ai hoc a Lat Trang 91zyxBai Giang Tom Tt: Ha My Tnh67 Hinh 5.18: H toa ban tay trai H ta thun nht: Mi im (x, y, z) trong khng gian -ca c c biu dinbi mtbbnta trongkhnggian 4 chiuthugn(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 = Sz ta c php bin i ng dng.Khoa Cng ngh Thng tin ai hoc a Lat Trang 92zxyBai Giang Tom Tt: Ha My Tnh6.3.2.1 Php quay quanh trc xHinh 5.19 : Phep quay quanh tru c x- L php bin i P(x,y,z) P(x,y,z)qua php quay gc quanh trc x :- Ta c : '+ cos sin 'cos cos ''z y zz y yx xCc ta y,z bin thin tng t php quay gc quanh gc ta trong mt phng yoz (y ng vai tr x, z ng vai tr y).Do ,

,_

1 0 0 00 cos sin 00 sin cos 00 0 0 1 xT6.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 : '+ cos sin 'sin cos ''x z xx z zy yDo , Khoa Cng ngh Thng tin ai hoc a Lat Trang 93zxyPPBai Giang Tom Tt: Ha My Tnh

,_

1 0 0 00 cos 0 sin0 0 1 00 sin 0 cos yT6.3.2.3Php 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 : '+ cos sin 'sin cos ''y x yy x xz zDo o,

,_

1 0 0 00 1 0 00 0 cos sin0 0 cos zT6.3.2.4Php 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 i tng song song vi 1 trong cc trc ta . n gin ta phn tch chuyn ng quay 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 ai hoc a Lat Trang 94Bai Giang Tom Tt: Ha My TnhHinh 5.20 : Phep quay quanh truc x song song vi xBc 1 : Tnh tin x trng vi x.

,_

10 1 0 00 0 1 00 0 0 1] T[-m,-n,-ll n mBc 2 : Quay quanh trc x vi gc

,_

1 0 0 00 cos sin 00 sin cos 00 0 0 1 xTBc 3 : Tnh tin tr li

,_

10 1 0 00 0 1 00 0 0 1= l] n, T[m, = [-m,-n,-l] T1 -l n mDo , ma trn biu din php quay gc quanh trc xsong song x i qua (m,n,l) l :T= T[-m,-n,-l] xTT[m,n,l]VD : Tm nh ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quay gc =45o quanh trc x song song x i qua (1,1,1).Giai : Tnh : T= T[-1,-1,-1] xTT T[1,1,1]A(1,2,1) A=(1,2,1,1) TKhoa Cng ngh Thng tin ai hoc a Lat Trang 95PPxzxyBai Giang Tom Tt: Ha My TnhB(3,2,1) B=(3,2,1,1) TC(3,4,3) C=(3,4,3,1) TD(1,4,3) D=(1,4,3,1) T6.3.2.5Php quay quanh trc bt kXt php quay gc quanh trc bt k, ta thc hin qua cc bc sau :Hinh 5.21: Phep quay quanh tru cbt kyBc 1 : Tnh tin trng gc ta .

,_

1 . . .0 1 0 00 0 1 00 0 0 1= y,-P.z] T[-P.x,-P.z P y P x PBc 2 : Quay quanh trc z gc sao cho P,P thuc (xOz)

,_

1 0 0 00 1 0 00 0 cos sin0 0 cos zTBc 3 : Quay quanh trc y gc sao cho P, P thuc Ox

,_

1 0 0 00 cos 0 sin0 0 1 00 sin 0 cos yTBc 4 : Quay quanh trc x gc : Khoa Cng ngh Thng tin ai hoc a Lat Trang 96zxyPPxBai Giang Tom Tt: Ha My Tnh

,_

1 0 0 00 cos sin 00 sin cos 00 0 0 1 xTBc 5 : Ngc bc 3Bc 6:Ngc bc 2Bc 7 : Ngc bc 1Cch xc nh chiu dng trong cc php quaynh ngha v chiu quay c dng chung cho c h ta theo qui c bn tay phi 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 x o Quay quanh trc y : t trc dng z n trc dng x o Quay quanh trc x : t trc dng x n trc dng y Ngoai cac phep bin i trn, ta xet thm mt s phep bin i Affine kha c sau y: Php i xng qua mt phng ta Php i xng qua trc x, y v z Khoa Cng ngh Thng tin ai hoc a Lat Trang 97Bai Giang Tom Tt: Ha My Tnh Php bin dng Khoa Cng ngh Thng tin ai hoc a Lat Trang 98Bai Giang Tom Tt: Ha My TnhBai tp chng 6 1. Tm vi trimi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quay gc =45o quanh goc toa .2. Tm vi trimi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quay gc =30o quanh im M(1,1,1).3. Tm vi trimi ca hnh ch nht A(1,2,1), B(3,2,1), C(3,4,3), D(1,4,3) sau php quay gc =45o quanh trc xsong song x i qua (1,1,1).Khoa Cng ngh Thng tin ai hoc a Lat Trang 99Bai Giang Tom Tt: Ha My TnhPHU LU CTH VI N HOA OPENGLOpenGL l g?OpenGL (GL l t vit tt ca Graphics Library) l phn mm giao din vi cc phn cng ho. OpenGL c pht trin bi Silicon Graphic Inc. OpenGL cng l mt giao din lp trnh ng dng (Application Program Interface API). N bao gm khong 150 cu lnh h tr nhiu ngn ng nh C, C++, Java, C#...Cho php ngi lp 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 iu hnh my tnh (independence of hardware platform and operating system). Nh mt chng 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 OpenGLCc cu lnh ca OpenGL u s dng tin t gl v cc t tip theo c bt u bng k t hoa, v d glClearColor(). Tng t nh vy, cc hng c nh ngha bng tin t GL_ tip theo l cc t vit hoa c ngn cch bi k t gch di, v d GL_COLOR_BUFFER_BIT. glVertex3fvch ra nh dng vector, nu c loi d liu: f float d double floatS i, (2,3 hoc 4)s signed short integeri signed integerLoi 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 ai hoc a Lat Trang 100Bai Giang Tom Tt: Ha My TnhCu lnh OpenGLcho ta thy c ngha chc nng ca hm.Tham s v loi tham 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 nhiu lnh. V d, glColor*() c gi tr cho cc lnh khc nhau bn thit lp mu hin hnh. HocglClear*()c cc lnh sau:glClearColor(), glClearDepth(), glClearAccum(), glClearStencil().OpenGL l mt my trng thiOpenGL l mt my trng thi. Bn t n ti cc trng thi khc nhau (hoc cc ch ). Chng gi nguyn tc dng cho n khi ta thay i trng thi khc. Chng hn t mu hin hnh l mt bin trng thi. Bn c th t mu hin ti bi mu trng, mu hoc mu no khc, v sau mi i tng c v bi mu cho ti khi bn t mu hin ti bng mu khc. Mu hin ti ch l mt trong nhiu bin trng 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 c mt 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 hn glGetLight*(), glGetError(), hoc glGetPolygonStipple()). Hn na ta c th lu v ly ra cc gi tr ca tp trng thi bin trn thuc tnh stack vi lnh glPushAttrib() hoc glPushClientAttrib() vglPopAttrib() hoc glPopClientAttrib().Cc th vin lin quanMc d OpenGL l cng c mnh song cc i tng v u l nhng i tng hnh 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 trn xc nh hng nhn, ma trn cc php chiu, v biu din cc mt trong khng gian 3 chiu. OpenGL Utility Toolkit (GLUT): bao gm cc th tc nhm n gin ho vic to cc i tng hnh hc. c bit hnh trong khng gian 3 chiu (solid hnh c, wire hnh khung).Khoa Cng ngh Thng tin ai hoc a Lat Trang 101Bai Giang Tom Tt: Ha My TnhKhi lp trnh OpenGL trong C# ta s dng thm mt s th vin sau: csgl.dll, csgl.native.dll, CsGL.Basecode.Hinth cc i tng hnh hc c bn:im, on thng, a gictomt i tnghnhhctccnh, tat ccnhgia(hai hm glBegin(param) v glEnd(). Tham s param a vo cho hm glBegin() s quyt nh i 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 cc gi tr sau:Gi tr nghaGL_POINTS V cc imGL_LINES V cc on thngGL_POLYGON V a gic liGL_TRIANGLES V tam gicGL_QUADS V t gicGL_LINE_STRIP V ng gp khc khng khp knKhoa Cng ngh Thng tin ai hoc a Lat Trang 102Bai Giang Tom Tt: Ha My TnhGL_LINE_LOOP V ng gp khc khp knGL_TRIANGLE_STRIP Mt di cc tam gic lin kt vi nhauGL_TRIANGLE_FAN Mt di cc tam gic lin kt theo hnh qutGL_QUAD_STRIP Mt di cc t gic lin kt vi nhauDanh sch cc hnh th hin s kt qu tng ng ca bin modeHinh phu luc 1: Cac i tng hinh hoc c banQui lut hin th r rng trn hnh v, ring vi GL_QUAD_STRIP c v vi qui lut 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 ai hoc a Lat Trang 103Bai Giang Tom Tt: Ha My Tnh- {sifd} ch nh kiu d liu ca to , ngha c ch nh trong bng sau:K hiu Kiu d liu Tn kiu ca OpenGLs 16 bit - integer GLshorti 32 bit - integer GLintf 32 bit - float GLfloatd 64 bit - float GLdoubleOpenGL ch cho php mt s lnh nm bn trong glBegin() v glEnd()glVertex*() Khai bo vertexglColor*() Thit lp muglIndex*() Thit lp ch mc muglNormal*() Thit lp ta vector ch phngglEvalCoord*() Sinh ta glCallList(), glCallLists() Thc thi Display ListglTexCoord*() Thit lp ta textureglEdgeFlag*() iu khin vic v cnhglMaterial*() Thit lp thuc tnh cht liuMi hm OpenGL ngoi cc hm trn u khng c nm gia glBegin() v glEnd(). Tuy nhin ta vn c th dng cc cu trc iu khin khc (v d 1 vng lp for chng hn).Khoa Cng ngh Thng tin ai hoc a Lat Trang 104Bai Giang Tom Tt: Ha My TnhBt u lam quen OpenGL bng ngn ng C# Mchng trinhVisualStudio .NET(2005) va taoming dung C#trong Windows Application.Hinh phu luc 2:Tao project hoa mi Nhp phai chut vao References, chon Add References ... chon theBrowse thm th vin CsGL. (File csgl.dll)Hinh phu luc 3: Thm th vin OpenGL vao projectKhoa Cng ngh Thng tin ai hoc a Lat Trang 105Bai Giang Tom Tt: Ha My Tnh Nh p pha i chu t vao project va chon Add\Class... (Vi du , t tn lp laOpenGL.cs)Hinh phu luc 4: Thm lp mi vao project Khai bao l p OpenGL:o Khai bao th vi n CsGL.OpenGL;o Tha k l p OpenGLControl.o Khai bao qua ta i phng thc glDraw(), InitGLContext() vaOnSizeChanged(EventArgs e).Hinh phu luc 5: Vit code khi tao ch hoa OpenGLKhoa Cng ngh Thng tin ai hoc a Lat Trang 106Bai Giang Tom Tt: Ha My Tnh LpOpenGLkhaiba otrnnhm t UserControl. Bygi tathmUser Control trn vao Form1 nh sau: (hoc co th ke o User Control qua Form)Hinh phu luc 6:Thm control OpenGL vao form Chay chng trinh th(nh chp file csgl.native.dllvo th mc Debug), nu thy xu t hi n mt pixel mau otrn nn mau en la thanh cng. Khoa Cng ngh Thng tin ai hoc a Lat Trang 107Bai Giang Tom Tt: Ha My TnhHinh phu luc 7: Kt qua khi tao ch hoa OpenGLKhoa Cng ngh Thng tin ai hoc a Lat Trang 108Bai Giang Tom Tt: Ha My TnhVe i tng 3D trong OpenGLOpenGL cho phep vecac i tng 3D ddang vatao cac hiu ng mau, anh sang, bin i trong khng gian 3D rt chinh xac. Sau y lamt shinh anh 3D c lp trinh t th vin OpenGL.Hinh phu luc 8: Ca c i tng hinh hoc 3D c banKhoa Cng ngh Thng tin ai hoc a Lat Trang 109Bai Giang Tom Tt: Ha My TnhHinh phu luc 9:Hinh khi lp phng hin thi bng textureHinh phu luc 10: Hinh 3D va phng ch trong hoa OpenGLHinh phu luc 11: Phao hoa c biu din bng OpenGLKhoa Cng ngh Thng tin ai hoc a Lat Trang 110Bai Giang Tom Tt: Ha My TnhHinh phu luc 12: Game n gian vit bng OpenGLoan chng sau minh ho a vei tng hinh chop tam gia c. Ta thc hin ve4 mt cua hinh chop, mi mt cu a no la mt tam giac gm 3 inh.Vi 3 mt sau cu a i tng trn bi khut nn khi hin thi chi thy mt mt cua hinh chop tam giac.Khoa Cng ngh Thng tin ai hoc a Lat Trang 111Bai Giang Tom Tt: Ha My TnhHinh phu luc 13: Hinh chop tam gia c ban u trong OpenGLthy c cac mt con lai ta phai quay hinh chop tam giac quanh cac truc mt goc nao o . Chng han, ta quay hinh chop mt goc 30o quanh ca c truc x, y, vaz, ta c kt qua sau: glRotatef(30, 1, 1, 1);Hinh phu luc 14: Hinh chop tam giac sau khi quay trong OpenGLKhoa Cng ngh Thng tin ai hoc a Lat Trang 112