Bài giảng Đồ họa máy tính: Các phép biến đổi 2D

22 151 0
Bài giảng Đồ họa máy tính: Các phép biến đổi 2D

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Đồ họa máy tính: Các phép biến đổi 2D (2D Transformations) có nội dung giới thiệu về bản chất của phép biến đổi hình học, hai phương pháp để biến đổi hình học, các phép biến đổi hình học cơ bản (tịnh tiến, quay, biến đổi tỉ lệ, biến dạng).

2D Transformations Các phép biến đổi 2D Giới thiệu • Bản chất phép biến đổi hình học thay đổi vị trí đối tượng, làm thay đổi đối tượng hướng, kích thước, hình dạng • Hai phương pháp để biến đổi hình học: – Biến đổi đối tượng: thay đổi tọa độ đối tượng – Biến đổi hệ tọa độ: tạo hệ tọa độ tất đối tượng chuyển hệ tọa độ • Các phép biến đổi hình học bản: tịnh tiến, quay, biến đổi tỉ lệ, biến dạng Phép biến đổi hình học • Một phép biến đổi ánh xạ T: T : R2 → R2 P (x , y )  Q (x ' , y ' )  x ' = f (x , y )  y ' = g (x , y ) P(x,y) Q(x’,y’) Phép biến đổi hình học (cont.) • Phép biến đổi Affine phép biến đổi với f(x,y) g(x,y) hàm tuyến tính: x ' = ax + by + c   y ' = dx + ey + f • • Biểu diễn phép biến đổi Affine dạng ma trận:  x '   a b c  x        y '  =  d e f  y  ⇔ Q = T P    0        Thông thường, khảo sát phép biến Affine nên ta thường dùng thuật ngữ phép biến đổi để ngụ ý phép biến đổi Affine Phép tịnh tiến - Translation • Phép tịnh tiến dùng để dịch chuyển đối tượng từ vị trí sang vị trí khác Q try P trx Phép tịnh tiến (cont.) • Gọi tr = (trx , try) vector tịnh tiến từ điểm P đến điểm Q thì: x ' = x + trx   y ' = y + try • Ma trận biến đổi phép tịnh tiến:  trx    T (trx ,try ) =  try  0    Phép quay - Rotation • • • Đổi hướng đối tượng Phép quay gồm có tâm quay C, góc quay α Biến đổi điểm P thành Q cho: P α – P Q nằm đường trịn tâm C, – Góc PCQ α • Q C Do vị trí tâm quay nên ta có loại phép quay: – Phép quay quanh gốc tọa độ – Phép quay quanh tâm • Góc quay theo qui ước chiều dương ngược chiều kim đồng hồ + Phép quay góc α quanh gốc tọa độ Q α P O  cosα  x ' = cos α x − sin α y  ( ) ⇔ T α =  sinα  y ' = sinα x + cosα y   α O − sinα cosα 0  0  Phép quay góc α quanh gốc tọa độ Phép đối xứng tâm (gốc tọa độ) • P Q đối xứng qua gốc tọa độ Do đó, phép đối xứng tâm phép quay quanh gốc tọa độ góc 1800 α=180 P O O Q x ' = − x ⇔ T 1800   y ' = −y ( )  − 0   =  − 0  0   Phép quay góc α quanh tâm Q Q’ P’ P α α C(xc,yc) O P T(-xc,-yc) P’ T(α) Q’ T(xc,yc) Q 10 Phép quay góc α quanh tâm (cont.) • Ta chứng minh phép quay tâm C(xc, yc) góc α kết hợp phép biến đổi sau đây: – Tịnh tiến theo vector (-xc,-yc) để dịch chuyển tâm quay gốc tọa độ: P’ = T(-xc, -yc) P – Quay quanh gốc tọa độ góc α : Q’ = T(α ) P’ – Tịnh tiến theo vector (xc,yc) để đưa tâm quay vị trí ban đầu: Q = T(xc,yc) Q’ • • Kết hợp phép biến đổi ta được: Q = T(xc,yc) T(α ) T(-xc,-yc) P Như vậy, ma trận biến đổi phép quay tâm là: T ( x c , y c ,α ) = T (x c , y c )T (α )T ( − x c ,−y c )  cosα  =  sinα   − sinα cosα (1 − cosα )x c + sinα y c − sinα x c + (1 − cosα )y c 11      Phép biến đổi tỉ lệ - Scaling • • Co giản đối tượng x ' = s x x   y ' = sy y  sx  T (s x , s y ) =    sy 0  0  sx sy gọi hệ số co giản theo trục x trục y 12 Phép biến đổi tỉ lệ (cont.) • Khi sy = đối tượng co giản theo trục x • Khi sx = đối tượng co giản theo trục y 13 Phép biến đổi tỉ lệ (cont.) • • Khi sy = sy ta gọi phép biến đổi đồng dạng – uniform scaling, bảo tồn tính cân xứng đối tượng Nếu sx = sy < phép thu nhỏ, ngược lại phép phóng to Thu nhỏ Phóng to 14 Phép biến đổi tỉ lệ (cont.) Phép đối xứng trục • Đối xứng qua trục hồnh:  x ' = x  sx = ⇔  y ' = −y s y = −1 • Đối xứng qua trục tung: x ' = − x s x = −1 ⇔    y ' = y  sy = 1 0 0 −    0 1  − 0  0    0 1 15 Phép biến dạng - Shearing • Thay đổi hình dạng đối tượng • Phép biến dạng theo trục x làm thay đổi hồnh độ cịn tung độ giữ nguyên  shx  x ' = x + sh y  x ( ) ⇔ T sh , = 0  x y ' = y  0  • 0  0  Phép biến dạng theo trục y làm thay đổi tung độ cịn hồnh độ giữ ngun   x '= x  ( ) ⇔ T , sh =  shy  y y ' = sh x + y y    0  0  16 Phép biến dạng - Shearing • Phép biến dạng tổng quát   x ' = x + shx y ( ) ⇔ T sh , sh =  shy  x y y ' = sh x + y y    shx 0  0  17 Bài tập Biến đổi đối tượng 2D • Mơ tả tính chất hình học đối tượng points color center Hệ tọa độ đối tượng Hệ tọa độ thực – Tâm, có tọa độ so với hệ tọa độ thực : center – Dạng hình học, có dạng đa giác đối xứng qua tâm : points – Màu sắc : color 18 Bài tập Biến đổi đối tượng 2D (cont.) • Áp dụng phép biến đổi đối tượng tr Hệ tọa độ thực – Tịnh tiến đối tượng vectơ tr, thực chất tịnh tiến tâm đối tượng – Quay đối tượng theo góc angle, thực chất quay đỉnh đa giác – … 19 Bài tập Biến đổi đối tượng 2D (cont.) • Cấu trúc liệu #define MAXNUMPOINTS 10 struct Point2D { double x, y; }; struct Object { Point2D center; Point2D points[MAXNUMPOINTS]; int numOfPoints; int color; Point2D tr; double angle; // … }; 20 Bài tập Biến đổi đối tượng 2D (cont.) • Vẽ đối tượng đối tượng: void drawObject(Object &o); – Vẽ đa giác xác định points, lưu ý điểm points[i] có tọa độ thực là: points[i] + center – Đối tượng vẽ màu color • Tịnh tiến đối tượng: void translateObject(Object &o); – Tịnh tiến tâm đối tượng theo vectơ tịnh tiến : center = center + tr – Lưu ý trường hợp đối tượng vượt khỏi khung nhìn: • Tính lại tâm đối tượng • Tính lại vectơ tịnh tiến tr 21 Bài tập Biến đổi đối tượng 2D (cont.) • Quay đối tượng: void roatateObject(Object &o); – Quay đỉnh đa giác đối tượng theo theo góc angle : rotatePoints(o.points[i], o.angle); • Chương trình chính: Object o; initObject(o); while (!kbhit()) { o.color = CYAN; drawObject(o); delay(50); o.color = BLACK; drawObject(o); translateObject(o); ratateObject(o); // … } 22 ... tượng – Biến đổi hệ tọa độ: tạo hệ tọa độ tất đối tượng chuyển hệ tọa độ • Các phép biến đổi hình học bản: tịnh tiến, quay, biến đổi tỉ lệ, biến dạng Phép biến đổi hình học • Một phép biến đổi ánh... P(x,y) Q(x’,y’) Phép biến đổi hình học (cont.) • Phép biến đổi Affine phép biến đổi với f(x,y) g(x,y) hàm tuyến tính: x ' = ax + by + c   y ' = dx + ey + f • • Biểu diễn phép biến đổi Affine dạng... • Bản chất phép biến đổi hình học thay đổi vị trí đối tượng, làm thay đổi đối tượng hướng, kích thước, hình dạng • Hai phương pháp để biến đổi hình học: – Biến đổi đối tượng: thay đổi tọa độ

Ngày đăng: 09/05/2021, 22:12

Mục lục

    2D Transformations Các phép biến đổi 2D

    Phép biến đổi hình học

    Phép tịnh tiến - Translation

    Phép quay - Rotation

    Phép quay một góc α quanh gốc tọa độ

    Phép quay một góc α quanh gốc tọa độ Phép đối xứng tâm (gốc tọa độ)

    Phép quay một góc α quanh tâm bất kì

    Phép biến đổi tỉ lệ - Scaling

    Phép biến đổi tỉ lệ (cont.) Phép đối xứng trục

    Phép biến dạng - Shearing

Tài liệu cùng người dùng

Tài liệu liên quan