Xem mẫu

  1. Đồ họa máy tính Chƣơng 5 CÁC PHÉP BIẾN ĐỔI HÌNH HỌC 3 CHIỀU 5.1. Giới thiệu đồ họa ba chiều Các đối tƣợng trong thế giới thực phần lớn là các đối tƣợng ba chiều, nên việc thể hiện các đối tƣợng ba chiều trên máy tính là một công việc hết sức cần thiết để đƣa tin học gần gũi với thực tế hơn. Cũng giống nhƣ các cách biểu diễn các đối tƣợng ba chiều trên mặt phẳng khác (nhƣ của máy ảnh, camera, ... ), biểu diễn bằng máy tính cũng phải tuân theo các quy luật về phối cảnh, sáng, tối, ... nhằm giúp ngƣời xem có thể tƣởng tƣợng lại hình ảnh một cách gần đúng nhất. Ngoài ra biểu diễn trên máy tính có ƣu thế giúp ta có thể quan sát đối tƣợng ở nhiều góc cạnh khác nhau, ở các khoảng cách khác nhau. 5.1.1. Tổng quan về đồ họa ba chiều Khi mô hình hóa và hiển thị một cảnh ba chiều, cần phải xem xét rất nhiều khía cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ thứ ba cho các đối tƣợng. Bề mặt đối tƣợng có thể xây dựng bởi nhiều tổ hợp khác nhau của các mặt phẳng và các mặt cong. Ngoài ra, đôi khi cũng cần mô tả một số thông tin bên trong các đối tƣợng. Các công cụ hỗ trợ đồ họa (graphics package) thƣờng cung cấp một số hàm hiển thị các thành phần bên trong, những đƣờng nét tiêu biểu hoặc hiển thị một phần của đối tƣợng ba chiều (solid object). Ngoài ra, các phép biến đổi hình học thƣờng đƣợc sử dụng nhiều hơn và đa dạng hơn trong đồ họa ba chiều so với trong đồ họa hai chiều. Phép biến đổi hệ quan sát trong không gian ba chiều phức tạp hơn nhiều so với trong không gian hai chiều do ta phải chọn lựa nhiều tham số hơn khi mô tả một cảnh ba chiều sẽ xuất hiện trên màn hình nhƣ thế nào. Hình 5.1 Một cảnh đồ họa ba chiều 123
  2. Đồ họa máy tính Các mô tả về một cảnh ba chiều phải đi qua một quy trình xử lí gồm nhiều công đoạn nhƣ phép biến đổi hệ tọa độ quan sát và phép chiếu chuyển cảnh từ hệ tọa độ quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy đƣợc của cảnh, ứng với một hệ quan sát đƣợc chọn nào đó, phải đƣợc xác định và cuối cùng, các thuật toán vẽ mặt sẽ đƣợc áp dụng nhằm tạo ra hình ảnh trung thực (gần với thực tế) của cảnh. 5.1.2. Sơ lƣợc về quy trình hiển thị Quy trình xử lí thông tin trong đồ họa ba chiều là một chuỗi các bƣớc nối tiếp nhau, kết quả của mỗi bƣớc sẽ là đầu vào của bƣớc tiếp theo. Hình 5.2 Quy trình hiển thị đối tượng ba chiều Quy trình bắt đầu bằng việc xây dựng các mô hình đối tƣợng. Các mô hình này thƣờng đƣợc mô tả trong không gian ba chiều (x,y,z). Các mô hình thƣờng thể hiện vật thể (solid) hoặc bề mặt (boundaries) của đối tƣợng. Nhƣ vậy ta có hai kiểu mô hình hóa. Trong solid modeling các đối tƣợng đồ họa cơ sở thƣờng đƣợc dùng để mô tả các 124
  3. Đồ họa máy tính đối tƣợng có thể tích (volume). Trong boundary representations(B-reps), các đối tƣợng đƣợc định nghĩa bởi bề mặt của chúng. Các mô hình thƣờng đƣợc biểu diễn trong một hệ tọa độ cục bộ, mà ta gọi là hệ tọa độ đối tƣợng. Trong hệ tọa độ này chỉcó bản thân đối tƣợng đƣợc định nghĩa, vì vậy gốc tọa độ và đơn vị đo lƣờng thƣờng đƣợc chọn sao cho việc biểu diễn đối tƣợng tiện lợi nhất. Bƣớc đầu tiên trong quy trình hiển thị là biến đổi đối tƣợng từ không gian đối tƣợng (object-space) vào một không gian chung gọi là không gian thực (world space). Trong không gian này các đối tƣợng, nguồn sáng, và ngƣời quan sát cùng tồn tại. Bƣớc này đƣợc gọi là giai đoạn biến đổi mô hình (modeling transformation). Bƣớc tiếp theo là một bƣớc tối ƣu hóa. Trong giai đoạn loại bỏ đơn giản (trivial rejection) cần loại trừ tất cả các đối tƣợng không thể nhìn thấy. Điều này giúp tránh đƣợc việc xử lí một số phần không cần thiết của cảnh (scene) mà ta đang chuẩn bị hiển thị ở các bƣớc sau. Tiếp theo phải chiếu sáng (illumination) các đối tƣợng có thể nhìn thấy đƣợc bằng cách gán cho chúng màu sắc dựa trên các đặc tính của các chất tạo nên vật và các nguồn sáng tồn tại trong cảnh. Sau khi chiếu sáng, cần thực hiện một phép biến đổi hệ tọa độ để đặt vị trí quan sát (viewing position) về gốc tọa độvà mặt phẳng quan sát (viewing plane) về một vị trí mong ƣớc. Bƣớc này gọi là bƣớc đổi hệ quan sát. Sau bƣớc này, các đối tƣợng đƣợc chuyển từ không gian thực sang không gian quan sát (eye space). Trong không gian quan sát, ta phải thực hiện việc xén các đối tƣợng trong cảnh để cảnh nằm gọn trong một phần không gian chóp cụt đƣợc gọi là viewing frustum. Bƣớc này sẽ loại bỏ hoàn toàn các đối tƣợng (các mảnh đối tƣợng) không nhìn thấy đƣợc trong ảnh. Bƣớc tiếp theo là chiếu các đối tƣợng xuống mặt phẳng hai chiều. Bƣớc Projection thực hiện phép biến đổi từ không gian quan sát sang không gian màn hình (screen-space). Trong bƣớc rời rạc hóa (rasterization) ta sẽ chuyển đối tƣợng thành các pixel. Cuối cùng, toàn cảnh sẽ đƣợc hiển thị lên màn hình. 125
  4. Đồ họa máy tính 5.1.3. Mô hình khung nối kết (Wireframe Model) a. Khái niệm Một phƣơng pháp thông dụng và đơn giản để mô hình hóa đối tƣợng là mô hình khung nối kết. Một mô hình khung nối kết gồm có một tập các đỉnh và tập các cạnh nối giữa các đỉnh đó. Khi thể hiện bằng mô hình này, các đối tƣợng ba chiều có vẻ rỗng và không giống thực tế lắm. Để hoàn thiện hơn, ngƣời ta dùng các kĩ thuật tạo bóng và loại bỏ các đƣờng và mặt khuất. (Chúng ta sẽ đề cập vấn đề này ở các chƣơng sau). Tuy nhiên vẽ bằng mô hình này thƣờng nhanh nên ngƣời ta thƣờng dùng nó trong việc xem phác thảo (preview) các đối tƣợng, đặc biệt là trong các hệ CAD. b. Biểu diễn các vật thể ba chiều bằng mô hình khung nối kết Mô hình khung nối kết, hình dạng của đối tƣợng ba chiều đƣợc biểu diễn bằng hai danh sách (list): danh sách các đỉnh (vertices) và danh sách các cạnh (edges) nối các đỉnh đó. Danh sách các đỉnh cho biết thông tin hình học đó là vị trí các đỉnh, còn danh sách các cạnh xác định thông tin về sự kết nối, nó cho biết cặp các đỉnh tạo ra cạnh. Hãy quan sát một vật thể ba chiều đƣợc biểu diễn bằng mô hình khung nối kết nhƣ sau: Bảng danh sách các cạnh và đỉnh biểu diễn vật thể: Hình 5.3 Vật thể ba chiều được biểu diễn bằng mô hình khung nối kết 126
  5. Đồ họa máy tính Có nhiều cách để đặc tả mô hình khung nối kết trên máy tính nhƣ dùng xâu, mảng, ... và mỗi cách đều có các ƣu điểm riêng trong từng ứng dụng cụ thể. Ở đây ta minh họa các biểu diễn mô hình khung nối kết bằng cấu trúc dữ liệu mảng nhƣ sau: #define MAXVERTS 50 //số đỉnh tối đa có thể biểu diễn #define MAXEDGES 100 //số cạnh tối đa typedef struct { float x, y, z; } POINT3D; typedef struct { int NumVerts; //Số đỉnh trong mô hình int NumEdges; //Số cạnh trong mô hình 127
  6. Đồ họa máy tính POINT3D Vert[MaxVerts]; int Edge[MaxEdges][2]; }WIREFRAME; Ngoài ra, đôi khi trong mô hình wireframe ngƣời ta còn mô tả các mặt (phẳng) của đối tƣợng. Mỗi mặt đƣợc định nghĩa bởi một đa giác bao. Ví dụ, đối tƣợng trong hình 5.3 có 7 mặt. 5.2. Một số khái niệm 5.2.1. Phƣơng pháp biểu diễn điểm trong không gian 3 chiều. Việc biểu diễn và hiển thị đối tƣợng trong không gian 3 chiều là cơ sở nền tảng cho việc hiểu và nắm bắt đƣợc hình dạng của đối tƣợng. Qua phép biểu diễn chúng ta có thể quan sát đƣợc đối tƣợng từ tất cả các góc, cũng nhƣ thao tác một cách dễ dàng lên các đối tƣợng này. Việc tƣơng tác nhƣ quay, tịnh tiến, tỉ lệ... lên các đối tƣợng phức tạp có thể chỉ đơn giản bằng cách nhấn chuột lên các đối tƣợng và kết quả đƣợc hiển thị ngay trên màn hình. Các đối tƣợng trong đồ họa 3D đƣợc mô tả nhƣ tập các điểm trong một mặt phẳng. Các điểm đƣợc biểu diễn thông qua tọa độ của chúng viết dƣới dạng các ma trận hay còn đƣợc gọi là các vector vị trí. Có 2 phƣơng pháp biểu diễn các ma trận mà các phép biến đổi đồ họa trên đó là nhƣ nhau bao gồm phƣơng pháp biểu diễn tọa độ theo ma trận 1 hàng 3 cột và ma trận 3 hàng 1 cột. x  hoặc là  y    z  Tập các điểm đƣợc lƣu trữ trong máy tính dƣới dạng các ma trận hay chuỗi điểm mà vị trí của chúng quyết định hình dạng của đƣờng thẳng, đƣờng cong hay ảnh sẽ dễ dàng kiểm soát thông qua các phép biến đổi. Phép biến đổi đồ họa đƣợc mô tả dƣới dạng các ma trận tƣơng ứng cho phép thể hiện các sự biến đổi tọa độ của các điểm qua các phép toán nhân ma trận. Điều đó tạo điều kiện thuận lợi cho ngƣời sử dụng hình dung cũng nhƣ thao tác với các đối tƣợng hình học một cách dễ dàng và đó cũng là một trong những tính năng mạnh của đồ họa máy tính. 128
  7. Đồ họa máy tính 5.2.2. Phƣơng pháp biểu diễn sử dụng hệ tọa độ đồng nhất. Phép biểu diễn thông qua ma trận 3x3 thỏa mãn với mọi phép biến đổi nhƣ quay, tỉ lệ, đối xứng, biến dạng. Điều đó có nghĩa chúng ta luôn có thể xây dựng đƣợc một ma trận tổng hợp từ các phép biến đổi thành phần. Tuy nhiên các phép tịnh tiến trong mặt phẳng 3 chiều đƣợc mô tả bởi 3 phƣơng trình sau: x‘= x + tx y‘= y + ty z‘= z + tz thì không thể biểu diễn thông qua ma trận biến đổi 3x3. Nhƣ vậy với quá trình biến đổi mà trong đó tồn tại phép tịnh tiến thì khả năng đƣa ra một ma trận biến đổi tổng hợp duy nhất là không thể. Điều đó buộc chúng ta phải tìm ra một giải pháp mới hữu hiệu hơn mà trong đó phép biểu diễn điếm thông qua các ma trận đồng nhất là một giải pháp tối ƣu. Phƣơng pháp biểu diễn mở rộng thông qua tọa độ đồng nhất của các vector vị trí không đồng nhất [x y z] là ứng dụng của phép chiếu hình học mà ở đó tọa độ điểm đƣợc mô tả dƣới dạng ma trận [hx hy hz h] và h là một số thực tùy ý. Để đơn giản chọn h = 1. Vậy một điểm trong mặt phẳng ở hệ tọa độ đồng nhất sẽ có 4 thành phần là [x y z 1]. Các phép biến đổi trong mặt phẳng đƣợc biểu diễn dƣới dạng [ X‘ ] = [X ] * [ T ] trong đó [ X‘] = [x‘ y‘ z‘ 1], [ X] = [x y z 1], [T] là ma trận vuông cấp 4. Có thể cải tiến các ma trận vuông cấp 3 trong các phép biến đổi thành ma trận vuông cấp 4 mà không làm thay đổi đến các phép biến đổi bằng cách thêm 1 hàng, 1 cột vào ma trận. 129
  8. Đồ họa máy tính 5.2.3. Công thức biến đổi Affine. Phép biến đổi affine là phép biến đổi tuyến tính tọa độ điểm đặc trƣng của đối tƣợng thành tập tƣơng ứng các điểm mới để tạo ra các hiệu ứng cho toàn đối tƣợng. [ X‘ ] = [ X ] * [ M ] Với M4x4 là ma trận biến đổi . a b c p  d e f q  [ x' y' z' 1]  [ x y z 1] *   g i j r   l m n s Một số tính chất của các phép biến đổi ba chiều : - Tính chất đƣờng thẳng đƣợc bảo toàn. Nghĩa là, một đƣờng thẳng trong không gian ba chiều khi biến đổi sẽ thành một đƣờng thẳng. - Tính song đƣợc bảo toàn. Nghĩa là, hai đƣờng thẳng song khi biến đổi cũng sẽ thành hai đƣờng thẳng song. - Tính tỉ lệ về khoảng cách đƣợc bảo toàn. Nghĩa là, ảnh của một điểm P chia đoạn thẳng AB theo tỉ lệ f, sẽ chia đoạn thẳng A‘B‘ theo tỉ lệ f, với A‘B‘ là ảnh của đoạn thẳng AB. Hình 5.4 Một cảnh ba chiều được tạo nhờ các phép biến đổi 130
  9. Đồ họa máy tính 5.2.4. Các hệ trục tọa độ theo quy ƣớc bàn tay phải và bàn tay trái Hệ tọa độ Descartes ba chiều có thể định nghĩa theo quy ƣớc bàn tay trái hoặc bàn tay phải. Hình 5.5(a)Các hệ tọa độ theo quy ước bàn tay phải, (b) quy ước bàn tay trái Định nghĩa: - Hệ tọa độ theo quy ƣớc bàn tay phải là hệ tọa độ với các trục x, y, z thỏa điều kiện: Nếu để bàn tay phải sao cho ngón cái hƣớng cùng chiều với trục z, khi nắm tay lại, chiều các ngón tay chuyển động theo hƣớng từ trục x đến trục y. - Hệ tọa độ theo quy ƣớc bàn tay trái là hệ tọa độ với các trục x, y, z thỏa điều kiện: Nếu để bàn tay trái sao cho ngón cái hƣớng cùng chiều với trục z, khi nắm tay lại, chiều các ngón tay chuyển động theo hƣớng từ trục x đến trục y. 5.3. Các phép biến đổi hình học 3 chiều cơ sở 5.3.1. Phép tịnh tiến Hình 5.6 Phép tịnh tiến với vector tịnh tiến tr=(trx, try, trz) Vector tịnh tiến tr trong phép biến đổi ba chiều có một tác động rất trực quan: mỗi điểm đƣợc dịch đi một khoảng là trx, try, trz theo ba trục. Công thức biến đổi: 131
  10. Đồ họa máy tính  x'  x  trx   y '  y  try  z '  z  trz  Ma trận phép tịnh tiến có dạng nhƣ sau: 1 0 0 0 0 1 0 0 [T (trx, try, trz )]   0 0 1 0   trx try trz 1 5.3.2. Phép biến đổi tỉ lệ Phép biến đổi tỉ lệ trong ba chiều là một sự mở rộng của phép biến đổi tỉ lệ trong hai chiều: Nếu thay đổi đối tƣợng một tỉ lệ sx theo trục Ox, sy theo trục Oy và sz theo trục Oz thì tọa độ của đối tƣợng biến đổi theo công thức:  x'  x * Sx   y '  y * Sy  z '  z * Sz  Ma trận biến đổi:  Sx 0 0 0  0 Sy 0 0 S =   0 0 Sz 0    0 0 0 1 Trong đó các hằng số sx, sy, sz là các hệ số tỉ lệ tƣơng ứng theo các trục x, y, z. Hình 5.7. Phép biến đổi tỉ lệ Chú ý. 132
  11. Đồ họa máy tính Nếu sx = -1, sy = sz = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng yOz. Nếu sy = -1, sx = sz = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng xOz. Nếu sz = -1, sy = sx = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng xOy. Nếu sx = sy = sz = 1 thì đối tƣợng đƣợc giữ nguyên hình dạng ban đầu. Nếu 0 < sx, sy, sz < 1 thì phép biến đổi tƣơng ứng là thu nhỏ đối tƣợng. Nếu sx, sy, sz > 1 thì phép biến đổi thu đƣợc là phép phóng to đối tƣợng. Khi các hệ số tỉ lệ sx, sy, sz bằng nhau, ta có phép biến đổi đồng dạng. Trong phép biến đổi S(sx, sy, sz ), gốc tọa độ O sẽ có ảnh là chính nó. Ta gọi gốc tọa độ là điểm bất động (fixed point) của S, hay còn gọi O là tâm của phép biến đổi. Tổng quát hơn, ta có thể mô tả một phép biến đổi tỉ lệ theo một tâm (xf, xf, xf) bất kì bằng một dãy ba phép biến đổi sau: Tịnh tiến điểm bất động (xf, xf, xf) về gốc tọa độ. Thực hiện phép biến đổi tỉ lệ theo công thức Tịnh tiến ngƣợc điểm bất động từ gốc tọa độ trở về vị trí ban đầu. Nhƣ vậy, kết hợp ba bƣớc biến đổi trên ta có đƣợc ma trận biến đổi của phép biến đổi tỉ lệ theo tâm (xf, xf, xf)với hệ số tỉ lệ sx, sy, sz là: 5.3.3. Phép biến dạng Biến dạng theo bất kì trục tọa độ nào cũng bị ảnh hƣởng bởi tọa độ ứng với hai trục còn lại. (Sự thay đổi của x phụ thuộc cả vào y và z và ngƣợc lại.) Công thức biến đổi.  x'  x  cy  ez   y '  ax  y  fz  z '  bx  dy  z  133
  12. Đồ họa máy tính Ma trận biến đổi. 1 a b 0 c 1 d 0  Tsh =  e f 1 0   0 0 0 1 Hình 5.8. Phép biến dạng theo trục x: a = b = 1, các hệ số khác bằng 0 Tƣơng tự nhƣ trong trƣờng hợp phép biến đổi tỉ lệ, phép biến dạng Sh cũng có điểm bất động là gốc tọa độ O. Ta cũng có thể xây dựng phép biến dạng với tâm biến dạng tại một điểm (xf, xf, xf) bất kì. Ma trận biến đổi của phép biến dạng với tâm tại (xf, xf, xf) là:  1 a b 0  c 1 d 0 T=   e f 1 0    y f * c  z f * e  x f * a  z f * f  xf *b  y f * f 1 5.3.4. Phép quay a. Phép quay quanh một trục tọa độ Phép quay là phép biến đổi làm thay đổi hƣớng của đối tƣợng nhƣng kích thƣớc và hình dạng của đối tƣợng vẫn đƣợc giữ nguyên. Khi quay đối tƣợng quanh một trục nào đó thì tọa độ của đối tƣợng tại trục đó sẽ không đổi. Chiều dƣơng của phép quay: Các định nghĩa về chiều quay đƣợc dùng chung cho cả hệ tọa độ theo quy ƣớc bàn tay phải và bàn tay trái. Cụ thể chiều dƣơng đƣợc định nghĩa nhƣ sau: Quay quanh trục x: từ trục dƣơng y đến trục dƣơng z. Quay quanh trục y: từ trục dƣơng z đến trục dƣơng x. 134
  13. Đồ họa máy tính Quay quanh trục z: từ trục dƣơng x đến trục dƣơng y. Hình 5.9 Cách xác định chiều quay dương a. Quay đối tượng quanh trục Ox. Là phép quay mà giá trị của x trong vector vị trí không thay đổi. Mặt phẳng xoay sẽ vuông góc với trục Ox. Hình 5.10 Quay đối tượng quanh trục Ox Công thức biến đổi  x'  x   y '  y cos   z sin   z '  y sin   z cos   Ma trận biến đổi. 1 0 0 0 0 cos  sin  0 [Tx]   0  sin  cos  0   0 0 0 1 b. Quay đối tượng quanh trục Oy. 135
  14. Đồ họa máy tính Là phép quay mà giá trị của y trong vector vị trí không thay đổi. Mặt phẳng xoay sẽ vuông góc với trục Oy. Hình 5.11 Quay đối tượng quanh trục Oy Công thức biến đổi.  x'  x cos   z sin    y'  y  z '   x sin   z cos   Ma trận biến đổi. cos  0  sin  0  0 1 0 0 [Ty]    sin  0 cos  0    0 0 0 1 c. Quay đối tượng quanh trục Oz Là phép quay mà giá trị của z trong vector vị trí không thay đổi. Mặt phẳng xoay sẽ vuông góc với trục Oz. Hình 5.12 Quay đối tượng quanh trục Oz Công thức biến đổi. 136
  15. Đồ họa máy tính  x'  x cos   y sin    y '  x sin   y cos  z'  z  Ma trận biến đổi.  cos  sin  0 0  sin  cos  0 0 [Tz]    0 0 1 0    0 0 0 1 b. Quay quanh một trục bất kỳ song song với các trục tọa độ. Các ma trận biến đổi quay quanh các trục tọa độ rất có hiệu quả trong việc xử lý biến đổi các đối tƣợng, tuy nhiên việc quay các đối tƣợng thƣờng dựa trên các trục song song với các trục tọa độ gốc. Quá trình quay đối tƣợng quanh các trục của chúng tuân thủ theo các bƣớc sau: Bƣớc 1: Dịch chuyển đối tƣợng sao cho trục quay trùng với trục tọa độ Bƣớc 2 : Quay đối tƣợng quanh trục của nó (tƣơng đƣơng với trục tọa độ gốc). Bƣớc 3 : Đƣa trả đối tƣợng về vị trí ban đầu. Ví dụ: Quay đối tƣợng quanh trục song song với trục Ox, cách trục Oy, Oz một khoảng ty, tz Bƣớc 1: Tịnh tiến sao cho trục quay trùng với trục Ox: 1 0 0 0 0 1 0 0 Ma trận biến đổi: T1= 0 0 1 0 0 −𝑡𝑦 −𝑡𝑧 1 Bƣớc 2: Quay quanh trục Ox: 1 0 0 0 0 cos 𝛼 sin 𝛼 0 Ma trận biến đổi: T2= 0 − sin 𝛼 cos 𝛼 0 0 0 0 1 Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu: 1 0 0 0 0 1 0 0 Ma trận biến đổi: T3= 0 0 1 0 0 𝑡𝑦 𝑡𝑧 1 137
  16. Đồ họa máy tính Bƣớc 4: Ma trận của phép quay quanh trục song song với trục Ox cách trục Oy, Oz 1 khoảng ty,tz là T=T1*T2*T3 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 cos 𝛼 sin 𝛼 0 0 1 0 0 =0 0 1 0 ∗ 0 − sin 𝛼 cos 𝛼 0 ∗ 0 0 1 0 0 −𝑡𝑦 −𝑡𝑧 1 0 0 0 1 0 𝑡𝑦 𝑡𝑧 1 1 0 0 0 0 cos 𝛼 sin 𝛼 0 =0 − sin 𝛼 cos 𝛼 0 0 𝑡𝑦 ∗ 1 − cos 𝛼 + 𝑡𝑧 ∗ sin 𝛼 𝑡𝑧 ∗ (1 − cos 𝛼) − 𝑡𝑦 ∗ sin 𝛼 1 c. Phép quay quanh một trục bất kì Giả sử trục quay đi qua hai điểm P0, P1 nào đó với phƣơng đƣợc biểu diễn bởi vector đơn vị k. Quay điểm (x, y, z) quanh trục k theo một góc Ɵ sẽ biến thành điểm (x‘, y‘, z‘) (xem hình 5.13). Hình 5.13 – Quay đối tượng quanh trục bất kỳ Để thực hiện phép quay quanh k một góc Ɵ, ta có thể thực hiện một chuỗi các thao tác sau: Tịnh tiến trục k về gốc tọa độ: tr(-P0) (thành trục k'). Quay quanh trục x một góc α để đặt trục k' nằm trên mặt phẳng Oxz: rot(x, α) (thành trục k‖). Quay quanh trục y góc β để đƣa trục k‖ về trục z: rot(y,- β). Thực hiện phép quay quanh trục z một góc Ɵ: rot(z, Ɵ). Thực hiện chuỗi các phép biến đổi ngƣợc lại quá trình trên. 138
  17. Đồ họa máy tính Góc quay α đƣợc xác định dựa trên chiếu của k' lên mặt phẳng Oyz. Ta không cần tính α cụ thể. Thay vào đó ta tính sin(α) và cos(α) một cách trực tiếp. Từ hình 5.13 ta có: Tƣơng tự, từ hình 5.14 ta có: Nhƣ vậy, phép quay quanh một trục P0 P1 bất kì một góc , rot(P0P1, ), có thể đƣợc phân rã thành chuỗi các biến đổi cơ sở sau: tr(-P0) rot(x, α) rot(y, - β) rot(z, ) rot(y, β) rot(x, - α) tr(P0) Hình 5.14 Tính góc β 5.3.5.Phép đối xứng. a. Đối xứng qua mặt phẳng xOy. Là phép biến đổi mà giá trị của x, y trong vector vị trí không thay đổi. Giá trị của z = -z Hình 5.15 Đối xứng qua mặt phẳng xOy 139
  18. Đồ họa máy tính Công thức biến đổi.  x'  x   y'  y z'   z  Ma trận biến đổi 1 0 0 0 0 1 0 0  T = 0 0  1 0   0 0 0 1 b. Đối xứng qua mặt phẳng xOz. Là phép biến đổi mà giá trị của x và z trong vector vị trí không thay đổi. Giá trị của y = -y. Hình 5.16 Đối xứng qua mặt phẳng xOz Công thức biến đổi.  x'  x   y'   y z'  z  Ma trận biến đổi 1 0 0 0 0  1 0 0  T = 0 0 1 0   0 0 0 1 c. Đối xứng qua mặt phẳng yOz. 140
  19. Đồ họa máy tính Là phép biến đổi mà giá trị của y và z trong vector vị trí là không thay đổi. Giá trị của x = -x Hình 5.17 Đối xứng qua mặt phẳng zOy Công thức biến đổi.  x'   x   y'  y z'  z  Ma trận biến đổi.  1 0 0 0 0 1 0 0  T = 0 0 1 0   0 0 0 1 d. Đối xứng qua mặt phẳng song với mặt phẳng gốc. Để thực hiện phép đối xứng đối tƣợng qua một mặt phẳng song với mặt phẳng gốc ta thực hiện các bƣớc sau: Bƣớc 1: Tịnh tiến đối tƣợng sao cho mặt phẳng đối xứng trùng với mặt phẳng tọa độ. Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng tọa độ. Bƣớc 3 : Tịnh tiến về vị trí ban đầu. Ví dụ: Đối xứng với mặt phẳng song song với mặt phẳng xOy. Bƣớc 1: Dịch chuyển đối tƣợng sang hệ tọa độ tạm thời O‘x‘y‘z‘. Với O‘z‘ cách Oz một khoảng là dz. 141
  20. Đồ họa máy tính 1 0 0 0 0 1 00  Ma trận biến đổiT1 =  0 0 1 0   0 0 dz 1 Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng x‘O‘y‘. 1 0 00 0 1 0 0  Ma trận biến đổiT2 =  0 0  1 0   0 0 0 1 Bƣớc 3 : Quay lại vị trí ban đầu. 1 0 0 0 0 1 0 0  Ma trận biến đổiT =  0 0 1 0   0 0  dz 1 → [ T ] = [ T1 ]* [ T2 ]* [ T3 ] 1 0 00 1 0 00 1 0 0 0 0 1 00 0 1 0 0 0 1 0 0   [T] =  0 0 1 0  * 0 0  1 0 * 0 0 1 0       0 0 dz 1 0 0 0 1 0 0  dz 1 1 0 0 0 0 1 0 0  [T] =  0 0  1 0   0 0 dz 2 1 e. Đối xứng với mặt phẳng song song với mặt phẳng xOz. Bƣớc 1: Dịch chuyển đối tƣợng sang hệ tọa độ tạm thời O‘x‘y‘z‘. Với O‘y‘ cách Oy một khoảng là dy. 1 0 0 0 0 1 0 0  Ma trận biến đổi[T1] =  0 0 1 0   0 dy 0 1 142
nguon tai.lieu . vn