Chương 3 Các phép biến đổi trong không gian 2 chiều

 Biểu diễn điểm  Phép biến đổi khái quát  Các phép biến đổi hình học  Các phép biến đổi hệ trục  Chuyển đổi quan sát

pdf31 trang | Chia sẻ: lylyngoc | Lượt xem: 2766 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Chương 3 Các phép biến đổi trong không gian 2 chiều, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3 Các phép biến đổi trong không gian 2 chiều Giảng viên: Ths.Vũ Minh Yến Tổ HTTT- Khoa CNTT Nội dung  Biểu diễn điểm  Phép biến đổi khái quát  Các phép biến đổi hình học  Các phép biến đổi hệ trục  Chuyển đổi quan sát 1. Biểu diễn điểm(1)  Trong hệ toạ độ đề các  M(x,y)  Biểu diễn bằng ma trận:  Ma trận hàng:  Ma trận cột: O x y M (x, y) x y       = y x M [ ]yxM = 1. Biểu diễn điểm(2)  Trong hệ toạ độ thuần nhất  M(kx, ky, k) với k≠0, k=0 điểm M ở vô cùng  k=1 khi đó M(x, y, 1) được gọi là toạ độ đề các của điểm thuần nhất  Biểu diễn bằng ma trận  Ma trận hàng:  Ma trận cột: [ ]1yxM =           = 1 y x M 2. Phép biến đổi hình học khái quát (1)  Phép biến đổi T biến điểm M thành điểm M’:  Công thức biến đổi:  Trong đó: a1, b1, c1, a2, b2, c2 là hằng số  Ma trận biến đổi    ++= ++= 222 111 ' ' cybxay cybxax )','('),( yxMyxM T→           = 1cc 0bb 0aa T 21 21 21 2. Phép biến đổi hình học khái quát (2)  Ta có:  Suy ra: M'= M.T ⇔ ⇔ [ ]1yxM = [ ]1'y'x'M = [ ]=1'y'x [ ]×1yx           1cc 0bb 0aa 21 21 21 [ ]=1'y'x [ ]1cybxacybxa 222111 ++++ 3. Các phép biến đổi hình học  Phép bất biến  Phép tịnh tiến  Phép biến đổi tỉ lệ tại gốc toạ độ  Phép đối xứng  Phép quay tại gốc toạ độ  Phép biến đổi kết hợp 3.1. Phép bất biến  Biến điểm M thành chính nó:  Ma trận biến đổi: )y,x(M)'y,'x('M)y,x(M T ≡→ I 100 010 001 T =           = 3.2. Phép tịnh tiến  Tịnh tiến điểm M một vector (m,n) thành điểm M’:  Công thức biến đổi:  Ma trận biến đổi: v r )'y,'x('M)y,x(M vT→ r O x y M (x, y) x y y' x' M' (x', y')    += += ny'y mx'x           = 1nm 010 001 T 3.3. Phép biến đổi tỉ lệ tại gốc toạ độ  Co dãn so với gốc toạ độ:  Công thức biến đổi: với tlx, tly là các hệ số tỉ lệ  Ma trận biến đổi: Nhận xét:  tlx=tly: phép biến đổi đồng dạng  tlx=tly >1: phép phóng ảnh  tlx=tly <1: phép thu ảnh  tlx ≠ tly: phép biến dạng (phép nhiễu hình) )'y,'x('M)y,x(M T→    ×= ×= ytly'y xtlx'x           = 100 0tly0 00tlx T 3.4.Phép đối xứng  Phép đối xứng qua trục Ox:  Phép đối xứng qua trục Oy:  Phép đối xứng qua tâm O:          − = 100 010 001 T           − − = 100 010 001 T           −= 100 010 001 T 3.5. Phép quay tại gốc toạ độ  Điểm M quay quanh O góc α thành M’:  Công thức biến đổi:  Ma trận biến đổi:  Lưu ý:  Chiều dương góc quay ngược chiều kim đồng hồ O x y M (x, y) x' y y' x M' (x', y') α ( ) )'y,'x('M)y,x(M ,OT  → α    α+α= α−α= cosysinx'y sinycosx'x           αα− αα = 100 0cossin 0sincos T 3.6. Phép biến đổi kết hợp (1)  Điểm M qua phép biến đổi T1 thành M1, M1 qua phép biến đổi T2 thành M2, suy ra tồn tại một phép biến đổi T biến M thành M2:  T được gọi là phép biến đổi kết hợp của T1 và T2, khi đó: T = T1 × T2  Ta có:  M1=M×T1, M2=M1×T2 ⇒ M2=M×T1 ×T2 =M ×(T1 ×T2)  M2=M ×T Suy ra: T= T1 ×T2 )y,x(M)y,x(M )y,x(M)y,x(M)y,x(M 222 T 222 T 111 T 21 →⇔ →→ 3.6. Phép biến đổi kết hợp (2)  Ví dụ 1:  Tính ma trận T với T1, T2 lần lượt là các phép tịnh tiến vecto (a1, b1) và (a2, b2) ? )y,x(M)y,x(M )y,x(M)y,x(M)y,x(M 222 T 222 T 111 T 21 →⇔ →→ Giải quyết vấn đề: Ta có: Suy ra:           ++ =           ×           =×= 1bbaa 010 001 1ba 010 001 1ba 010 001 TTT 21212211 21           = 1ba 010 001 T 11 1           = 1ba 010 001 T 22 2 3.6. Phép biến đổi kết hợp (3)  Ví dụ 2:  Tính ma trận biến đổi biểu diễn phép quay góc α quanh điểm A(x0,y0) bất kỳ. 'MMMMM 3 T 2 T 1 T 321 ≡→→→ Giải quyết vấn đề: Ta phân tích thành các phép biến đổi cơ sở: Trong đó: T1: phép tịnh tiến vecto (-x0,-y0) T2: phép quay tại O góc quay α T3: phép tịnh tiến vecto (x0, y0) Suy ra: T=T1×T2×T3 M(x,y) M'(x',y') A x0 x y0 O y 4. Các phép biến đổi hệ trục toạ độ  Phép biến đổi hệ trục toạ độ là phép biến đổi nghịch đảo của phép biến đổi vật: Thệtrục= Tvật-1  Hai phép biến đổi được gọi là nghịch đảo của nhau nếu phép biến đổi kết hợp của chúng là phép bất biến.  Ví dụ:  Phép tịnh tiến hệ trục bởi vecto (m, n) bằng phép tịnh tiến vật đi vecto (-m,-n)  Phép quay hệ trục tại gốc toạ độ góc α bằng phép quay vật tại gốc toạ độ góc - α 5. Chuyển đổi quan sát  Mục đích  Một số khái niệm  Xây dựng công thức chuyển đổi quan sát  Áp dụng xây dựng bộ công cụ 2D  Áp dụng bộ công cụ 2D để vẽ đồ thị hàm sin 5.1.Mục đích  Mô phỏng hình ảnh trong không gian thực hai chiều lên thiết bị hiển thị (màn hình)  Ví dụ: Hình ảnh biểu diễn trên màn hình Màn hình Không gian thực 2 chiều 5.2. Một số khái niệm  Cửa sổ:  Là một vùng hình chữ nhật trong không gian thực 2 chiều, giới hạn hình ảnh cần hiển thị.  Cửa sổ được xác định bởi đường chéo chính: (xw1,yw1), (xw2, yw2) (xw1, yw1) HÖ to¹ ®é thÕ giíi thùc (xw2, yw2) y O cöa sæ x  Cài đặt:  xw1,yw1, xw2, yw2: kiểu float, biến toàn cục  void cuaso(float x1, float y1, float x2, float y2) { xw1=x1; yw1=y1; xw2=x2; yw2=y2 } 5.2. Một số khái niệm (2)  Khung nhìn:  Là một vùng hình chữ nhật trên màn hình dùng để hiển thị hình ảnh trong cửa sổ.  Khung nhìn được xác định bởi đường chéo chính: (xv1,yv1), (xv2, yv2)  Cài đặt:  xv1,yv1, xv2, yv2: kiểu int, tlx,tly: kiểu float, là các biến toàn cục  void khungnhin(int x1, int y1, int x2, int y2) { xv1=x1; yv1=y1; xv2=x2; yv2=y2; tlx=(xv2-xv1)/(xw2-xw1); tly= (yv2-yv1)/(yw2-yw1); } Hệ toạ độ thiết bị hiển thị Hệ toạ độ màn hình Màn hình Om xm ym (xv1, yv1) (xv2, yv2) Khung nhìn Hệ toạ độ màn hình Màn hình Om xm y x O HÖ to¹ ®é thÕ giíi thùc ym (xw2, yw2) (xw1, yw1) cöa sæ (xv1, yv1) (xv2, yv2) Khung nhìn 5.3. Xây dựng công thức chuyển đổi quan sát Bài toán:  Input:  Cửa sổ  Khung nhìn  Điểm P(x,y)  Output:  Tính Pm(xm,ym)? xw1 xw2 x yw1 yw2 y O Cửa sổ Hệ toạ độ thế giới thực Om xm ym yv1 yv2 xv1 xv2 P(x,y) x y Pm=? xm ym Khung nhìn Hệ toạ độ màn hình Giải pháp 1(1) xw1 xw2 x yw1 yw2 y O cửa sổ Hệ toạ độ thế giới thực Hệ toạ độ màn hình Om xm ym yv1 yv2 xv1 xv2 Khung nhìn P x y Pm=? xm ym A1 B1 C1D1 A B CD M1 N1 M N        = ⇔ 11 11 BA MA AB AM 11 11 DA NA AD AN = Giải pháp 1(2)        = = 11 11 11 11 DA NA AD AN BA MA AB AM ( ) ( )       +− − − = +− − − = ⇔ 12 12 12 m 11 12 12 m yvyyw ywyw yvyv y xvxwx xwxw xvxv x 12 12 12 12 ywyw yvyv tly xwxw xvxv tlx − − = − − = ( ) ( ) ⇒  +−= +−= ⇒ 12m 11m yvyywtlyy xvxwxtlxx Đặt: ( ) ( )  +−= +−= )yvyywRound(tlyy )xvxwxRound(tlxx 12m 11m       − − = − − − − = − − ⇔ 12 1m 12 2 12 1m 12 1 yvyv yvy ywyw yyw xvxv xvx xwxw xwx xw1 xw2 x yw1 yw2 y O cửa sổ Hệ toạ độ thế giới thực Hệ toạ độ màn hình Om xm ym yv1 yv2 xv1 xv2 Khung nhìnP x y Pm=? xm ym A1 B1 C1D1 A B CD M1 N1 M N Giải pháp 2 xw1 xw2 x yw1 yw2 y O cöa sæ x y x1 y1 O1 T1 x2 y2 O2 T2 x3 y3 O3 T3 T4 Om xm ym yv1 yv2 xv1 xv2 Khung nh×n Pm xm ym T1: PhÐp tÞnh tiÕn hÖ trôc vecto v(xw1,yw2) T2: PhÐp ®èi xøng qua trôc Ox T3: PhÐp biÕn ®æi tØ lÖ T4: PhÐp tÞnh tiÕn hÖ trôc vecto u(-xv1,-yv1) T=T1*T2*T3*T4 v r u r T Công thức chuyển đổi quan sát Trong đó 12 12 12 12 ywyw yvyv tly xwxw xvxv tlx − − = − − =    +−= +−= )yvy)ywRound(tly(ym )xv)xwxRound(tlx(xm 12 11 5.4. Xây dựng bộ công cụ 2D(1) yw1 yw2 Hệ toạ độ thế giới thực xw1 xw2 xO Cửa sổ Hệ toạ độ màn hình ym yv1 yv2 Khung nhìn A B y Om xmxv1 xv2 A1 B1 moveto(x,y) lineto(x,y) 5.4. Xây dựng bộ công cụ 2D(2)  Xây dựng 2 công cụ:  void chuyenden(float x, float y):  Con trỏ chuyển tương ứng đến điểm (xm, ym) trên màn hình  void veden(float x, float y):  Vẽ đến điểm (xm, ym) tương ứng trên màn hình 5.4. Xây dựng bộ công cụ 2D(3)  Cài đặt:  void chuyenden(float x, float y) { int xm=(int)(tlx*(x-xw1)+xv1); int ym= (int)(tly*(yw2-y)+yv1); moveto(xm,ym); }  void veden(float x, float y) { int xm=(int)(tlx*(x-xw1)+xv1); int ym= (int)(tly*(yw2-y)+yv1); lineto(xm,ym); } 5.5. Áp dụngbộ công cụ 2D vẽ hàm sin  Bài toán:  Sử dụng thư viện Congcu2D trên viết chương tŕình vẽ đồ thị hàm số y=sinx với điều kiện x∈[-pi;3 pi] trên khung nhìn có kích thước (150, 150), (300; 250). Om xm ym (xv1, yv1) (xv2, yv2) Khung nhìn (xw1, yw1) y x O (xw2, yw2) cửa sổ Code void main() { int gd=0, gm; initgraph(&gd,&gm,”c:\\tc\\bgi”); cuaso(-M_PI,-1.5,3*M_PI,1.5); khungnhin(150,150,300,250); float dx=0.01; float x=xw1; float y=sin(x); chuyenden(x,y); while (x<xw2) { x=x+dx; y=sin(x); veden(x,y); } getch(); closegraph(); }
Tài liệu liên quan