Bài tập các phép biến đổi đồ họa

(0, 10), P1 = (10, 40), P2 = (40, 40), P3 = (50, 0) có bậc p =3. Tính tọa độ (Cx, Cy) của điểm C(u) trên đường cong ứng với tham số tự chọn u ∈ [0, 1]

Phương trình biểu diễn đường cong B-spline bậc 3 (p = 3) đồng nhất có 4 đỉnh điều khiển P0, P1, P2, P3:

C(u)=

C(u)= N0,3(u)P 0 + N1,3(u)P 1 + N2,3(u)P 2 + N3,3(u)P 3

Với các hàm cơ sở Ni,3(u) được xác định (u = 0):

N0,3(u) = (1-u) 3 = 0.

N1,3(u) = (3u 3 -6u 2 + 4) = 0.

0 p= (2dx)-dy 21; 1 0 p>=0 x1 =x1+ y1 = y1+ p= p+(2dx)-(2*dy)

22;

2 -8 p<0 x2 = x y2 = y2+ P = p+2*dx

22;

3 0 p>=0 x3 =x3+ y3 = y3+ p= p+(2dx)-(2dy)

23;

4 -8 p<0 x4 = x y4 = y4+ p = p+2*dx

23;

5 0 p>=0 x5 =x5+ y5 = y5+ p= p+(2dx)-(2dy)

24;

6 -8 p<0 x6 = x y6 = y6+ p = p+2*dx

24;

7 0 p>=0 x7 =x7+ y7 = y7+ p= p+(2dx)-(2dy)

25;

8 -8 p<0 x8 = x y8 = y8+ p = p+2*dx

25;

Các điểm tọa độ nguyên theo thuật toán Bersenham

  1. A(21;1) và B(25;9)

Ta có x=4, y=8. Ta có bảng:

k pk = pk-1 Kiểm tra pk

Tính toán (xk,yk)

0 p = (2*dy)-dx = 8 21; 1 8 p>=0 x1 =x y1 = y1+ p=p+2(dx-dy)

21;

2 0 p>=0 x2 =x y2 = y2+ p=p+2(dx-dy)

21;

3 -8 p<0 x3 = x3+ y3 = y p= p+2*dy

22;

4 8 p>=0 x4 =x y4 = y4+ p=p+2(dx-dy)

22;

5 0 p>=0 x5 =x y5 = y5+ p=p+2(dx-dy)

22;

6 -8 p<0 x6 = x6+ y6 = y p= p+2*dy

23;

7 8 p>=0 x7 =x y7 = y7+ p=p+2(dx-dy)

23;

8 0 p>=0 x8 =x y8 = y8+ p=p+2(dx-dy)

23;

9 -8 p<0 x9 = x9+ y9 = y p= p+2*dy

24;

10 8 p>=0 x10 =x y10 = y10+ p=p+2(dx-dy)

24;

11 0 p>=0 x11 =x y11 = y11+ p=p+2(dx-dy)

24;

12 -8 p<0 x12 = x12+ y12 = y p= p+2*dy

25;

6 86 p>0 x=x- y=y+ p=p+2x-2y+

(15;16)

Kết quả các điểm được tạo ra với các cung 45:

Quadrant- (X,Y)

Quadrant- (-X,Y)

Quadrant- (-X,-Y)

Quadrant- (X,-Y) (21,11) (-21,11) (-21,-11) (21,-11) (20,11) (-20,11) (-20,-11) (20,-11) (19,12) (-19,12) (-19,-12) (19,-12) (18,13) (-18,13) (-18,-13) (18,-13) (17,14) (-17,14) (-17,-14) (17,-14) (16,15) (-16,15) (-16,-15) (16,-15) (15,16) (-15,16) (-15,-16) (15,-16) (16,15) (-16,15) (-16,-15) (16,-15) (15,16) (-15,16) (-15,-16) (15,-16) (14,17) (-14,17) (-14,-17) (14,-17) (13,18) (-13,18) (-13,-18) (13,-18) (12,19) (-12,19) (-12,-19) (12,-19) (11,20) (-11,20) (-11,-20) (11,-20) (11,21) (-11,21) (-11,-21) (11,-21)

Bài tập các phép biến đổi đồ họa

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

  1. 2D Transformations Các phép biến đổi 2D 1
  2. Giới thiệu • Bản chất của phép biến đổi hình học là thay đổi vị trí của đối tượng, làm thay đổi đối tượng về 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 độ của đối tượng. – Biến đổi hệ tọa độ: tạo hệ tọa độ mới và tất cả đối tượng sẽ được chuyển về hệ tọa độ mới. • 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. 2
  3. Phép biến đổi hình học • Một phép biến đổi là một ánh xạ T: T : R2 → R2 x ' = f ( x , y ) P (x ,y )  Q(x ',y ')  y ' = g ( x , y ) P(x,y) Q(x’,y’) 3
  4. Phép biến đổi hình học (cont.) • Phép biến đổi Affine là phép biến đổi với f(x,y) và g(x,y) là 2 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ưới dạng ma trận: x ' a b c  x        y '  = d e f  y  ⇔ Q = T .P  1  0 0 1  1       • Thông thường, chúng ta chỉ 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ụ ý là phép biến đổi Affine. 4
  5. 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í này sang vị trí khác. Q try P trx 5
  6. Phép tịnh tiến (cont.) • Gọi tr = (trx , try) là vector tịnh tiến từ điểm P đến điểm Q thì: x ' = x + tr x   y ' = y + tr y • Ma trận biến đổi của phép tịnh tiến: 1 0 tr x    T (tr x , tr y ) =  0 1 tr y  0 0 1    6
  7. Phép quay - Rotation Q • Đổ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 sao cho: α P – P và Q nằm trên đường tròn tâm C, – Góc PCQ bằng α C • Do vị trí của tâm quay nên ta có 2 loại phép quay: – Phép quay quanh gốc tọa độ – Phép quay quanh một tâm bất kì • Góc quay theo qui ước chiều dương là ngược chiều kim đồng h ồ. + 7
  8. Phép quay một góc α quanh gốc tọa độ Q α P α O O  cosα − sinα 0  x ' = cosα x − sinα y    ⇔ T (α ) =  sinα cosα 0 y ' = sinα x + cosα y  0 0 1   8
  9. Phép quay một góc α quanh gốc tọa độ Phép đối xứng tâm (gốc tọa độ) • P và Q đối xứng qua gốc tọa độ. Do đó, phép đối xứng tâm là phép quay quanh gốc tọa độ một góc 1800. α=1800 P O O Q − 1 0 0  x ' = − x    y ' = −y ( ⇔ T 180 0 ) =  0 −1 0   0 0 1   9
  10. Phép quay một góc α quanh tâm bất kì Q Q’ P’ P α α C(xc,yc) O T(-xc,-yc) T(α) T(xc,yc) P P’ Q’ Q 10
  11. Phép quay một góc α quanh tâm bất kì (cont.) • Ta có thể chứng minh phép quay tâm C(xc, yc) một góc α là kết hợp của các phép biến đổi sau đây: – Tịnh tiến theo vector (-xc,-yc) để dịch chuyển tâm quay về gốc tọa độ: P’ = T(-xc, -yc) . P – Quay quanh gốc tọa độ một góc α : Q’ = T(α ) . P’ – Tịnh tiến theo vector (xc,yc) để đưa tâm quay về vị trí ban đầu: Q = T(xc,yc) . Q’ • Kết hợp 3 phép biến đổi trên ta được: Q = T(xc,yc) . T(α ) . T(- xc,-yc) . P • Như vậy, ma trận biến đổi của phép quay tâm bất kì là:  cosα − sinα ( 1 − cosα ) x c + sinα y c    T ( x c , y c , α ) = T ( x c , y c )T (α )T ( − x c , −y c ) =  sinα cosα − sinα x c + ( 1 − cosα ) y c   0 0 1    11
  12. Phép biến đổi tỉ lệ - Scaling • Co giản đối tượng x ' = s x x sx 0 0    T (sx , sy ) =  0 sy 0 y ' = s y y  0 0 1   • sx và sy được gọi là hệ số co giản theo trục x và trục y 12
  13. Phép biến đổi tỉ lệ (cont.) • Khi sy = 1 thì đối tượng co giản theo trục x • Khi sx = 1 thì đối tượng co giản theo trục y 13
  14. Phép biến đổi tỉ lệ (cont.) • Khi sy = sy thì ta gọi đây là phép biến đổi đồng dạng – uniform scaling, bảo toàn tính cân xứng của đối tượng. • Nếu sx = sy < 1 thì đây là phép thu nhỏ, ngược lại thì đây là phép phóng to Thu nhỏ Phóng to 14
  15. Phép biến đổi tỉ lệ (cont.) Phép đối xứng trục • Đối xứng qua trục hoành: • Đối xứng qua trục tung:  x '= x   sx = 1 x ' = − x  s x = −1  ⇔  ⇔ y ' = −y  s y = −1  y '= y   sy = 1 1 0 0  0 − 1 0   0 0 1    − 1 0 0  0 1 0    0 0 1   15
  16. Phép biến dạng - Shearing • Thay đổi hình dạng của đối tượng • Phép biến dạng theo trục x làm thay đổi hoành độ còn tung độ giữ nguyên. 1 sh x 0  x ' = x + sh x y    ⇔ T ( sh x , 0 ) =  0 1 0  y ' = y 0  0 1  • Phép biến dạng theo trục y làm thay đổi tung độ còn hoành độ giữ nguyên.  1 0 0  x '= x    ⇔ T ( 0 , sh y ) =  sh y 1 0 y ' = sh y x + y 16  0 0 1  
  17. Phép biến dạng - Shearing • Phép biến dạng tổng quát  1 sh x 0 x ' = x + sh x y    ⇔ T ( sh x , sh y ) =  sh y 1 0  y ' = sh y x + y  0 0 1   17
  18. Bài tập Biến đổi đối tượng 2D • Mô tả tính chất hình học của đố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
  19. Bài tập Biến đổi đối tượng 2D (cont.) • Áp dụng các phép biến đổi trên đối tượng tr Hệ tọa độ thực – Tịnh tiến đối tượng bằng vectơ tr, thực chất là tịnh tiến tâm của đối tượng – Quay đối tượng theo góc angle, thực chất là quay các đỉnh của đa giác – … 19
  20. Bài tập Biến đổi đối tượng 2D (cont.) • Cấu trúc dữ 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