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 4

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

186
lượt xem
30
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 2 chiều Chúng ta biết rằng trong không gian hai chiều để biểu diễn các hình ng-ời ta th-ờng chọn hệ toạ độ Decác hoặc hệ toạ độ cực. Để tiện cho việc khảo sát các hình ng-ời ta cần phải thực hiện một số phép biến đổi, d-ới đây ta xem xét một số phép biến đổi cơ bản: tịnh tiến, quay, co giãn trong không gian hai chiều

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 4

  1. Kü thuËt §å ho¹ m¸y tÝnh Ch−¬ng 2 C¸c phÐp biÕn ®æi h×nh trªn hÖ to¹ ®é $4. C¸c phÐp biÕn ®æi trong kh«ng gian 2 chiÒu Chóng ta biÕt r»ng trong kh«ng gian hai chiÒu ®Ó biÓu diÔn c¸c h×nh ng−êi ta th−êng chän hÖ to¹ ®é Dec¸c hoÆc hÖ to¹ ®é cùc. §Ó tiÖn cho viÖc kh¶o s¸t c¸c h×nh ng−êi ta cÇn ph¶i thùc hiÖn mét sè phÐp biÕn ®æi, d−íi ®©y ta xem xÐt mét sè phÐp biÕn ®æi c¬ b¶n: tÞnh tiÕn, quay, co gi·n trong kh«ng gian hai chiÒu 1. PhÐp tÞnh tiÕn: Gi¶ sö trong hÖ to¹ ®é Decac XOY cho ®iÓm P(x,y) ®Ó dÞch chuyÓn ®iÓm P(x,y) ®Õn ®iÓm P'(x',y') theo vect¬ T=[Tx,Ty] khi ®ã x',y' ®−îc x¸c ®Þnh nh− sau: x ′ = x + Tx ⎫ ⎬ (11) . y ′ = y + Ty ⎭ Y P' T Ty y P Tx x O Mét c¸ch h×nh thøc ®Ó tiÖn cho viÖc ký hiÖu ta cã thÓ biÓu diÔn c«ng thøc 1.1 d−íi d¹ng vect¬ sau: ⎡1 0 0⎤ ( x ′ , y ′,1) = ( x, y,1) × ⎢ 0 1 0 ⎥ (2.11) . ⎢ ⎥ ⎢Tx Ty 1 ⎥ ⎣ ⎦ ⎡1 0 0⎤ ⎢0 1 0 ⎥ gäi lµ ma trËn tÞnh tiÕn ký hiÖu lµ T(Tx,Ty) ma trËn ⎢ ⎥ ⎢Tx Ty 1 ⎥ ⎣ ⎦ 35
  2. Kü thuËt §å ho¹ m¸y tÝnh 2. PhÐp quay quanh gèc to¹ ®é PhÐp quay quanh gèc to¹ ®é O mét gãc θ Y P' y' r y P r θ ϕ O x' x X Gi¶ sö ®iÓm P(x,y) lµm víi trôc ox mét gãc ϕ, |OP| = r sau khi quay OP ®i mét gãc θ ta ®−îc vect¬ OP' §iÓm P' cã to¹ ®é (x',y') ®−îc x¸c ®Þnh nh− sau: x'=rcos(ϕ+θ)=r cosϕ cosθ - r sinϕ sinθ y'=rsin(ϕ+θ)=r cosϕ sinθ + rsinϕ cosθ x=rcos(ϕ), y=rsin(ϕ) do ta cã: x ′ = x cos θ − y sin θ⎫ (2.1.2 ) ⎬ y ′ = x sin θ + y cos θ⎭ C«ng thøc (2.1.2) cã thÓ viÕt l¹i mét c¸ch h×nh thøc sau: ⎡ cos θ sin θ 0 ⎤ ( x ′, y ′,1) = ( x, y,1) × ⎢− sin θ cos θ 0 ⎥ ⎢ ⎥ ⎢0 1⎥ 0 ⎣ ⎦ Cã thÓ ký hiÖu ma trËn trªn lµ ma trËn quay ⎡ cos θ sin θ 0 ⎤ ⎢− sin θ cos θ 0 ⎥ = R (θ, O ) ⎢ ⎥ ⎢0 1⎥ 0 ⎣ ⎦ R(θ,O) ký hiÖu cho ma trËn quay quanh gèc to¹ ®é O mét gãc θ 3. PhÐp co gi∙n hÖ to¹ ®é Gi¶ sö cã hÖ to¹ ®é OXY ta cÇn ph¶i gi·n trôc OX víi hÖ sè Lx, trôc OY víi hÖ sè Ly khi ®ã ®iÓm P(x,y) sÏ trë thµnh ®iÓm P'(x',y') biÓu diÔn trong hÖ XOY cã d¹ng: x ′ = L x .x⎫ (213) y ′= L y . y ⎬ .. ⎭ Mét c¸ch h×nh thøc ta cã thÓ viÕt c«ng thøc (2.1.3) ë d¹ng: 36
  3. Kü thuËt §å ho¹ m¸y tÝnh 0 0⎤ ⎡L x ( x ′, y ′,1) = ( x, y,1) × ⎢ 0 0⎥ Ly ⎢ ⎥ ⎢0 1⎥ 0 ⎣ ⎦ ⎡L x 0 0⎤ kÝ hiÖu ma trËn co gi·n L ( L x , L y ) = ⎢ 0 L y 0⎥ ⎢ ⎥ ⎢0 1⎥ 0 ⎣ ⎦ 4. BiÕn ®æi tõ hÖ to¹ ®é thùc sang to¹ ®é mµn h×nh : Tr−íc tiªn ta khai b¸o kiÓu cÊu tróc cña ®iÓm trong kh«ng gian 2 chiÒu nh− sau : Type Point_2D = Record x, y : Real; End; (Tuy r»mg to¹ ®é trªn mµn h×nh lµ kiÓu sè nguyªn nh−ng ta khai b¸o lµ kiÓu sè thùc, v× nÕu khai b¸o lµ kiÓu sè nguyªn c¸c phÐp tÝnh gi÷a sè thùc vµ sè nguyªn hay bÞ trµn sè) a. ChuyÓn tõ to¹ ®é thùc sang cöa sæ nh×n : Gi¶ sö h×nh vÏ cña chóng ta ë hÖ to¹ ®é thùc lµ n»m trong h×nh ch÷ nhËt cã ®Ønh trªn bªn tr¸i lµ (Xmin,Ymin) vµ ®Ønh d−íi bªn ph¶i lµ (Xmax, Ymax) nh− vËy kÝch th−íc cña h×nh vÏ lµ (Xmax-Xmin) x (Ymax-Ymin), nh−ng ta l¹i muèn nh×n h×nh vÏ trong mét cöa sæ cã kÝch th−íc lµ MaxX x MaxY nªn nÕu h×nh vÏ nhá h¬n cña sæ nh×n th× ta ph¶i phãng to lªn, cßn ng−îc l¹i nÕu lín h¬n th× ta ph¶i thu nhá l¹i, nh− vËy ta sÏ thùc hiÖn mét phÐp co d·n theo hÖ sè co d·n lµ : CGx:=MaxX/(Xmax-Xmin); CGy:=MaxY/(Ymax-Ymin); Lóc nµy c¸c to¹ ®é cña c¸c ®iÓm sÏ ®−îc nh©n víi CGx vµ CGy : Xmin:=CGx*Xmin; Xmax:=CGx*Xmax; Ymin:=CGy*Ymin; Ymax:=CGy*Ymax; 37
  4. Kü thuËt §å ho¹ m¸y tÝnh Vµ ta cã thñ tôc chuyÓn mét ®iÓm tõ to¹ ®é thùc sang cöa sæ nh×n nh− sau : Procedure WTV(p : Point_2D; Var q : Point_2D); Begin q.x:=p.x*CGx; q.y:=p.y*CGy; End; b. ChuyÓn tõ cöa sæ nh×n sang mµn h×nh Nh− ta ®· biÕt to¹ ®é cña mµn h×nh cã gèc lµ ®Ønh trªn bªn tr¸i vµ theo chiÒu d−¬ng nh− trªn h×nh vÏ, mµ ta l¹i ph¶i m« t¶ h×nh vÏ nh− lµ ë thÕ giíi thùc, do ®ã ta ph¶i biÕn ®æi h×nh vÏ tõ cöa sæ nh×n sang mµn h×nh. Nh− ë h×nh trªn gèc to¹ ®é O cña h×nh vÏ thùc sÏ cã to¹ ®é ë trªn mµn h×nh lµ : Xgoc:=0; If Xgoc>Xmin Then Xgoc:=Round(ABS(Xmin)); Ygoc:=0; If Ygoc
  5. Kü thuËt §å ho¹ m¸y tÝnh Uses Crt, Graph; Type Point_2D = Record x, y : Real; End; Const Xmin: Real=0; Ymin: Real=0; Xmax: Real=639; Ymax: Real=479; MaxX: Integer=600; MaxY: Integer=440; Var m,n : Integer; ch: char; CGx,CGy,x,b,Xgoc,Ygoc : Real; p1,p2 : Point_2D; (*********************) Procedure WTV(p : Point_2D; Var q : Point_2D); Begin q.x:=p.x*CGx; q.y:=p.y*CGy; 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 Line(Round(Xgoc),0,Round(Xgoc),GetMaxY); Line(0,Round(Ygoc),GetMaxX,Round(Ygoc)); End; (*********************) Function bp(x: Real) : Real; Begin bp:=Sin(x); { bp:=Cos(x); bp:=Sqr(x); } end; (*********************) Begin clrscr; 39
  6. Kü thuËt §å ho¹ m¸y tÝnh m:=0; InitGraph(m,n,''); DirectVideo:=False; MaxX:=GetMaxX; MaxY:=GetMaxY; b:=2*pi/360; Xmin:=0; Xmax:=2*pi; Ymin:=-1; Ymax:=1; { Xmin:=-PI+b; Xmax:=pi-b; Ymin:=-1; Ymax:=1; Xmin:=-50; Xmax:=50; Ymin:=0; Ymax:=2500;} If Xmin>0 Then Xmin:=0; If Ymin>0 Then Ymin:=0; If Xmax
  7. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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