Tải bản đầy đủ (.pdf) (27 trang)

Bài giảng Đồ họa máy tính: Các phép biến đổi hai chiều - Ngô Quốc Việt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (636.81 KB, 27 trang )

BÀI GIẢNG ĐỒ HỌA MÁY TÍNH

CÁC PHÉP BIẾN ĐỔI HAI CHIỀU

NGÔ QUỐC VIỆT
2009


Nội dung






Giới thiệu.
Các phép biến đổi cơ bản
Biểu diễn ma trận
Bài tập
Giải đáp thắc mắc

2


Giới thiệu
• Định nghĩa: biến đổi là ánh xạ các điểm (x,y) từ
một hệ tọa độ thành (x’, y’) trong hệ tọa độ khác.

3



Một số thuật ngữ

4


Các biến đổi cơ bản

5


Biến đổi tỉ lệ
• Scaling: mỗi giá trị tọa độ được nhân với tỉ lệ khác
nhau.
• Uniform scaling: các giá trị tọa độ được nhân với
cùng tỉ lệ.


2

6


Biến đổi tỉ lệ
• Non-uniform scaling: different scalars per component:

X  2,
Y  0.5

• Có thể biểu diễn phép biến đổi bằng ma trận?


7


Biến đổi tỉ lệ
• Biến đổi tỉ lệ

• Dạng ma trận

 x' ax 
 y '  by 
   

 x' a
 y '  0
  

0  x 



b  y 

Ma trận tỉ lệ

8


Phép quay
(x’, y’)
(x, y)




x’ = x cos() - y sin()
y’ = x sin() + y cos()

9


Phép quay

(x’, y’)
(x, y)



f

x = r cos (f)
y = r sin (f)
x’ = r cos (f + )
y’ = r sin (f + )

Trig Identity…
x’ = r cos(f) cos() – r sin(f) sin()
y’ = r sin(f) sin() + r cos(f) cos()
Substitute…
x’ = x cos() - y sin()
y’ = x sin() + y cos()


10


Phép quay
• Biểu diễn bằng ma trận:
 x' cos    sin    x 
 y '   sin   cos     y 
  
 

• Mặc dù sin() và cos() khơng là hàm
tuyến tính theo ,
– x’ là kết hợp tuyến tính của x và y.
– y’ là kết hợp tuyến tính của x và y.
11


Các biến đổi cơ bản
• Tịnh tiến:
– x’ = x + tx
– y’ = y + ty

• Tỉ lệ:
– x’ = x * sx
– y’ = y * sy

• Biến dạng:
– x’ = x + hx*y
– y’ = y + hy*x


• Quay:

Có thể kết hợp các
biến đổi

– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

12


Các biến đổi cơ bản
• Translation:
– x’ = x + tx
– y’ = y + ty

• Scale:
– x’ = x * sx
– y’ = y * sy

• Shear:
– x’ = x + hx*y
– y’ = y + hy*x

• Rotation:
– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

13



Các biến đổi cơ bản
• Translation:
– x’ = x + tx
– y’ = y + ty

• Scale:
– x’ = x * sx
– y’ = y * sy

(x,y)
(x’,y’)

• Shear:
– x’ = x + hx*y
– y’ = y + hy*x

• Rotation:
– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

x’ = x*sx
y’ = y*sy

14


Các biến đổi cơ bản
• Translation:
– x’ = x + tx

– y’ = y + ty

• Scale:
– x’ = x * sx
– y’ = y * sy

• Shear:
– x’ = x + hx*y
– y’ = y + hy*x

• Rotation:
– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

(x’,y’)

x’ = (x*sx)*cosQ - (y*sy)*sinQ
y’ = (x*sx)*sinQ + (y*sy)*cosQ

15


Các biến đổi cơ bản
• Translation:
– x’ = x + tx
– y’ = y + ty

• Scale:
– x’ = x * sx
– y’ = y * sy


(x’,y’)

• Shear:
– x’ = x + hx*y
– y’ = y + hy*x

• Rotation:
– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

x’ = ((x*sx)*cosQ - (y*sy)*sinQ) + tx
y’ = ((x*sx)*sinQ + (y*sy)*cosQ) + ty

16


Các biến đổi cơ bản
• Translation:
– x’ = x + tx
– y’ = y + ty

• Scale:
– x’ = x * sx
– y’ = y * sy

• Shear:
– x’ = x + hx*y
– y’ = y + hy*x


• Rotation:
– x’ = x*cosQ - y*sinQ
– y’ = x*sinQ + y*cosQ

x’ = ((x*sx)*cosQ - (y*sy)*sinQ) + tx
y’ = ((x*sx)*sinQ + (y*sy)*cosQ) + ty

17


Biểu diễn bằng ma trận
• Biểu diển biến đổi hai chiều bằng ma trận
a b 
 c d 

• Thực hiện biến đổi bằng cách nhân ma
trận cho từng tọa độ điểm.
 x'   a b   x 
 y'  c d   y 

x'  ax  by
y '  cx  dy
18


Biểu diễn bằng ma trận
• Các biến đổi có thể kết hợp bằng phép
nhân ma trận
 x'   a b   e
 y'  c d   g


f  i
h  k

j x
l   y 

Matrices are a convenient and efficient way
to represent a sequence of transformations!

19


Biểu diễn bằng ma trận
• Các phép biến đổi cơ bản như tỉ lệ, quay,
đối xứng, biến dạng đều biểu diễn được
bằng ma trận 2x2, ngoại trừ phép tịnh tiến.
 x '  s x
 y '   0
  

0  x
s y   y 

 x ' cos Q  sin Q  x 
 y '   sin Q cos Q   y 
  
 

 x '     1 0  x   x '     1

 y '  0 1  y   y '  0
 x '  1
 y '   sh
   y

sh x   x 
1   y 

0  x
 1  y 
20


Sử dụng hệ tọa độ đồng nhất
• Tọa độ đồng nhất: biểu
 x
diễn tọa độ 2 chiều  x  homogeneous coords  
vector 3 thành phần.
 y      y 
 
 1 
• Có vẻ khơng trực quan,
nhưng hiệu quả cho tính
tốn.

21


Biểu diễn các biến đổi bằng ma trận 3x3
• Tịnh tiến:


1

Translation  0
0


0
1
0

tx 

ty 
1 

 x ' 1 0 t x   x   x  t x 
 y '  0 1 t   y    y  t 
y  
y
  

 1  0 0 1   1   1 

tx = 2
ty = 1
22


Biểu diễn các biến đổi bằng ma trận 3x3

 x ' 1
 y '  0
  
 1  0

0
1
0

t x  x
t y   y 
1   1 

 x '  s x
 y '   0
  
 1   0

Translate

 x' cos Q
 y '   sin Q
  
 1   0
Rotate

0
sy
0


0  x 
0  y 
1  1 

Scale

 sin Q
cos Q
0

0  x 
0  y 
1  1 

 x '  1
 y '   sh
   y
 1   0

sh x
1
0

0  x 
0  y 
1  1 

Shear

23



Biến đổi Affine
• Là các biến đổi tuyến tính & tịnh tiến.
• Các tính chất của của biến đổi Affine
– Bảo tồn tính song song
– Bảo tồn tỉ lệ.

• Có thể kết hợp nhiều biến đổi thông qua nhân
ma trận
 x'   1
 y '    0
 w'  0

p’ =

0
1
0

T(tx,ty)

tx  cos Q
ty   sin Q
1   0
R(Q)

 sin Q
cos Q
0


0  sx
0  0
1  0

S(sx,sy)

0
sy
0

0   x 
0   y 
1   w

p
24


Biến đổi Affine
• Chú ý: nhân ma trận khơng có tính giao hốn.
• Ví dụ:
a
a

a
Sai
R(45)

Đúng

T(-3) R(45) T(3)

1 0  3 cos(45)  sin(45) 0 1 0 3  a x   a' x 
0 1 0   sin(45) cos(45) 0 0 1 0 a   a' 



 y   y 
0 0 1   0
0
1 0 0 1  1   1 

25


×