Bài giảng Computer Graphics - Bài 4B: Phép biến đổi trong không gian - Lê Tấn Hùng

Ma trận biến đổi 3 chiều

3D Matrix Transformations

„ Các phép biến đổi chuyển vị - translation, tỉ lệ-scaling và

quay-rotation sử dụng trong không gian 2D đều co thể mở

rộng trong không gian 3D

„ Again, using homogeneous coordinates it is possible to

represent each type of transformation in a matrix form

„ In 3D, each transformation is represented by a 4x4 matrix

pdf27 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: yen2110 | Lượt xem: 198 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Computer Graphics - Bài 4B: Phép biến đổi trong không gian - Lê Tấn Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
(c) SE/FIT/HUT 2002 1
Bài 4B:
Phép biến đổi trong không gian
(c) SE/FIT/HUT 2002 2
Ma trận biến đổi 3 chiều 
3D Matrix Transformations
„ Các phép biến đổi chuyển vị - translation, tỉ lệ-scaling và
quay-rotation sử dụng trong không gian 2D đều co thể mở
rộng trong không gian 3D
„ Again, using homogeneous coordinates it is possible to 
represent each type of transformation in a matrix form
„ In 3D, each transformation is represented by a 4x4 matrix
(c) SE/FIT/HUT 2002 3
Các phép biến đổi hình học 3 chiều
„ Biểu diễn điểm trong không gian 3 chiều
• [ x* y* z* h ] = [ x y z 1 ]. [ T ]
• [x' y' z' 1 ]= [ x*/h y*/h z*/h 1 ][ T ]
„ Ma trận biến đổi








=
snml
rjig
qfed
pcba
][T
(c) SE/FIT/HUT 2002 4
Phép tịnh tiến
„ [X'] = [ X ] . [ T(dx,dy,dz) ]
„ [ x' y' z' 1 ] = 
„ [ x y z 1 ].[ T(dx,dy,dz) ]
„ = [ x+dx y+dy z+dz 1 ]
(c) SE/FIT/HUT 2002 5
Phép tỉ lệ
• s1, s2, s3 là các hệ số tỉ lệ tương ứng
trên các trục toạ độ
]13.2.1.[ szsysx=
(c) SE/FIT/HUT 2002 6
Rotation
x
y
z
x
y
z
x
y
z
(c) SE/FIT/HUT 2002 7
Phép quay 3 chiều
„ Quay quanh các trục toạ độ
• Quay quanh trục x
• Quay quanh trục z 
(c) SE/FIT/HUT 2002 8
Quay quanh trục y







 −
=
1000
0cos0sin
0010
0sin0cos
][ θθ
θθ
Ty
(c) SE/FIT/HUT 2002 9
Phép biến dạng
(secondary translation)








=
1000
01
01
01
11
ig
fd
cb
zyxzyx ][]'''[
(c) SE/FIT/HUT 2002 10
Phép lấy đối xứng
(reflections-secondary translation)
(c) SE/FIT/HUT 2002 11
Quay quanh một trục bất kỳ song song với các
trục tọa độ








=
10
0100
0010
0001
][
zy
Tr
, 








−=
1000
00
00
0001
φφ
φφφ
cossin
sincos
)]([T
, 








−−
=−
10
0100
0010
0001
1
zy
Tr][










−−+−
−=
1sin)cos1(sin)cos1(0
0cossin0
0sincos0
0001
][
φφφφ
φφ
φφ
yzzy
Tth
(c) SE/FIT/HUT 2002 12
Quay quanh một trục bất kỳ
(c) SE/FIT/HUT 2002 13
Solution
„ Chuyển P1 về gốc tọa độ.
„ Quay quanh trục y sao cho P1P2 nằm trên mặt phẳng (y, z)
„ Quay quanh trục x sao cho P1P2 trùng với trục z.
„ Quay quanh trục z sao cho P1P3 nằm trên mặt phẳng (y, z)
Euler’s Theorem: Every rotation around the origin can be 
decomposed into a rotation around the x-axis followed by a 
rotation around the y-axis followed by a rotation around the 
z-axis.
(c) SE/FIT/HUT 2002 14
Bước 1: Chuyển P1 về gốc tọa độ








−−−
=−−−
1111
0100
0010
0001
111
zyx
zyxT )],,([
y
P3
P2
P1
z x
y
P3
P2 p P1
z 
x
(c) SE/FIT/HUT 2002 15
Bước 2: Quay quanh trục y
„ cos( - 90 + φ) = sinφ = z'2/L = ( z2 - z1)/L
„ sin( - 90 + φ) = - cosφ = x'2/L = ( x2 - x1)/L
„ [ P''2 ] = [ P'2 ][ T(φ-90) ]
„ = [ 0 y2-y1 L ]
y
P3
P'2(x'2,y'2,z'2)
P'1
L φ
z(x'2,0,z'2)x
2
12
2
12
2
2
2
2 )()()'()'( xxzzxzL −−==
(c) SE/FIT/HUT 2002 16
Bước 3: Quay quanh trục x. 
„ cos ϕ = z''2/N, sin ϕ = y''2/N
„ Với N = | P''1P''2| là độ dài của đoạn P''1P''2 
„ [P'''2] = [P''2][T(ϕ)] = [P'2][T(φ-90)][T(ϕ)]
„ = [P2 ][T(-x1,-y1,-z1 ][T(φ-90)][T(ϕ)] 
„ = [ 0 0 |P1P2| 1 ]
y
P''2
N
P''1ϕ
x
z
(c) SE/FIT/HUT 2002 17
Bước 4: Quay quanh trục z
„ [P'''3]= [P3 ][T(-x1,-y1,-z1 ][T(φ-90)][T(ϕ)]
„ Với góc quay dương ψ trên trục z 
„ cos ψ = y3'''/M; sin ψ = x3'''/M;
„ Ma trận tổng hợp của các phép biến đổi [ T ] có
dạng sau đáp ứng toàn bộ quá trình biến đổi quay 
đối tượng quanh một trục bất kỳ.
„ [ T ] = [T(-x1,-y1,-z1)][T(φ-90)][T(ϕ)][T(ψ)]
y
y'''3
P'''3ψ
M
x'''3
P'''2P'''1
x
z
(c) SE/FIT/HUT 2002 18
„ Kết quả sau biến đổi cần phải đưa về vị trí ban đầu qua các phép biến đổi
ngược. 
„ [Tth]= [T(-x1,-y1,-z1)]x[T(φ-0)]x[T(ϕ)]x [T(ψ)]x[T(ψ)]x[T(ϕ)]x
„ [T(φ-90)]x[T(-x1,-y1,-z1)]
(c) SE/FIT/HUT 2002 19
Hệ toạ độ
Coordinate Frame
„ Coordinate frame is given by origin φ and three mutually orthogonal unit vectors, 
i, j, k.
„ Mutually orthogonal (dot products): i•j = ?; i•k = ?; j•k = ?.
„ Unit vectors (dot products): i•i = ?; j•j = ?; k•k = ?. 
xz
y
i
j
k
φ
(c) SE/FIT/HUT 2002 20
Orientation
xz
y
i
j
k
φ
Right handed coordinate system: Left handed coordinate system:
Cross product: i x j = ?
xz
y
i
j
k
φ
Cross product: i x j = ?
(c) SE/FIT/HUT 2002 21
Coordinate Transformations
xz
y
i
j
k
φ
Transform (x, y, z, 0) coordinate frame to (i, j, k, φ) coordinate frame.
Affine transformation matrix:
Maps (i, j, k, φ) coordinates into (x, y, z, 0) coordinates!
.
1000 








φ
φ
φ
zzzz
yyyy
xxxx
kji
kji
kji
(c) SE/FIT/HUT 2002 22
Coordinate change (Translation)
(φx, φy, φz)
.
110001 

















=










c
b
a
z
y
x
xz
y
a
c
b
(0,0,0)
Change from (a,b,c,φ) coordinates to 
(x,y,z,0) coordinates:
(c) SE/FIT/HUT 2002 23
Coordinate change (Rotation)
.
110001 

















=










c
b
a
z
y
x
c
(φx, φy, φz)
a
b
(0,0,0)
Change from (a,b,c,φ) coordinates to 
(x,y,z,0) coordinates:
y x
z
θ
(c) SE/FIT/HUT 2002 24
Composition of coordinate change
z
φ
x
y
M1 changes from coordinate frame (x,y,z,θ) to (x’,y’,z’,θ’).
M2 changes from coordinate frame (x’,y’,z’,θ’) to (x’’,y’’,z’’,θ’’).
Change from coordinate frame (x,y,z,θ) to (x’’,y’’,z’’,θ’’): ?
z ’
φ ’ x ’
y ’
z’’
φ’’
x’’
y’’
M1
M2
(c) SE/FIT/HUT 2002 25
Object vs. coordinate transformations
Translate and then rotate object:
Translate and then rotate coordinate frame:
z
φ
x
y
z
φ
x
y
z
φ
x
y
z
φ
x
y
z
φ
x
y
z’
φ’
x’
y’
z
φ
x
y
z ’ ’
φ ’ ’ x ’
’
y ’ ’
(c) SE/FIT/HUT 2002 26
Object vs. coordinate transformations (2)
Translate and then rotate object:
Rotate and then translate coordinate frame:
z
φ
x
y
z
φ
x
y
z
φ
x
y
z
φ
x
y
z
φ
x
y
z
φ
x
y
z ’ ’
φ ’ ’ x ’
’
y ’ ’
z ’
φ ’
x ’
y ’
(c) SE/FIT/HUT 2002 27
Order of transformations
Let Mi be the transformation matrix for transformation Ti.
Sequence of object (point) transformations, T1, T2, T3.
Transformation matrix = M3 x M2 x M1.
Sequence of coordinate system transformations, T1, T2, T3.
Transformation matrix = M1 x M2 x M3.
Note: OpenGL, OpenInventor use coordinate system transformations.

File đính kèm:

  • pdfbai_giang_computer_graphics_bai_4b_phep_bien_doi_trong_khong.pdf