Phép bi nit l

Một phần của tài liệu giáo trình đồ họa máy tính (Trang 60 - 126)

Phépbi n it l làm thay ikích thư c itư ng. cohaygiãn t a c a m t i m P(x, y) theo tr c hoành và tr c tung l n lư t là SxSy(g i là các h s t l ),tanhân SxSyl nlư tchocáct a c a P.

• Khi các giá tr Sx, Sy nh hơn 1, phép bi n i s thu nh i tư ng. Ngư c l i, khi các giá tr này l n hơn 1,phép bi n i s phóng l n i tư ng.

• Khi Sx= Sy,ngư itag i ólàphép ngd ng. ây làphépbi n ib o toàntínhcânx ngc a itư ng.Tag ilàphépphóng in u|S|>1vàlà phépthunh n u|S|<1.

N uhaih s t l khácnhauthì tag i làphépkhông ngd ng.Trong trư ng h pho c Sxho c Sy cógiátr 1,tag i ólàphépcăng.

4.4 Phép quay

Phépquaylàmthay ihư ngc a itư ng.M tphépquay òih iph icótâm quay, gócquay.Gócquaydươngthư ng ư cquiư c làchi ungư cchi ukim ng h .

Giáotrình H aMáyTính 57

Phép quay quanh g c t a

hình4.2): Hay Q = P.M,trong ó: Hình 4.2 : Phép quay quanh g c t aPhép quay quanh m t i m b t kỳ Hình 4.3 : Phép quay quanh m t i m b t kỳ. Giáotrình H aMáyTính 58

Xét i m P(P.x, P.y) quay quanh i m V(V.x, V.y) m t góc θ n i m

b nsau:

Phéptnhti n(-V.x, -V.y) dchchuy ntâmquayv g ct a . Quayquanhg ct a Om tgócθ.

Phéptnhti n(V.x, V.y) ưatâmquayv v tríban u. Tac nxác nht a c a i m Q(xemhình4.3).

T phéptnhti n(-V.x,-V.y)bi n i i m Pthành P' ta ư c:

P' = P + V

Hay

P'.x = P.x - V.x P'.y = P.y - V.y

Phépquayquanhg ct a bi n i i m P'thành Q'

Q' = P'.M

Hay

Q'.x = P'.x.cosθ - P'.y.sinθ Q'.y = P'.x.sinθ + P'.y.cosθ

Phéptnhti n(V.x, V.y)bi n i i m Q'thành Q ta ư c

Q = Q' + V

Hay

Q.x = Q'.x + V.x Q.y = Q'.y + V.y

Giáotrình H aMáyTính 59

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θ) V y, Q = P.M + tr,trong ó:

4.5 Phép i x ng

Phép ix ngtr ccó th xem làphép quay quanh tr c i x ng mõtgóc 1800. Phươngtrìnhban u: Q.x=a.P.x+c.P.y+tr x Q.y=b.P.x+d.P.y+tr y Hay o Tr c ix nglàtr choành: Tacó: o Tươngt tr c ix nglàtr ctung: Tacó: 4.6 Phép bi n d ng

Phép bi n d ng làm thay i, méo mó hình d ng c a các i tư ng. Bi n d ng theophươngtr c xs làmthay ihoành còntung gi nguyên.

Giáotrình H aMáyTính 60

phépbi n i ư cbi udi nb iphươngtrìnhsau:

Q.x = P.x + h.P.y Q.y = P.y

- Bi n d ng theo phương tr c y s làm thay i tung còn hoành gi nguyên. Q.x = P.x Q.y = g.P.x + P.y 4.7 Phép bi n i Affine ngư c Phépbi n ingư cdùng khôiph cm tphépbi n i ãth chi n.G i Qlà nhc a Pquaphépbi n i Tcómatr nbi n i Mlà P.M Phépbi n ingư c T-1 s có matr n bi n i là M-1là matr nnghch oc a matr n M.V imatr nbi n iAffined ng: thìmatr nnghch olà: • Phép t nh ti n Giáotrình H aMáyTính 61

Phép quayPhép bi n it lPhép bi n d ng 4.8 H t a thu n nh t T a thu nnh t c am t i m trênm tph ng ư cbi udi nb ng b bas t l (xh, yh,h) không ng th i b ng 0và liên h v i cáct a (x, y) c a i m ób i côngth c: N um t i mcót a thu nnh tlà(x, y, z)thìnócũngcót a thu nnh tlà (h.x, h.y, h.z),trong ó hlà s th ckhác0b tkỳ.M t i m P(x, y) s ư cbi u di n dư i d ng t a thu n nh t là (x, y,1). Trong h t a thu n nh t các ma tr n c a

Giáotrình H aMáyTính 62

Phép t nh ti n

Phép quay

Phép bi n it l

Thu n l i c ah t a thu nnh tlà khitak th phaihaynhi u phépbi n i affinethi matr nh p c anhi uphép bi n i ư c tínhb ng cách nhâncác ma tr n c acácphépbi n ithànhph n.

4.9 K t h p các phép bi n i

Quá trìnhápd ng các phépbi n iliên ti p t o nênm t phépbi n i t ng th ư cg ilàs k th pcácphépbi n i. • K t h p phép t nh ti n N u ta th c hi n phép tnh ti n lên i m P ư c i m P', r i l i th c hi n ti p m t phép tnhti n khác lên P' ư c i m Q.Như v y, i m Q là nh c aphép bi n ik th phaiphéptnhti nliênti p. Giáotrình H aMáyTính 63

V y k t h p hai phép tnh ti n là m t phép tnh ti n. T ó, ta có k t h p c a nhi uphéptnhti nlàm tphéptnhti n.

K t h p phép quay

Tương t , ta có t a i m Q là i m k t qu sau khi k t h p hai phép quay quanhg ct a M

R1(θ

1) và MR2(θ 2)là:

K t h p phép bi n it l

Tương t như phép tnh ti n,ta cót a i m Q là i m có ư c sau haiphép tnhti nM

1(Sx1,Sy1), M2(Sx2,Sy2)là:

Bài t p chương 4

1. V m thìnhbìnhhànhb ngcáchs d ngphéptnhti n.(V o nth ngAB, sau ótnhti nABthành o nth ngCD//AB;v AD,tnhti nADthànhBC. 2. Vi tchươngtrìnhv m thìnhvuôngABCD(xemhìnhv ).

Giáotrình H aMáyTính 64

• PhóngtohìnhvuôngABCD.

• Bi nd nghìnhvuôngthànhhìnhthoi.

3. V m telip, sau óv thêm 3elip kháccócùng tâmv ielip ãcho,có dãn tr cOxlà kvàOylà1.

4. Vi tchươngtrìnhmôph ngs chuy n ngc atrái tquayquanhm ttr i. 5. Vi t chương trình v m t ư ng tròn tâm O bán kính R. V m t ư ng kính

AB,vàquay ư ngkínhnàyquanhtâm ư ngtròn.

6. Tìmv trím ic atamgiác A(1,1), B(3, 2), C(2, 4)quaphépquaygóc30oqua i m(5,5).

Giáotrình H aMáyTính 65

GIAO CÁC I NG H A

N idung chính

Kháini mc as .

Thi tk vàcài t ư ccácthu ttoántìmgiaocác itư ng h a: ư ng th ng, hìnhch nh t, agiác.

K thu tRaytracing.

5.1. M u

Hình nh trong h t a th gi i th c ư c hi n th trên các h t a thi t b d atrênh t a h a.Ch ngh n,trongm tvùng h atac nxác nhvùngnào c ahình nh s ư chi nth và mu n tnó âu trênh t a thi t b.M t vùng ơnl ho cvàivùngc ahình nhcóth ư cch n.Nh ngvùngnàycóth ư c t nh ngv trítách bi t, ho c m t vùngcó th ư c chènvào m t vùngl nhơn. Quá trìnhbi n inàyliênquan nnh ngthaotácnhưtnhti n,bi n i t l vùng ư c ch nvàxóab nh ngph nbênngoàivùng ư cch n.

Vùngcód nghìnhch nh t ư cxác nhtrongh t a th gi ith c ư cg i làm t c a s (window).Cònvùnghìnhch nh ttrênthi tb hi nth c as óánh x n ư cg ilàm t vùng quan sát (viewport).

Hình5.1:C a s vàvùngquansát

Giáotrình H aMáyTính 66

nh ngph n trongph mvic as .M ith bênngoàic as s b lo ib .Cácth t c lo ib cácph nhình nhn mbênngoàibiênc as ư cg ilàcácthu ttoántìm giaoho cc txén(clipping).

V n tra trên âycũng làm t trongnh ng v n cơs ,quantr ng c a h a máy tính như xác nh ph n giao c a các i tư ng h a: giao c a hai o n th ng, o nth ng và hìnhch a nh t, agiác và hìnhch nh t, … Các thu t toánc n th chi nnhanhnh tcóth minhh ac pnh tcáck tqu thay itrong ngd ng

h a.Phươngphápgi itích ư cdùng gi iquy tcácbàitoántrongchươngnày.

5.2. Giaoc ahai o nth ng

Taxétgiaoc ahai ư ngth ng iquahai i m ư cminhh athôngquathíd ơngi nsau: ư ngth ng iquat a (4,2) vàt a (2,0)cógiaov i o nth ng i qua(0,4)và(4,0)?

Gi i pháp

- Xác nh phương trình ư ng th ng qua 2 i m y= ax +b,trong ó a =(y 2 - y 1)/(x2 -x1) - T thíd trên,tacó: y= x -2và y=- x +4 giao i mt i(3,1) T ngquát:n utacóy=a 1 +b1xy=a2 +b2xthìgiao i ms t i: x i =-(a1 -a2)/(b1 -b2) y i = a1 +b1xi

Trư ngh p cbi t: ư ngth ngsongsongv itr c xhaytr c y,haysongsong v inhau.N us d ngphươngpháptìmgiao ư ngth ng: òih iki mtrat a c a giao ư ngth ngcón mtrongcác o nth ng.

Phươngphápbi udi n o nth ngb ngthams s hi uqu hơn, o nth ngth nh t t (xA,yA) n(xB,yB); o n th ngth hai t (xC,yC) n(xD, yD); tính toángiao c a2 o nth ngt it a cót,s:

Hình 5.2: Bi u di n tham s c a o n th ng

5.3. o nth ngvàhìnhch nh t

V trítương ic a o nth ngvàhìnhch nh t(R)cób ntrư ngh psau: 1. C hai umútc a o nth ngn mtronghìnhch nh t,ch ngh nAB. 2. M ttrong hai umútc a o n th ngn m tronghìnhch nh t, ch ng h n

BC.

3. C hai u mút c a o n th ng n m ngoài hình ch nh t nhưng có giao i m,ch ngh nCD.

Giáotrình H aMáyTính 68

i m,ch ngh nDE.

Hình5.3:Cáctrư ngh pgiaoc a o nth ngvàhìnhch nh t

Hai trư ng h p 1 và 4 g i là các trư ng h p t m thư ng, t c là xác nh ư c ngay có t n t i giao i m hay không. Các trư ng h p còn l i ta ph iti n hành thu t toánxác nhgiao i ms ư ctrìnhbàytrongph nti ptheosau.

Hình5.4:Haitrư ngh pt mthư ngc agiao o nth ngvàhìnhch nh t

5.3.1 Tìm giaob ng cáchgi ih phươngtrình

ưabàitoánv xác nhgiao i mc ahai o nth ng ư ctrìnhbàytrongph n 3.2. Theophươngpháp này,chúng tac ntính toánvàki mtra nhi ukh năng; do ó khônghi uqu .

5.3.2 Thu ttoánchianh phân

Giáotrình H aMáyTính 69

Sutherland. M i i m hai u mút o n th ng trong hình nh s ư c gán m t mã nh phân4bit, ư cg ilàmãvùng, giúpnh nravùngt a c am t i m.Cácvùng này ư cxâyd ngd atrêns xemxétv i biênc as ,như hình6-8. M iv tríbit trong mãvùng ư cdùng ch ram ttrongb nv trít a tương ngc a i mso v i c a s : bên trái(left), ph i(right), trên nh (top),dư i áy (bottom). Vi c ánh s theov tríbittrongmãvùngt 1 n4chot ph isangtrái, cácvùngt a cóth liênquanv iv tríbitnhưsau:

Hình 5.5: Mã hóa các u mút c a o n th ng

Giátr 1 b tkỳv trínàoch rar ng i m v trítương ng,ngư cl ibit v trí ólà 0. N u m t i m n m trongc a s ,mã v trí là0000. M t i m bêndư i và bêntráic as cómãvùnglà0101.

Cài t minh h a thu t toán mã hóa

byte EncodePoint(Point LeftTop, Point RightBottom, Point P) { byte code = 0; if (P.X < LeftTop.X) { code |= 8; } if (P.X > RightBottom.X) { code |= 4; } if (P.Y < RightBottom.Y) Giáotrình H aMáyTính 70 {

code |= 2; } if (P.Y > LeftTop.Y) { code |= 1; } return code; }

Thu t toán chia nh phân

1. N u E(A)=0và E(B)=0k tlu n AB∩(R)= AB;thu ttoánd ng. 2. N u[E(A)AND E(B)]!=0k tlu n AB∩(R)=∅;k tthúcthu ttoán. 3. N u E(A)=0và E(B) ≠ 0(t c A∈(R)và B∉ (R))th chi n:

a. t C= A, D= B.

b. Trongkhi dài||CD||l nhơn ε t Mlàtrung i mc a o n CD.

N u E(M)=0thìc pnh t C= Mngư cl i D= M. c. K tlu n AB∩(R)= AM;k tthúcthu ttoán.

4. N u E(A)=0và E(B)=0,hoán ivaitròc a Avà B;l pl ibư c3. 5. Ngư cl i,th chi n:

a. t C= A, D= B.

b. Trongkhi dài||CD||l nhơn ε t Mlàtrung i mc a o n CD.

N u E(M) = 0 áp d ng Bư c 3 cho hai o n MC và MD. K t lu n

AB∩(R)= CD;k tthúcthu ttoán.

N u[E(M)AND E(R)]!=0 t C= M.

Giáotrình H aMáyTính 71

N u[E(R)AND E(D)]!=0k tlu n AB∩(R)=∅;k tthúcthu ttoán.

Hình 5.6: Minh h a c a thu t toán chia nh phân.

5.3.3 Thu ttoánCohen-Sutherland

Xác nh nhanh o n th ng có c n c t xén hay không nh các phép toán logíc ANDvàOR:

• K t qu phép OR hai mã u mút o n th ng cho k t qu 0: c hai i m n mtrongch nh t.

• K tqu phépAND haimã umút o nth ngchok tqu khác0:c hai i mn mngoàich nh t.

Hình 5.7: o n th ng giao v i hình ch nh t

Giaoc a o nth ngv icácc nhch nh tsongsongtr ctung: • xcógiátr Xmin,Xmaxvàh s góca=(y2-y1)/(x2-x1)

Giáotrình H aMáyTính 72

Giao o nth ngv icácc nhsongsongtr choành: • ycógiátr Ymin,Ymaxvàh s góca=(y2-y1)/(x2-x1) • x=x1+(y-y1)/a

Cài t thu t toán Cohen-Shutherland

void InterLineRectangle(Point LeftTop, Point RightBottom, Point A, Point B) {

byte codeA, codeB, codeOut; float x = 0, y = 0;

codeA = EncodePoint(LeftTop, RightBottom, A); codeB = EncodePoint(LeftTop, RightBottom, B); while (true)

{

if (codeA == 0 && codeB == 0) {

return true; }

if ((codeA & codeB) != 0) {

return false; }

if (codeA != 0) codeOut = codeA; else codeOut = codeB;

if ((codeOut & 8) != 0)//L {

x = LeftTop.X;

y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X); }

Giáotrình H aMáyTính 73

{

x = RightBottom.X;

y = A.Y + (float)((x - A.X) * (B.Y - A.Y)) / (float)(B.X - A.X); }

else if ((codeOut & 2) != 0)//B {

y = RightBottom.Y;

x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y); }

else if ((codeOut & 1) != 0)//T {

y = LeftTop.Y;

x = A.X + (float)((y - A.Y) * (B.X - A.X)) / (float)(B.Y - A.Y); }

if (codeOut == codeA) {

A.X = (int)x; A.Y = (int)y;

codeA = EncodePoint(LeftTop, RightBottom, A); }

else {

B.X = (int)x; B.Y = (int)y;

codeB = EncodePoint(LeftTop, RightBottom, B); }

} }

5.3.4 Thu ttoánLiang-Barsky

Giáotrình H aMáyTính 74

tham s ã ư c phát tri n b i Liang và Barsky. Nh n xét r ng hình ch nh t (R) g m t p các i m n m trong m t ph ng gi i h n b i các ư ng th ng qua các c nh

Một phần của tài liệu giáo trình đồ họa máy tính (Trang 60 - 126)

Tải bản đầy đủ (DOCX)

(126 trang)
w