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
(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:
- bai_giang_computer_graphics_bai_4b_phep_bien_doi_trong_khong.pdf