Bài giảng Đồ họa máy tính - Các phép biến đổi hai chiều - Ngô Quốc Việt
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đồ họa máy tính - Các phép biến đổi hai chiều - Ngô Quốc Việt", để 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_may_tinh_cac_phep_bien_doi_hai_chieu_ngo_qu.pdf
Nội dung text: Bài giảng Đồ họa máy tính - Các phép biến đổi hai chiều - Ngô Quốc Việt
- BÀI GIẢNG ĐỒ HỌA MÁY TÍNH CÁC PHÉP BIẾN ĐỔI HAI CHIỀU NGÔ QUỐC VIỆT 2009
- Nội dung • Giới thiệu. • Các phép biến đổi cơ bản • Biểu diễn ma trận • Bài tập • Giải đáp thắc mắc 2
- Giới thiệu • Định nghĩa: biến đổi là ánh xạ các điểm (x,y) từ một hệ tọa độ thành (x’, y’) trong hệ tọa độ khác. 3
- Một số thuật ngữ 4
- Các biến đổi cơ bản 5
- Biến đổi tỉ lệ • Scaling: mỗi giá trị tọa độ được nhân với tỉ lệ khác nhau. • Uniform scaling: các giá trị tọa độ được nhân với cùng tỉ lệ. 2 6
- Biến đổi tỉ lệ • Non-uniform scaling: different scalars per component: X 2, Y 0.5 • Có thể biểu diễn phép biến đổi bằng ma trận? 7
- Biến đổi tỉ lệ • Biến đổi tỉ lệ x' ax y' by • Dạng ma trận x' a 0 x y' 0 b y Ma trận tỉ lệ 8
- Phép quay (x’, y’) (x, y) x’ = x cos() - y sin() y’ = x sin() + y cos() 9
- Phép quay x = r cos (f) y = r sin (f) x’ = r cos (f + ) y’ = r sin (f + ) (x’, y’) Trig Identity x’ = r cos(f) cos() – r sin(f) sin() (x, y) y’ = r sin(f) sin() + r cos(f) cos() Substitute x’ = x cos() - y sin() f y’ = x sin() + y cos() 10
- Phép quay • Biểu diễn bằng ma trận: x' cos sin x y' sin cos y • Mặc dù sin() và cos() không là hàm tuyến tính theo , – x’ là kết hợp tuyến tính của x và y. – y’ là kết hợp tuyến tính của x và y. 11
- Các biến đổi cơ bản • Tịnh tiến: – x’ = x + tx – y’ = y + ty • Tỉ lệ: – x’ = x * sx – y’ = y * sy • Biến dạng: – x’ = x + hx*y – y’ = y + hy*x Có thể kết hợp các • Quay: biến đổi – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ 12
- Các biến đổi cơ bản • Translation: – x’ = x + tx – y’ = y + ty • Scale: – x’ = x * sx – y’ = y * sy • Shear: – x’ = x + hx*y – y’ = y + hy*x • Rotation: – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ 13
- Các biến đổi cơ bản • Translation: – x’ = x + tx – y’ = y + ty • Scale: (x,y) – x’ = x * sx (x’,y’) – y’ = y * sy • Shear: – x’ = x + hx*y – y’ = y + hy*x x’ = x*s • Rotation: x y’ = y*sy – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ 14
- Các biến đổi cơ bản • Translation: – x’ = x + tx – y’ = y + ty • Scale: – x’ = x * sx – y’ = y * sy • Shear: – x’ = x + hx*y – y’ = y + hy*x (x’,y’) • Rotation: x’ = (x*s )*cosQ - (y*s )*sinQ – x’ = x*cosQ - y*sinQ x y y’ = (x*s )*sinQ + (y*s )*cosQ – y’ = x*sinQ + y*cosQ x y 15
- Các biến đổi cơ bản • Translation: – x’ = x + tx – y’ = y + ty • Scale: – x’ = x * sx (x’,y’) – y’ = y * sy • Shear: – x’ = x + hx*y – y’ = y + hy*x x’ = ((x*s )*cosQ - (y*s )*sinQ) + t • Rotation: x y x y’ = ((x*sx)*sinQ + (y*sy)*cosQ) + ty – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ 16
- Các biến đổi cơ bản • Translation: – x’ = x + tx – y’ = y + ty • Scale: – x’ = x * sx – y’ = y * sy • Shear: – x’ = x + hx*y – y’ = y + hy*x x’ = ((x*s )*cosQ - (y*s )*sinQ) + t • Rotation: x y x y’ = ((x*sx)*sinQ + (y*sy)*cosQ) + ty – x’ = x*cosQ - y*sinQ – y’ = x*sinQ + y*cosQ 17
- Biểu diễn bằng ma trận • Biểu diển biến đổi hai chiều bằng ma trận a b c d • Thực hiện biến đổi bằng cách nhân ma trận cho từng tọa độ điểm. x' ax by x' a b x y' c d y y' cx dy 18
- Biểu diễn bằng ma trận • Các biến đổi có thể kết hợp bằng phép nhân ma trận e f i j x' a b x y' c d g h k l y Matrices are a convenient and efficient way to represent a sequence of transformations! 19
- Biểu diễn bằng ma trận • Các phép biến đổi cơ bản như tỉ lệ, quay, đối xứng, biến dạng đều biểu diễn được bằng ma trận 2x2, ngoại trừ phép tịnh tiến. x' sx 0 x x' cos Q sin Q x y' 0 s y y y' sin Q cos Q y x' 1 0 x x' 1 0 x y' 0 1 y y' 0 1 y x' 1 sh x x y' sh y 1 y 20
- Sử dụng hệ tọa độ đồng nhất • Tọa độ đồng nhất: biểu x diễn tọa độ 2 chiều x homogeneous coords vector 3 thành phần. y y • Có vẻ không trực quan, 1 nhưng hiệu quả cho tính toán. 21
- Biểu diễn các biến đổi bằng ma trận 3x3 • Tịnh tiến: 1 0 tx Translation 0 1 t y 0 0 1 x' 1 0 t x x x t x y' 0 1 t y y t y y 1 0 0 1 1 1 tx = 2 ty = 1 22
- Biểu diễn các biến đổi bằng ma trận 3x3 x' 1 0 t x x x' sx 0 0 x y' 0 1 t y y' 0 s 0 y y y 1 0 0 1 1 1 0 0 1 1 Translate Scale x' cos Q sin Q 0 x x' 1 sh x 0 x y' sin Q cos Q 0 y y' sh 1 0 y y 1 0 0 1 1 1 0 0 1 1 Rotate Shear 23
- Biến đổi Affine • Là các biến đổi tuyến tính & tịnh tiến. • Các tính chất của của biến đổi Affine – Bảo toàn tính song song – Bảo toàn tỉ lệ. • Có thể kết hợp nhiều biến đổi thông qua nhân ma trận x' 1 0 tx cos Q sin Q 0 sx 0 0 x y' 0 1 ty sin Q cos Q 0 0 sy 0 y w' 0 0 1 0 0 1 0 0 1 w p’ = T(tx,ty) R(Q) S(sx,sy) p 24
- Biến đổi Affine • Chú ý: nhân ma trận không có tính giao hoán. • Ví dụ: a a a Sai Đúng R(45) T(-3) R(45) T(3) 1 0 3 cos(45) sin(45) 0 1 0 3 ax a'x 0 1 0 sin(45) cos(45) 0 0 1 0 a a' y y 0 0 1 0 0 1 0 0 1 1 1 25
- Bài tập • Bài 7, 8, 9, 10 trang 98 trong giáo trình Đồ họa máy tính-Dương Anh Đức. • Thực hành: cài đặt các phép biến đổi, thừa kế chương trình vẽ trong các bài giảng trước để biến đổi các hình vẽ. 26
- Hỏi đáp 27