Giáo trình Đồ họa máy tính - Chương 3: Các phép biến đổi trong đồ họa hai chiều
Một trong những ưu điểm quan trọng của đồ họa là cho phép dễ dàng thao tác lên các
đối tượng đã được tạo ra. Một nhà quản lí có nhu cầu thu nhỏ các biểu đồ trong một
báo cáo, một kiến trúc sư muốn nhìn tòa nhà ở những góc nhìn khác nhau, một nhà
thiết kế muốn quan sát và chỉnh sửa các mẫu đối tượng trong quá trình thiết kế, Tất
cả các thao tác này có thể được hỗ trợ một cách dễ dàng nhờ vào các phép biến đổi
hình học. Các phép biến đổi hình học sẽ làm thay đổi mô tả về tọa độ của các đối
tượng, từ đó làm cho đối tượng bị thay đổi về hướng, kích thước và hình dạng. Các
phép biến đổi hình học cơ sở bao gồm : tịnh tiến (translation), quay (rotation) và biến
đổi tỉ lệ (scaling). Ngoài ra một số phép biến đổi khác cũng thường được áp dụng đó
là phép đối xứng (reflection) và biến dạng (shearing).
Có hai quan điểm về phép biến đổi hình học đó là : biến đổi đối tượng (object
transformation) và biến đổi hệ tọa độ (coordinate transformation). Biến đổi đối tượng
là thay đổi tọa độ của các điểm mô tả nó theo một quy tắc nào đó, còn biến đổi hệ tọa
độ là tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tượng sẽ được chuyển về
hệ tọa độ mới. Hai cách này có những mối liên hệ chặt chẽ với nhau và mỗi cách đều
có những lợi thế riêng. Chúng ta sẽ bàn về phép biến đổi đối tượng trước.
⎞ ⎜⎜ ⎜ ⎝ ⎛ = 100 01 001 xyShx shM Biến dạng theo phương trục y sẽ làm thay đổi tung độ còn hoành độ vẫn giữ nguyên ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ = 100 010 01 yx Shy sh M xysh và yxsh lần lượt được gọi là các hệ số biến dạng. Hình 3.5 – Phép biến dạng theo phương trục x với hệ số biến dạng 3=xysh 4.3. Phép biến đổi ngược Chúng ta thường dùng phép biến đổi ngược để có thể undo một phép biến đổi đã thực hiện. Ta có Q là ảnh của P qua phép biến đổi T có ma trận biến đổi M là : PMQ = , từ đó phép biến đổi ngược T-1 sẽ có ma trận biến đổi là M-1 với M-1 là ma trận nghịch đảo của ma trận M. Với giả thiết ban đầu về ma trận M là 0≠− bcad , ta có công thức tính ma trận nghịch đảo M-1 của ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ = 1 0 0 fe dc ba M là : ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ −− − − −= − 1 0 0 11 afbedecf ac bd bcad M Như vậy ta có ma trận của các phép biến đổi ngược của các phép biến đổi cơ sở tịnh tiến, tỉ lệ, quay lần lượt như sau : ( ) ( )yxT yx yxT trtrM trtr trtrM −−=⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ −− =− , 1 010 001 ,1 ( ) ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛= ⎟⎟ ⎟⎟ ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎜ ⎝ ⎛ = ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ =− yx S y x x y yx yxS ss M s s s s ss ssM 1,1 100 010 001 100 00 00 1,1 ( ) ( )ααα αα α −= ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ − =− RR MM 100 0cossin 0sincos 1 x y (1,1) (3,1) (3,3)(1,3) (4,1) (6,1) (12,3)(10,3) 4.4. Phân rã phép biến đổi Một phép biến đổi bất kì có thể được phân rã thành tích các phép biến đổi cơ sở như tịnh tiến, quay, tỉ lệ. Một phép biến dạng theo phương trục x có thể được phân rã thành tích của một phép biến đổi tỉ lệ và một phép biến dạng đơn vị, và với một phép biến đổi tỉ lệ khác theo công thức sau : ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ ⎟⎟ ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎝ ⎛ = ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ 100 010 00 100 011 001 100 010 001 100 01 001 xyxy xy shsh sh Phép biến dạng đơn vị còn có thể được phân rã tiếp : ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ − ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎝ ⎛ ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ − = ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ 100 0cossin 0sincos 100 010 00 100 0cossin 0sincos 100 011 001 ββ ββ φ φ αα αα trong đó ( ) ⎪⎩ ⎪⎨ ⎧ =⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛= == − − 01 01 72.311tan 28.58tan φβ φα Từ đó, một phép biến đổi bất kì có thể được phân rã thành các phép biến đổi cơ sở sau : ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ ⎟⎟ ⎟⎟ ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎜⎜ ⎜ ⎝ ⎛ − ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎝ ⎛ − ⎟⎟ ⎟⎟ ⎠ ⎞ ⎜⎜ ⎜⎜ ⎝ ⎛ += ⎟⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎝ ⎛ 1 010 001 100 0 0 100 00 00 100 01 001 1 0 0 2 fe Q a Q b Q b Q a Q bcad Q Q bdac fe dc ba trong đó 222 baQ += . Với cách lập luận trên ta nhận thấy : bất kì phép biến đổi nào cũng được kết hợp từ các phép biến dạng, tỉ lệ, quay, và tịnh tiến. Tuy nhiên, theo kết quả ở bước trước, phép biến dạng là sự kết hợp của các phép quay, tỉ lệ, nên từ đó suy ra bất kì phép biến đổi nào cũng được kết hợp từ các phép tịnh tiến, tỉ lệ và quay. 5. PHÉP BIẾN ĐỔI GIỮA CÁC HỆ TỌA ĐỘ Để thuận tiện cho việc mô tả đối tượng, thông thường đối tượng sẽ được mô tả trong các hệ tọa độ cục bộ gắn với chúng. Tuy nhiên để có thể hiển thị toàn bộ một ảnh bao gồm nhiều đối tượng thành phần, các mô tả này phải được chuyển về một hệ tọa độ chung duy nhất. Việc chuyển đổi này thường được chia làm hai loại : chuyển từ các hệ tọa độ không phải là hệ tọa độ Descartes như hệ tọa độ cực, hệ tọa độ cầu, hệ tọa độ elliptic, … sang hệ tọa độ Descartes, và chuyển đổi giữa hai hệ tọa độ Descartes. Trong phần này chúng ta sẽ khảo sát phép biến đổi giữa hai hệ tọa độ Descartes với nhau. Hình 3.6 – Phép biến đổi giữa hai hệ tọa độ Giả sử ta có hệ tọa độ (I) có gốc tọa độ O và các vector đơn vị lần lượt là ji, . Hệ tọa độ (II) là ảnh của hệ tọa độ (I) qua phép biến đổi T(M), có gốc tọa độ là O’ và các vector đơn vị lần lượt là vu, . Lúc này một điểm ( )yxP , bất kì trong hệ tọa độ (I) sẽ được biến đổi thành điểm ( )baQ , trong hệ tọa độ (II). Vấn đề đặt ra ở đây là mối liên hệ giữa ba, với Myx ,, như thế nào. Người ta chứng minh được rằng 1−= PMQ . Hình 3.7 – Tọa độ của một điểm qua phép biến đổi hệ tọa độ TÓM TẮT Các phép biến đổi hình học cho phép dễ dàng thao tác lên các đối tượng đã được tạo ra. Chúng làm thay đổi mô tả về tọa độ của các đối tượng, từ đó đối tượng sẽ được thay đổi về hướng, kích thước và hình dạng. Các phép biến đổi hình học cơ sở bao gồm tịnh tiến, quay và biến đổi tỉ lệ. Ngoài ra một số phép biến đổi khác cũng thường được áp dụng đó là phép đối xứng và biến dạng. Có hai quan điểm về phép biến đổi hình học đó là : biến đổi đối tượng và biến đổi hệ tọa độ. Biến đổi đối tượng thay đổi tọa độ của các điểm mô tả nó theo một quy tắc nào đó, còn biến đổi hệ tọa độ sẽ tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tượng sẽ được chuyển về hệ tọa độ mới. Các phép biến đổi hình học đều được biểu diễn dưới dạng ma trận thuần nhất 3x3 để tiện cho việc thực hiện các thao tác kết hợp giữa chúng. Trong hệ tọa độ thuần nhất, tọa độ của một điểm được mô tả bởi một vector dòng bao gồm ba giá trị, hai giá trị đầu tương ứng với tọa độ Descartes của điểm đó, và giá trị thứ ba là 1. Với cách biểu diễn này, ma trận của phép biến đổi có P O i j O' u v được từ sự kết hợp của các phép biến đổi cơ sở sẽ bằng tích của các ma trận của các phép biến đổi thành phần. Các phép biến đổi không làm thay đổi kết cấu về tính cân xứng của đối tượng như tịnh tiến, quay được gọi là các phép biến đổi bảo toàn kết cấu đối tượng, thuật ngữ tiếng Anh gọi là rigid-body transformation. Việc chuyển đổi giữa hai hệ tọa độ Descartes với nhau thường gặp trong công đoạn chuyển các mô tả tọa độ của các đối tượng thành phần trong các hệ tọa độ cục bộ về các vị trí tương ứng trong một hệ tọa độ chung. Giữa hai hệ tọa độ Descartes với nhau, người ta thường sử dụng các phép biến đổi bảo toàn kết cấu như là tịnh tiến, quay. BÀI TẬP 1. Cho biết ma trận các phép biến đổi dùng để biến đổi một hình tròn thành hình ellipse và ngược lại. 2. Cho biết ma trận các phép biến đổi dùng để biến đổi một hình vuông thành hình chữ nhật, hình bình hành và ngược lại. 3. Xây dựng và cài đặt cấu trúc dữ liệu và các hàm dùng để thực hiện một phép biến đổi affine bất kì. 4. Cho biết ma trận của phép tỉ lệ với tâm tỉ lệ là điểm bất kì. 5. Cho biết ma trận của phép lấy đối xứng qua đường thẳng y=mx+b bất kì. 6. Cho biết ma trận của phép lấy đối xứng qua tâm là điểm bất kì. 7. Cho biết ma trận của phép biến dạng theo phương của đường thẳng y=mx+b. 8. Chứng minh rằng ma trận của phép lấy đối xứng qua đường thẳng xy = tương đương với kết hợp của phép lấy đối xứng qua trục hoành và phép quay quanh gốc tọa độ một góc 900. 9. Chứng minh rằng ma trận của phép lấy đối xứng qua đường thẳng xy −= tương đương với kết hợp của phép lấy đối xứng qua trục tung và phép quay quanh gốc tọa độ một góc 900. 10. Trong phép biến đổi tỉ lệ, yx ss , được gọi là các hệ số tỉ lệ theo phương của trục hoành và phương của trục tung. Hãy cho biết công thức của phép biến đổi tỉ lệ theo phương của các trục nghiêng so với trục hoành (các trục này trực giao với nhau) một góc α với các hệ số tỉ lệ theo các phương trên là yx ss , . 11. Chứng minh rằng cặp hai phép tỉ lệ là giao hoán, nghĩa là 1221 SSSS MMMM = . Tương tự cho cặp hai phép quay. 12. Chứng minh rằng phép đồng dạng và phép quay tạo thành một cặp thao tác có tính giao hoán, nhưng phép biến đổi tỉ lệ thường và phép quay thì không vậy. 13. Trình bày ma trận của phép biến dạng dưới dạng tích ma trận của các phép quay và các phép tỉ lệ. 14. Trình bày ma trận của phép quay dưới dạng tích ma trận của các phép biến dạng và tỉ lệ. 15. Chứng minh rằng phép quay quanh gốc tọa độ có thể được phân tích thành ba phép biến dạng. Đây là cách để quay một ảnh nhanh vì phép biến dạng thường được thực hiện bằng cách di chuyển toàn bộ các khối điểm ảnh (block pixels). 16. Chứng minh một phép biến đổi affine bất kì có thể được phân tích thành tích của các phép tịnh tiến, tỉ lệ và quay. 17. Chứng minh công thức tính tọa độ của một điểm khi thực hiện phép biến đổi giữa các hệ tọa độ 18. Hệ tọa độ ''' yOx nhận được bằng cách quay quanh gốc tọa độ một góc α rồi tịnh tiến theo vector tịnh tiến ( )yx trtr , hệ tọa độ xOy . Hãy cho biết công thức tọa độ của điểm P trong hệ tọa độ ''' yOx nếu ( )yxP , là tọa độ của P trong hệ tọa độ xOy . 19. Viết chương trình minh họa các bước kết hợp các phép biến đổi cơ sở để tạo thành phép quay một điểm quanh tâm bất kì. Thực hiện tương tự cho phép tỉ lệ có tâm tỉ lệ là điểm bất kì. 20. Viết chương trình cho phép người dùng sử dụng các phép biến đổi đã học thao tác lên một đối tượng cho trước.
File đính kèm:
- Giáo trình Đồ họa máy tính - Chương 3 Các phép biến đổi trong đồ họa hai chiều.pdf