Bài giảng Đồ họa Raster - Chương 3, Phần 2: Các phép biến đổi - Bùi Tiến Liên

ppt 46 trang cucquyet12 3400
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đồ họa Raster - Chương 3, Phần 2: Các phép biến đổi - Bùi Tiến Liên", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_do_hoa_raster_chuong_3_phan_2_cac_phep_bien_doi_bu.ppt

Nội dung text: Bài giảng Đồ họa Raster - Chương 3, Phần 2: Các phép biến đổi - Bùi Tiến Liên

  1. ĐỒ HỌA 2D CÁC PHÉP BIẾN ĐỔI Giảng viên Bùi Tiến Lên
  2. Phép biến đổi là gì ? Phép biến đổi là một ánh xạ từ khơng gian R2 vào R2 : -Biến một điểm P thành một điểm P’ -Biến một đối tượng S thành đối tượng S’ T P’ P Ảnh S’ S Trang 2
  3. Cơng thức phép biến đổi Biến đổi dạng ánh xạ T : R2 → R2 P P' Biến đổi dạng hàm P' = T(P) hay ' Px = Tx (Px,Py ) ' Py = Ty (Px,Py ) Trang 3
  4. Định nghĩa biến đổi affine Phép biến đổi affine là phép biến đổi mà các hàm biến đổi Tx, Ty cĩ dạng tuyến tính. Tx(x, y) = ax + cy + e Ty(x, y) = bx + dy + f Trang 4
  5. Hệ tọa độ thuần nhất Hệ tọa độ Đề các Hệ tọa độ thuần nhất P(Px, Py) P(Px, Py, 1) P(Px, Py) P(wPx, wPy, w) Trang 5
  6. Cơng thức xác định ảnh của một điểm Dạng hàm ' Px = aPx + cPy + e ' Py = bPx + dPy + f Dạng ma trận P' = P.M Ma trận biến đổi hoặc a b 0 ' ' (Px Py 1) = (Px Py 1). c d 0 e f 1 Trang 6
  7. Cơng thức xác định ảnh của một điểm Công thức biến đổi dạng hàm Tx (x, y) = 2x + 3y – 5 Ty (x, y) = - 2x + 2y + 4 Hoặc dạng ma trận biến đổi 2 − 2 0 3 2 0 − 5 4 1 Trang 7
  8. Cấu trúc dữ liệu // Lưu thơng tin phep bien doi affine struct TAffine2D { double M[3][3]; }; Trang 8
  9. Biến đổi điểm – Cài đặt TPoint2D TransformPoint2D(TAffine2D T, TPoint2D P) { TPoint2D Q; Q.x = T.M[0][0]*P.x + T.M[1][0]*P.y + T.M[2][0]; Q.y = T.M[0][1]*P.x + T.M[1][1]*P.y + T.M[2][1]; return Q; } Trang 9
  10. Cài đặt đọc biến đổi xén chuyển tọa độ vẽ void Read_Transform_Convert_Draw_2D(CDC *pDC, char *filename, TAffine2D T) { . . . TPoint2D P1, P2; CPoint Q1, Q2; int r, g, b; // Doc doan thang tu tap tin f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b; // Bien doi doan thang P1 = TransformPoint2D(T, P1); P2 = TransformPoint2D(T, P2); // Chuyen toa do doan thang Q1 = ConvertWorldToScreen2D(P1); Q2 = ConvertWorldToScreen2D(P2); // Ve doan thang pDC->MoveTo(Q1.x, Q1.y); pDC->LineTo(Q2.x, Q2.y); . . . } Trang 10
  11. Tính chất phép biến đổi affine Một phép biến đổi affine luơn cĩ 3 tính chất -Bảo tồn tính thẳng -Bảo tồn tỉ lệ -Bảo tồn song song Trang 11
  12. Bảo tồn tính thẳng d là đường thẳng T GT d’ = T(d) KL d’ là đường thẳng d d’ Trang 12
  13. Bảo tồn tỉ lệ T C’ A, B, C là 3 điểm thẳng hàng C B’ GT A’ = T(A) B B’ = T(B) A A’ C’ = T(C) KL A’:B’:C’ = A:B:C Trang 13
  14. Bảo tồn song song d // d d1’ 1 2 T ’ GT d1 = T(d1) d2’ d2’ = T(d2) ’ ’ KL d1 // d2 d d1 2 Trang 14
  15. Hệ quả -Đoạn thẳng biến thành đoạn thẳng. -Đa giác biến thành đa giác. -Đường cong bezier biến thành đường cong Bezier. T T T Trang 15
  16. Biến đổi đối tượng Trang 16
  17. Biến đổi đối tượng Trang 17
  18. Biến đổi đối tượng Trang 18
  19. Biến đổi đối tượng Trang 19
  20. Biến đổi đối tượng Trang 20
  21. Biến đổi đối tượng Trang 21
  22. Biến đổi đối tượng Trang 22
  23. Cơng thức xác định ảnh của một điểm A biến thành A' 2 − 2 0 (5 4 1) = (2 2 1) 3 2 0 − 5 4 1 B biến thành B' 2 − 2 0 (3 0 1) = (3 1 1) 3 2 0 − 5 4 1 Trang 23
  24. Các phép biến đổi affine cơ sở Cĩ 3 phép biến đổi cơ sở -Phép tịnh tiến -Phép quay -Phép tỉ lệ Trang 24
  25. Phép tịnh tiến (translation) Dùng để thay đổi vị trí của các đối tượng từ vị trí này sang vị trí khác. Tham số : - Độ dịch chuyển trên trục Ox : tx - Độ dịch chuyển trên trục Oy : ty ty t x Trang 25
  26. Phép tịnh tiến – cơng thức Dạng hàm ' Px = Px + tx ' Py = Py + ty Dạng ma trận 1 0 0 M = 0 1 0 tx ty 1 Trang 26
  27. Phép tịnh tiến – Cài đặt TAffine2D BuildTranslation2D(double tx, double ty) { TAffine2D T; T.M[0][0]=1; T.M[0][1]=0; T.M[0][2]=0; T.M[1][0]=0; T.M[1][1]=1; T.M[1][2]=0; T.M[2][0]=tx; T.M[2][1]=ty; T.M[2][2]=1; return T; } Trang 27
  28. Phép quay (rotation) Dùng để thay đổi hướng của các đối tượng Tham số : - Tâm quay : O - Gĩc quay : O Trang 28
  29. Phép quay – cơng thức Dạng hàm ' Px = cos Px − sin Py ' Py = sin Px + cos Py Dạng ma trận cos sin 0 M = − sin cos 0 0 0 1 Trang 29
  30. Phép quay – cài đặt TAffine2D BuildRotation2D(double alpha) { TAffine2D T; alpha *= PI/180; T.M[0][0]=cos(alpha); T.M[0][1]=sin(alpha); T.M[0][2]=0; T.M[1][0]=-sin(alpha); T.M[1][1]=cos(alpha); T.M[1][2]=0; T.M[2][0]=0; T.M[2][1]=0; T.M[2][2]=1; return T; } Trang 30
  31. Phép tỉ lệ (scaling) Dùng để thay đổi kích thước của các đối tượng Tham số : - Tâm tỉ lệ : O - Hệ số tỉ lệ : sx, sy O Trang 31
  32. Phép tỉ lệ – cơng thức Dạng hàm ' Px = sxPx ' Py = syPy Dạng ma trận s 0 0 x M = 0 sy 0 0 0 1 Trang 32
  33. Phép tỉ lệ – cài đặt TAffine2D BuildScaling2D(double sx, double sy) { TAffine2D T; T.M[0][0]=sx; T.M[0][1]=0; T.M[0][2]=0; T.M[1][0]=0; T.M[1][1]=sy; T.M[1][2]=0; T.M[2][0]=0; T.M[2][1]=0; T.M[2][2]=1; return T; } Trang 33
  34. Nguyên lý kết hợp các phép biến đổi Nếu T1, T2 là phép biến đổi affine Thì - T = T1 + T2 là phép biến đổi affine - M = M1 x M2 T1, M1 T2, M2 T, M Trang 34
  35. Nguyên lý phân rã phép biến đổi Mọi phép biến đổi affine bất kỳ đều cĩ thể phân rã thành một chuỗi các phép biến đổi cơ bản. T T1 Tn T2 T3 Trang 35
  36. Cài đặt nguyên lý kết hợp TAffine2D operator + (TAffine2D T1, TAffine2D T2) { TAffine2D T; for(int i=0; i<3; i++) for(int j=0; j<3; j++) { T.M[i][j] = T1.M[i][0]*T2.M[0][j] + T1.M[i][1]*T2.M[1][j] + T1.M[i][2]*T2.M[2][j]; } return T; } Trang 36
  37. Phép đồng nhất (Identity) Biến “nĩ” thành chính “nĩ” Dạng hàm ' Px = Px ' Py = Py Dạng ma trận 1 0 0 M = 0 1 0 0 0 1 Trang 37
  38. Phép đồng nhất – Cài đặt TAffine2D BuildIdentity2D() { TAffine2D T; T.M[0][0] = 1; T.M[0][1] = 0; T.M[0][2] = 0; T.M[1][0] = 0; T.M[1][1] = 1; T.M[1][2] = 0; T.M[2][0] = 0; T.M[2][1] = 0; T.M[2][2] = 1; return T; } Trang 38
  39. Phép đối xứng (reflection) y Đối xứng qua Oy O x Đối xứng qua Ox Trang 39
  40. Phép đối xứng – cơng thức Đối xứng qua trục Ox Đối xứng trục Oy Dạng hàm Dạng hàm ' ' Px = Px Px = −Px ' ' Py = −Py Py = Py Dạng ma trận Dạng ma trận 1 0 0 − 1 0 0 M = 0 − 1 0 M = 0 1 0 0 0 1 0 0 1 Trang 40
  41. Phép biến dạng (shearing) Dùng để làm nghiêng đối tượng theo một trục nào đĩ. Tham số : - Trục nghiêng : Ox - Gĩc nghiêng :   O x O x Trang 41
  42. Phép biến dạng – cơng thức Dạng hàm ' Px = Px + tgPy ' Py = Py Dạng ma trận 1 0 0 1 0 0 M = tg 1 0 hoặc M = shx 1 0 0 0 1 0 0 1 Trang 42
  43. Phép nghịch đảo T T-1 Trang 43
  44. Phép nghịch đảo Nếu T có a b 0 M = c d 0 , với ad - bc 0 e f 1 thì T-1 có d − b 0 ad − bc ad − bc − c a M-1 = 0 ad − bc ad − bc cf − de be − af 1 ad − bc ad − bc Trang 44
  45. Biến đổi mơ hình đối tượng phân cấp Trang 45
  46. Biến đổi mơ hình đối tượng phân cấp Tcon = Tcon-cha + Tcha Hệ qui chiếu gốc Trang 46