Giáo trình Đồ họa máy tính - Chương 6: Các phép biến đổi trong đồ họa ba chiều

Các phép biến đổi trong đồ họa ba chiều là sự mở rộng của các phép biến đổi trong

đồ họa hai chiều bằng cách thêm vào việc xem xét tọa độ thứ ba, tọa độ z. Bây giờ,

chúng ta sẽ tịnh tiến một đối tượng thông qua việc mô tả một vector tịnh tiến ba

chiều. Vector này xác định độ dời của vật theo ba chiều trong không gian. Tương tự

như vậy, ta có thể thu phóng đối tượng với các tỉ lệ biến đổi theo cả ba chiều. Sự mở

rộng của phép quay ít hiển nhiên hơn hai phép biến đổi cơ sở trên. Khi khảo sát các

phép quay trong mặt phẳng hai chiều Oxy, ta chỉ cần khảo sát phép quay quanh một

tâm, hay nói cách khác, phép quay quanh một trục vuông góc với mặt phẳng Oxy.

Trong không gian ba chiều, ta có thể chọn một trục quay có phương bất kì. Phần lớn

các hệ đồ họa xử lí phép quay trong không gian ba chiều như là tổ hợp của ba phép

quay với trục quay là các trục tọa độ x, y và z. Như vậy, người dùng có thể dễ dàng

xây dựng một phép quay bất kì bằng cách mô tả trục quay và góc quay.

Cũng như khi trình bày các phép biến đổi trong đồ họa hai chiều, trong chương này, ta

sẽ khảo sát các phép biến đổi trong đồ họa bachiều dưới dạng ma trận. Một chuỗi bất

kì các phép biến đổi sẽ được biểu diễn bằng một ma trận duy nhất là tích của các ma

trận tương ứng với các phép biến đổi thành phần.

pdf16 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 6670 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình Đồ họa máy tính - Chương 6: Các phép biến đổi trong đồ họa ba chiều, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
a 
trận của phép biến dạng như sau: 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
01
01
01
yzxz
zyxy
zxyx
hh
hh
hh
Sh (6.4) 
Ta có mối quan hệ Qx với P : zxzyxyxx PhPhPQ ++= . 
Ở đây có thể hiểu hxy là lượng mà tọa độ y của P tác động lên tọa độ x của Q. 
Hình 6.7 - Phép biến dạng theo trục x : hxy= hxz = 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 (6.4) 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 ( )fff zyx ,, bất kì. 
Ma trận biến đổi của phép biến dạng với tâm tại ( )fff zyx ,, là: 
y
z
x
y
z
x
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−−−
=
1
01
01
01
zyfzxfyzfyxfxzfxyf
yzxz
zyxy
zxyx
hyh-xhzh-xhzh-y
hh
hh
hh
Sh (6.5) 
1.5. Phép quay 
1.5.1. Phép quay quanh một trục tọa độ 
Khác với phép quay trong hai chiều quanh một điểm bất kì, trong ba chiều ta có phép 
quay quanh một trục tọa độ. Ở đây ta sử dụng hệ tọa độ theo quy ước bàn tay phải và 
quy định chiều quay dương là ngược chiều kim đồng hồ. 
Ta có các ma trận biểu diễn các phép quay quanh trục x, y, z một góc θ lần lượt là 
R(z, θ), R(y,θ), R(x, θ): 
Quay quanh trục z : 
( )
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
0100
00cossin
00sincos
θθ-
θθ
z,θR (6.6) 
Hình 6.8 - Phép quay quanh trục z 
Quay quanh trục y : 
( )
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
0cos0sin
0010
0sin0cos
θθ
θ-θ
y,θR (6.7) 
y
z
x
Hình 6.9 - Phép quay quanh trục y 
Quay quanh trục x : 
( )
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
0cossin-0
0sincos0
0001
x,R θθ
θθθ (6.8) 
Nhận xét rằng các giá trị nằm trên dòng và cột tương ứng với trục x trong ma trận 
R(x,θ) sẽ có giá trị là 0 ngoại trừ giá trị nằm trên đường chéo chính là 1. Điều này 
đảm bảo cho tọa độ x của các điểm là không bị thay đổi qua phép biến đổi. Nhận xét 
này cũng tương tự cho trường hợp các ma trận còn lại. 
x
z
y
Hình 6.10 - Phép quay quanh trục x 
Ghi chú: 
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. 
• Quay quanh trục z: từ trục dương x đến trục dương y. 
z
y
x
Hình 6.11- Cách xác định chiều quay dương 
1.5.2. 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 6.12). 
x
y
z
d
"k
P0
P1
k
'k
ky α
 Hình 6.12 - Phép quay quanh trục 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. 
Góc quay α được xác định dựa trên chiếu của k' lên mặt phẳng yz. 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 6.12 ta có: 
10
10
PP
PP
k = , 2z2y kkd += 
cos(α) = kz/d, sin(α) = ky/d. 
Tương tự, từ hình 6.13 ta có: ( ) ( ) xx kkdd ==== 1/sin ,1/cos ββ 
Như vậy, phép quay quanh một trục P0P1 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 6.13 - Tính góc β 
1.6. Kết hợp các phép biến đổi affine ba chiều 
Để kết hợp các phép biến đổi affine ba chiều, chúng ta cũng thực hiện tương tự như ở 
phép biến đổi hai chiều bằng cách dùng hệ tọa độ thuần nhất. 
Bằng cách này chúng ta cũng có các kết quả tương tự như trong trường hợp biến đổi 
hai chiều. Nếu M1 biến đổi P thành Q và M2 biến đổi Q thành S thì M1M2 sẽ biến 
đổi P thành S, do đó ma trận kết hợp của nhiều phép biến đổi có thể được tính từ việc 
nhân các ma trận của các phép biến đổi thành phần. 
x
y
z
kx
"kβ
2. PHÉP BIẾN ĐỔI MÔ HÌNH VÀ PHÉP BIẾN ĐỔI HỆ TRỤC TỌA ĐỘ 
Cho đến thời điểm này, chúng ta đã khảo sát các phép biến đổi ba chiều như là thao 
tác dịch chuyển một điểm (một đối tượng) từ vị trí này sang vị trí khác trong một hệ 
trục tọa độ. Tuy nhiên, nhiều khi, ta cần xem xét các đối tượng trong các hệ tọa độ 
khác nhau, muốn chuyển từ một hệ tọa độ này sang hệ tọa độ khác. Ví dụ, trong quy 
trình hiển thị đối tượng ba chiều, ta cần đặt một đối tượng vào hệ tọa độ chung cho tất 
cả các đối tượng trong cảnh (hệ tọa độ thế giới thực), sau đó, xác định tia nhìn, ta 
chuyển đổi từ hệ tọa độ thế giới thực sang hệ tọa độ quan sát, và cuối cùng ta phải 
chuyển từ hệ tọa độ quan sát sang hệ tọa độ thiết bị, nơi các đối tượng sẽ được hiển 
thị. 
Khi mô hình hóa đối tượng, ta thường mô tả chúng trong một hệ tọa độ cục bộ, thuận 
tiện nhất cho việc mô hình hóa. Sau đó, bằng các phép biến đổi ta sẽ đặt chúng vào 
cảnh cần hiển thị. Cách tiếp cận này cho phép ta không cần mô hình hóa quá nhiều 
đối tượng mà chỉ mô hình hóa theo chủng loại đối tượng. Ví dụ để tạo cảnh trong hình 
6.1 ta chỉ cần mô hình hóa một trái banh, một con ki, bàn, … Sau đó phát sinh ra nhiều 
con ki như thấy trong hình vẽ. Một ví dụ khác có thể xem trong hình 6.14. 
Việc chuyển đổi các mô tả đối tượng từ hệ tọa độ này sang hệ tọa độ khác thực hiện 
theo quy trình tương tự như trong đồ họa hai chiều. Ta cần xây dựng ma trận biến đổi 
để khớp được các trục tọa độ của hai hệ. Trước tiên, ta cần thực hiện phép tịnh tiến 
để hai gốc tọa độ trùng nhau. Sau đó, ta phải thực hiện tiếp một dãy các phép quay để 
khớp các trục tọa độ tương ứng lên nhau. Nếu các hệ tọa độ sử dụng các tỉ lệ đo lường 
khác nhau, ta phải thực hiện thêm một phép biến đổi tỉ lệ nữa để đồng nhất các hệ 
tọa độ. 
Hình 6.14 - Mô hình hóa và phép biến đổi hệ tọa độ 
Nếu hệ tọa độ thứ hai có gốc tọa độ đặt tại (x0, y0, z0) và các vector cơ sở được mô tả 
như trong hình 6.15 (tương ứng hệ tọa độ thứ nhất), trước tiên ta cần thực hiện phép 
tịnh tiến T(-x0,-y0,-z0). Sau đó ta xây dựng ma trận quay R dựa trên các vector cơ sở. 
Ma trận này sẽ biến đổi các vector đơn vị u’x, u’y, u’z tương ứng thành các trục x, y, z. 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
=
1000
0
0
0
333
222
111
zyx
zyx
zyx
u'u'u'
u'u'u'
u'u'u'
R (6.9) 
Ma trận của phép biến đổi hệ tọa độ chính là tích T.R. Ma trận này biến đổi hệ tọa 
độ Descartes này thành hệ tọa độ Descartes khác, cho dù chúng là hệ tọa độ theo quy 
ước bàn tay phải hay bàn tay trái. 
Hình 6.15 - Chuyển đổi hệ tọa độ 
TÓM TẮT 
Chúng ta vừa khảo sát các phép biến đổi affine ba chiều như là sự mở rộng của các phép biến đổi affine hai chiều. Cũng 
như các phép biến đổi affine hai chiều, trước tiên ta khảo sát các phép biến đổi cơ sở: tịnh tiến, tỉ lệ, quay; sau đó khảo sát các 
phép biến đổi phức tạp hơn. Đặc biệt, phép quay quanh một trục bất kì được khảo sát chi tiết như là một minh họa cho các phân 
y
x
z
(0,0,0)
x'
z'
y'
(x0,y0,z0)
u'x
u'y
u'z
Front-Wheel
System
Tractor
System
World
yW
zW
xW
yfW
zfW
xfW
xt
yt
zt
rã một phép biến đổi affine bất kì thành tích của các phép biến đổi affine cơ sở. Nhờ khảo sát các phép biến đổi affine với biểu 
diễn dạng ma trận trong hệ tọa độ thuần nhất nên công việc khá đơn giản và nhất quán. 
Lưu ý một điều, các phép tịnh tiến và quay có chung thuộc tính là : sau khi biến đổi, hình dạng và kích thước của đối 
tượng không thay đổi mà chúng chỉ bị thay đổi vị trí và định hướng trong không gian. Vì vậy, người ta gọi hai phép biến đổi này 
là phép biến đổi rigid-body transformations. 
Phần cuối chương, chúng ta đã xem xét các phép biến đổi hệ tọa độ. Các phép biến đổi này rất quan trọng trong quá trình 
hiển thị đối tượng ba chiều. 
BÀI TẬP 
1. Hãy xác định ma trận của phép đối xứng gương qua mặt phẳng Oxy, Oxz, Oyz. 
2. Hãy xác định ma trận biến đổi của phép đối xứng gương qua mặt phẳng đi qua điểm P(x,y,z) và có 
vector pháp tuyến n . 
3. Hãy xác định ma trận của phép đối xứng qua trục tọa độ x, y, z. 
4. Hãy xác định ma trận của phép đối xứng qua trục bất kì đi qua hai điểm P0, P1. 
5. Hãy xác định ma trận biến đổi của phép đối xứng qua gốc tọa độ O. 
6. Hãy xác định ma trận biến đổi của phép đối xứng qua một điểm P(x,y,z) bất kì. 
7. Cài đặt chương trình cho phép người dùng sử dụng một trong các phép biến đổi affine (tịnh tiến, tỉ 
lệ, quay, biến dạng, …) để biến đổi đối tượng, sau đó hãy phục hồi lại đối tượng gốc. 
8. Cài đặt chương trình minh họa sự kết hợp các phép biến đổi cơ sở để tạo thành phép quay quanh 
một trục bất kì. 
9. Chứng minh công thức (6.3), (6.5). 
10. Xây dựng ma trận biến đổi của phép quay quanh một trục bất kì. 

File đính kèm:

  • pdfGiáo trình Đồ họa máy tính - Chương 6 Các phép biến đổi trong đồ họa ba chiều.pdf