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