intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đồ họa máy tính - Chương 2 Các phép biến đổi hình trên hệ toạ độ - Bài 5

Chia sẻ: Nguyễn Nhi | Ngày: | Loại File: PDF | Số trang:7

135
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Các phép biến đổi trong không gian 3 chiều 1. Phép tịnh tiến trong không gian 3 chiều Giả sử trong hệ toạ độ OXYZ có điểm P(x,y,z) cần phải tịnh tiến điểm p theo vectơ T(tx,ty,tz) khi đó ta đ-ợc điểm P'(x',y',z') đ-ợc suy t-ơng tự nh- trong không gian 2 chiều ta có:

Chủ đề:
Lưu

Nội dung Text: Đồ họa máy tính - Chương 2 Các phép biến đổi hình trên hệ toạ độ - Bài 5

  1. Kü thuËt §å ho¹ m¸y tÝnh ë vÝ dô trªn ta cã thÓ vÏ ®å thÞ cña nhiÒu hµm sè kh¸c nhau mµ kh«ng cÇn lËp l¹i ch−¬ng tr×nh, mµ chØ cÇn thay hµm míi g¸n l¹i c¸c gi¸ trÞ cña Xmin, Xmax vµ Ymin, Ymax tøc lµ ®−a bµi to¸n vÒ t×m gi¸ trÞ lín nhÊt vµ nhá nhÊt cña hµm sè ë trªn ®o¹n [Xmin, Xmax] T−¬ng tù nh− vËy ta còng cã thÓ ¸p dông cho ch−¬ng tr×nh m« t¶ c¸c phÐp biÕn h×nh ®Ó h×nh vÏ cã thÓ ®−îc phãng to lªn ®Çy mµn h×nh. Bμi tËp : 1. LËp ch−¬ng tr×nh vÏ ®å thÞ cña c¸c hµm ®· biÕt 2. LËp ch−¬ng tr×nh m« t¶ phÐp biÕn mét ®o¹n th¼ng thµnh mét ®o¹n th¼ng qua c¸c phÐp biÕn h×nh ®· nãi ë trªn. 3. LËp ch−¬ng tr×nh m« t¶ phÐp biÕn mét ®a gi¸c thµnh mét ®a gi¸c qua c¸c phÐp biÕn h×nh ®· nãi ë trªn. 4. LËp ch−¬ng tr×nh m« t¶ phÐp biÕn mét ®−êng trßn thµnh mét ®−êng trßn qua c¸c phÐp biÕn h×nh ®· nãi ë trªn. 5. LËp ch−¬ng tr×nh m« t¶ phÐp biÕn mét ®−êng Elip thµnh mét ®−êng Elip qua c¸c phÐp biÕn h×nh ®· nãi ë trªn. 6. LËp ch−¬ng tr×nh m« t¶ phÐp biÕn mét ®−êng Hypebol thµnh mét ®−êng Hypebol qua c¸c phÐp biÕn h×nh ®· nãi ë trªn. $5. C¸c phÐp biÕn ®æi trong kh«ng gian 3 chiÒu 1. PhÐp tÞnh tiÕn trong kh«ng gian 3 chiÒu Gi¶ sö trong hÖ to¹ ®é OXYZ cã ®iÓm P(x,y,z) cÇn ph¶i tÞnh tiÕn ®iÓm p theo vect¬ T(tx,ty,tz) khi ®ã ta ®−îc ®iÓm P'(x',y',z') ®−îc suy t−¬ng tù nh− trong kh«ng gian 2 chiÒu ta cã: ⎡1 0⎤ 0 0 ⎢0 0⎥ 1 0 ( x ′, y ′, z ′,1) = ( x, y, z,1) × ⎢ ⎥ ⎢0 0⎥ 0 1 ⎢ ⎥ ⎣t x ty tz 1⎦ → = op . T( tx, ty, tz) 2. PhÐp quay trong kh«ng gian ba chiÒu Trùc tiÕp suy tõ tr−êng hîp 2 chiÒu. Gi¶ sö cã vect¬ → =(x,y,z) cÇn ph¶i quay → op op quanh trôc Ox mét gãc ϕ, ta ®−îc vect¬ → ′ =(x',y',z') x¸c ®Þnh theo c«ng thøc: op 41
  2. Kü thuËt §å ho¹ m¸y tÝnh ⎡1 0⎤ 0 0 ⎢0 cos ϕ sin ϕ 0⎥ ⎥ = → . R ( x, ϕ ) ( x ′, y ′, z ′ ,1) = ( x, y, z,1) × ⎢ op ⎢0 − sin ϕ cos ϕ 0⎥ ⎢ ⎥ ⎣0 1⎦ 0 0 T−¬ng tù nÕu quay → quanh trôc Oy th× → ′ ®−îc x¸c ®Þnh theo c«ng thøc sau: op op ⎡cos ϕ 0 − sin ϕ 0⎤ ⎢0 0⎥ 1 0 ( x ′, y ′, z ′,1) = ( x, y, z,1) × ⎢ ⎥ ⎢ sin ϕ 0 cos ϕ 0⎥ ⎢ ⎥ ⎣0 1⎦ 0 0 → → op ′ = op . R ( y, ϕ) PhÐp quay quanh trôc OZ T−¬ng tù nÕu quay → quanh trôc OZ th× → ′ ®−îc x¸c ®Þnh theo c«ng thøc sau: op op ⎡ cos ϕ sin ϕ 0⎤ 0 ⎢− sin ϕ cos ϕ 0⎥ 0 ( x ′, y ′, z ′,1) = ( x, y, z,1) × ⎢ ⎥ ⎢0 0⎥ 0 1 ⎢ ⎥ ⎣0 1⎦ 0 0 → = → . R ( z, ϕ ) op ′ op 3. PhÐp co gi∙n trong kh«ng gian 3 chiÒu Gi¶ sö trong hÖ to¹ ®é OXYZ trôc OX co gi·n víi hÖ sè lx,OY co gi·n víi hÖ sè ly, trôc OZ co gi·n víi hÖ sè lz, khi ®ã trong hÖ to¹ ®é OXYZ ta cã → ′ ®−îc x¸c ®Þnh op theo c«ng thøc sau: ⎡lx 0 0 0⎤ ⎢ 0 ly 0 0⎥ ( x ′, y ′, z ′,1) = ( x, y, z,1) × ⎢ ⎥ ⎢ 0 0 lz 0⎥ ⎢ ⎥ ⎣ 0 0 0 1⎦ → → op ′ = op . L(lx, ly, lz) 4.X¸c ®Þnh ®iÓm ®èi xøng qua mÆt ph¼ng 42
  3. Kü thuËt §å ho¹ m¸y tÝnh Gi¶ sö cho mÆt ph¼ng Π x¸c ®Þnh bëi ax+by+cz=d vµ cho ®iÓm P h·y t×m P' ®èi xøng víi P qua mÆt ph¼ng Π Gäi → lµ vÐct¬ ph¸p tuyÕn cña Π : → =(a,b,c). n n Gäi Q lµ ®iÓm thuéc Π sao cho PQ ⊥ Π Q=(x ,y ,z ) , P=(x,y,z) 111 → = α. n ⇒ x-x =αa; y-y =αb; z-z =αc → ⇒ pq 1 1 1 v× Q∈Π → ax +by +cz =d 1 11 ⇒ a(x-αa)+b(y-αb)+c(z-αc)=d d − ax − by − cz ⇒ α= a 2 + b2 + c x = x-αa; y1= y-αb; z = z-αc do ®ã ta x¸c ®Þnh ®−îc Q 1 1 Sau khi x¸c ®Þnh Q ®Ó x¸c ®Þnh P' ta h·y tÞnh tiÕn P theo vect¬ 2 → pq P'=P × T(2.(x -x), 2.(y -y), 2.(z -z)) 1 1 1 5. C¸ch vÏ h×nh 3 chiÒu trªn mµn h×nh m¸y tÝnh : a. HÖ to¹ ®é trong kh«ng gian ba chiÒu : Trong kh«ng gian 3 chiÒu ng−êi ta hay dïng 2 hÖ to¹ ®é ®ã lµ hÖ to¹ ®é tay ph¶i vµ hÖ to¹ ®é tay tr¸i : 43
  4. Kü thuËt §å ho¹ m¸y tÝnh Trong m¸y tÝnh, khi th× ta dïng hÖ to¹ ®é tay ph¶i, khi th× ta dïng hÖ to¹ ®é tay tr¸i (nh− khi dïng c¸c thuËt to¸n ®Ó xö lý c¸c h×nh khuÊt mÆt khuÊt theo ®é s©u, cã nghÜa lµ nÕu mét ®iÓm nµo ®ã cã to¹ ®é theo trôc Oz cµng lín th× ®iÓm Êy n»m cµng s©u). §Ó biÓu diÔn mét ®iÓm trong kh«ng gian 3 chiÒu ta ph¶i ®−a nã vÒ kh«ng gian 2 chiÒu, Vµ c¸ch ®−a vÒ d¹ng biÓu diÔn trong kh«ng gian 2 chiÒu nh− sau. b. §−a mét ®iÓm biÓu trong kh«ng gian 3 chiÒu sang 2 chiÒu : Gi¶ sö ®iÓm P trong kh«ng gian 3 chiÒu (O,XYZ) cã to¹ ®é lµ (x,y,z), gäi (x',y') lµ to¹ ®é cña nã trong kh«ng gian 2 chiÒu (O,XY) vµ gäi G lµ gãc ph¼ng thùc sù ®−îc t¹o bëi OX vµ OZ (th«ng th−êng G=PI/4). Ta cã : x'x = z.cos(G), y'y = z.sin(G) mµ x' = x + x'x, y' = y + y'y do ®ã : x' = x - z.cos(G), y' = y - x.sin(G) VËy ta cã thñ tôc chuyÓn mét ®iÓm tõ kh«ng gian 3 chiÒu sang kh«ng gian 2 chiÒu nh− sau : 44
  5. Kü thuËt §å ho¹ m¸y tÝnh Procedure 3D_To_2D(P3D : Point_3D; Var P2D : Point_2D); Begin P2D.x := P3D.x - P3D.z * Cos(G); P2D.y := P3D.y - P3D.z * Sin(G); End; Vµ sau ®ã ta thùc hiÖn c¸ch vÏ h×nh trong kh«ng gian 2 chiÒu nh− ®· h−íng dÉn ë bµi tr−íc VÝ dô : VÏ ®−êng cong x=Sin(t), y=Cos(t), z=Sin(t)*Cos(t) Program Duong_ba_chieu; Uses Crt, Graph; Type Point_2D = Record x, y : Real; End; Point_3D = Record x, y, z : Real; End; Const Xmin: Real=0; Ymin: Real=0; Zmin: Real=0; Xmax: Real=639; Ymax: Real=479; Zmax: Real=479; MaxX: Integer=600; MaxY: Integer=440; G : Real=PI/4; Var m,n : Integer; ch: char; CGx,CGy,x,y,z,t,b,Xgoc,Ygoc : Real; p1,p2 : Point_2D; p3 : Point_3D; (*********************) Procedure C3_2(p : Point_3D; Var q : Point_2D); Begin q.x:=p.x-p.z*Cos(G); q.y:=p.y-p.z*Sin(G); End; (*********************) Procedure WTV(p : Point_2D; Var q : Point_2D); Begin q.x:=p.x*CGx; q.y:=p.y*CGy; 45
  6. Kü thuËt §å ho¹ m¸y tÝnh End; (*********************) Procedure VTS(p : Point_2D; Var q : Point_2D); Begin q.x:=Xgoc+p.x; q.y:=Ygoc-p.y; End; (********************) Procedure He_Truc; Begin SetLineStyle(1,0,1); Line(Round(Xgoc),0,Round(Xgoc),GetMaxY); Line(0,Round(Ygoc),GetMaxX,Round(Ygoc)); Line(0,Round(Ygoc+Xgoc),639,Round(Ygoc+Xgoc)-639); SetLineStyle(0,0,1); End; (*********************) Procedure bp(t: Real; Var p : Point_3D); Begin p.x:=Sin(t); p.y:=Cos(t); p.z:=Sin(t)*Cos(t); end; (*********************) Begin clrscr; m:=0; InitGraph(m,n,'c:\tp\bgi'); DirectVideo:=False; MaxX:=GetMaxX; MaxY:=GetMaxY; b:=2*pi/360; Xmin:=-1; Xmax:=1; Ymin:=-1; Ymax:=1; Zmin:=-1/2; Zmax:=1/2; Xmin:=Xmin+Zmin*Sin(G); Xmax:=Xmax+Zmax*Cos(G); Ymin:=Ymin+Zmin*Sin(G); Ymax:=Ymax+Zmax*Sin(G); If Xmin>0 Then Xmin:=0; If Ymin>0 Then Ymin:=0; If Xmax
  7. Kü thuËt §å ho¹ m¸y tÝnh Ymin:=CGy*Ymin; Ymax:=CGy*Ymax; Xgoc:=0; If Xgoc>Xmin Then Xgoc:=Round(ABS(Xmin)); Ygoc:=0; If Ygoc2*pi+b; Readln; CloseGraph; End. Bμi tËp : 1. Thùc hiÖn c¸c phÐp tÞnh tiÕn, phÐp quay, phÐp co d·n cho mét ®o¹n th¼ng 2. Thùc hiÖn c¸c phÐp tÞnh tiÕn, phÐp quay, phÐp co d·n cho mét tø diÖn 3. Thùc hiÖn c¸c phÐp tÞnh tiÕn, phÐp quay, phÐp co d·n cho mét h×nh hép ch÷ nhËt 4. VÏ c¸c ®−êng cong ba chiÒu ®· biÕt 5. Quay ®−êng mét ®−êng th¼ng quanh c¸c trôc ®Ó ®−îc mÆt nãn trßn xoay 6. Quay ®−êng cong ba chiÒu ®· biÕt quanh c¸c trôc ®Ó ®−îc c¸c mÆt trßn xoay 7. Quay ®o¹n th¼ng PQ quanh trôc to¹ ®é OX mét gãc α 8. Quay ®o¹n th¼ng PQ quanh trôc to¹ ®é OY mét gãc α 9. Quay ®o¹n th¼ng PQ quanh trôc to¹ ®é OZ mét gãc α 10. Cho ®iÓm M(x,y,z) h·y x¸c ®Þnh M sau khi quay nã quanh trôc ®i qua ®o¹n th¼ng PQ cho tr−íc 47
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2