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
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:
- bai_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
- ĐỒ HỌA 2D CÁC PHÉP BIẾN ĐỔI Giảng viên Bùi Tiến Lên
- 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
- 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
- Đị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
- 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
- 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
- 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
- Cấu trúc dữ liệu // Lưu thơng tin phep bien doi affine struct TAffine2D { double M[3][3]; }; Trang 8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Biến đổi đối tượng Trang 16
- Biến đổi đối tượng Trang 17
- Biến đổi đối tượng Trang 18
- Biến đổi đối tượng Trang 19
- Biến đổi đối tượng Trang 20
- Biến đổi đối tượng Trang 21
- Biến đổi đối tượng Trang 22
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Phép đối xứng (reflection) y Đối xứng qua Oy O x Đối xứng qua Ox Trang 39
- 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
- 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
- Phép biến dạng – cơng thức Dạng hàm ' Px = Px + tgPy ' 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
- Phép nghịch đảo T T-1 Trang 43
- 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
- Biến đổi mơ hình đối tượng phân cấp Trang 45
- 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