B ài 4 Các phép biến đổi Đồ hoạ Transformations Le Tan Hung Email: hunglt@it-hut.edu.vn 2 Phép biến đổi - Transformations và Hiên thị modeling, rendering, displaying vector thành tọa độ
Trang 1B ài 4 Các phép biến đổi Đồ hoạ
Transformations
Le Tan Hung Email: hunglt@it-hut.edu.vn
2
Phép biến đổi - Transformations
và Hiên thị (modeling, rendering, displaying)
vector thành tọa độ hay vector khác
modeling
coordinate Modeling
transformation Viewing transformation
world coordinate viewing coordinate( eye
coordinate)
3
Phép biến đổi Transformations
– build complex models by positioning simple
components
– placing virtual camera in the world
– transformation from world coordinates to camera
coordinates
4
Transformations - Modeling
world
5
Phép biến đổi Affine
Affine Transformations?
điểm đặc trưng của đối tượng thành tập tương
ứng các điểm mới để tạo ra các hiệu ứng cho
toàn đối tượng.
–Ví dụ: phép biến đổi tọa độ với chỉ 2 điểm đầu cuối của
đoạn thẳng tạo thành 2 điểm mới mà khi nối chúng với
nhau tạo thành đoạn thẳng mới
điểm nằm trên đoạn thẳng mới với cùng phép biến
đổi thông qua phép nội suy
6
Modeling Transformations
Transform objects/points
Transform coordinate system
Trang 2Biểu diễn Ma trận
điểm P thành các điểm Q theo thuật toán
hàm ánh xạ của điểm:
– T(P x ,P y ) = (Q x ,Q y)
– or:
8
Matrix Representation
z Phép biến đổi đồ họa - affine transformation T ánh xạ tập P sang tập Q:
– –
– where a, b, c, d, tx and ty là các hệ số
z i.e ⎜⎜⎛ ⎟⎟⎞=⎜⎜⎛ ⎟⎟⎞⎜⎜⎛ ⎟⎟⎞+⎜⎜⎛ ⎟⎟⎞
y x
y x
y x
t t P P d c b a Q Q
x x x
y y y
Tr MP
9
Các phép biến đổi hình học hai
chiều
z Phép biến đổi vị trí điểm
trên toàn bộ đối tượng
⎥
⎢
=
d c b a T
[ ] [ ] [* y]* [ (ax cy) ( bx dy) ] [x' y']
d c b a x T
y
x z
p M
p W
10
Phép biến đổi
z Phép biến đổi tỉ lệ - Scaling
z A scaling changes the size of an object with two scale
factors, S x and S y
z A shearing shears an object in a particular direction, (in 2D, it’s either in the x or in the y direction
⎥
⎤
⎢
⎡
= 1 0 0 1
T
[ ] [ ] [ ] [ ( ) ] [' ']
1 0
0
*
[ ] [ ] [ ] [ ] [' ']
1 0
1
*
x z
y
Phép quay- Rotation
x = ρ cos α, y = ρ sin α ;
x’ = ρ cos (θ +α ), y’ = ρ sin (θ +α ) ;
x’ = ρ ( cosθ cosα - sinθ sinα )
= x cos θ - y sinθ
y’ = ρ ( sinθ cosα + cosθ sinα )
= x sin θ + y cosθ
[x' y']= [xcosθ - ysinθ xsinθ + ycosθ]
y
( x, y )
x
α ρ
θ
ρ
( x’, y’ )
⎥
⎤
⎢
⎡
−
=
θ θ θ θ
cos sin
sin cos
]
[T
Thuộc tính cơ bản của phép biến đổi Affine Transformations
– They preserve lines, so the image of a straight line is another straight line
– This vastly simplifies drawing transformed line segments
of the original line and then draw a straight line between them
– Preservation of collinearity guarantees that polygons will transform into polygons
Trang 3– Preservation of parallelism guarantees that
parallelograms will transform into parallelograms
– Preservation of proportional distances means that
mid-points of lines remain mid-mid-points
zAffine transformations change volume by |
Det(M) |;
14
Kết hợp các phép biến đổi Composition of Affine Transforms
z Any affine transformation can be decomposed into elementary transformations
có thể tạo thành từ các phép biến đổi cơ sở như:
–Dịch chuyển - Translation
–Tỉ lệ - Scaling
15
Affine transformations preserve
affine combinations
z It is rare that we want to perform just one elementary
transformation
z Usually an application requires that we build a
complex transformation out of several elementary
ones
– e.g translate an object, rotate it, and scale it, all in one move
z These individual transformations combine into one
overall transformation
z This is called the composition of transformations
z The composition of two or more affine transformations
is also an affine transformation
16
Thuộc tính
tượng tạo thành phép biến đổi cho đối tượng
z We have defined each transformation by their effects on single points
z In practice these will be applied to multiple points to transfer entire scenes or objects made up of many defining points
T
17
Điểm gốc - Pivotal points
Cho phép quay và tỉ lệ Rotation and Scaling
z The simple versions of rotation and scaling have been based around the
origin.
z This means that when we rotate or scale, the object will also move, with
respect to the origin
z Translate all points through (-c1,-c2)
z Rotate all points about the origin by
z Translate all points back through (c1,c2)
(c 1 ,c 2 )
Pivotal points
z Often we wish to rotate or scale with respect to some pivotal point, not the origin
z Most significantly, we often wish to rotate or scale an object about its centre, or midpoint
z In this way, the object’s location does not change
z To do this, we relate the rotation or scaling about the pivotal point V, to an elementary rotation or scaling about the origin
– We first translate all points so that V coincides with the origin – We then rotate or about the origin
– then all points are translated back, so that V is restored to its original location
Trang 4Hệ toạ độ đồng nhất
transformation followed by a translation
matrix multiplication but must instead be added as
an extra term, or vector
be represented in matrix multiplication form
composed with other transformations, by simply
multiplying the matrices together
20
Tọa độ đồng nhất Homogeneous Transform
–x' = ax + by + n
–y' = cx + dy + m
tọa độ đồng nhất của các vector vị trí
ở đó tọa độ điểm được mô tả dưới ma trận [ x* y* h]
–với x = x*/h, y = y*/h, z = z*/h và h là một số thực tuỳ ý
21
Ưu điểm của Hệ tọa độ đồng nhất
Homogeneous Transform
dưới phép nhân ma trận, hỗ trợ cho việc xử lý
bằng cả phần cứng và phần mềm
tích đơn giản duy nhất Tránh nhầm lẫn về thứ tự
của các phép nhân khi sử dụng.
biệt không tuyến tính khác(non-affine) như:
– Phép chiếu phối cảnh - Perspective projections!
– Uốn - Bends, Vuốt tapers v.v.v
22
Phép biến đổi với tọa độ đồng nhất
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1 0
0 ]
[
n m d c b a T
] 1 [
1 0 1 0 0 0 1 ] 1 [ ] 1 ' '
n m y x y
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
(t x , t y , t z )
Phép tỉ lệ
] 1 2 1 1 0 0 0 2 0 0 0 1 ] 1 [
]
1
'
'
S y
x
y
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
=
Phép quay
y
( x, y )
x
α
ρ
θ
ρ
( x’, y’ )
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
1 0 0
0 cos sin
0 sin cos ] 1 [ ] 1 ' '
φ φ
y x y x
] 1 cos sin sin cos
=
Trang 5Phép biến đổi tổng hợp
26
Ma trận biến đổi 3 chiều 3D Matrix Transformations
lệ-scaling và quay-rotation sử dụng trong không gian 2D đều co thể mở rộng trong không gian 3D
possible to represent each type of transformation
in a matrix form
4x4 matrix
27
Các phép biến đổi hình học 3 chiều
z Biểu diễn điểm trong không gian 3 chiều
z[ x* y* z* h ] = [ x y z 1 ] [ T ]
z[x' y' z' 1 ]= [ x*/h y*/h z*/h 1 ][ T ]
z Ma trận biến đổi
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
s n m l
r j i g
q f e d
p c b a ]
[T
28
Phép tịnh tiến
– [X'] = [ X ] [ T(dx,dy,dz) ]
– [ x' y' z' 1 ] =
– [ x y z 1 ].[ T(dx,dy,dz) ]
z = [ x+dx y+dy z+dz 1 ]
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
1 0 1 0 0
0 0 1 0
0 0 0 1 )]
, , ( [
dz dy dx
dz dy dx T
29
Phép tỉ lệ
z s1, s2, s3 là các hệ số tỉ lệ
tương ứng trên các trục toạ độ
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
1 0 0 0
0 3 0 0
0 0 2 0
0 0 0 1 1 1
s s s z y x z
y
x' ' ' ] [ ]
[
] 1 3 2 1
.
=
30
Rotation
origin.
each of the x, y and z axes
rotations are clockwise, when looking down a positive axis towards the origin
x y
z
x y
z
x y
z
Trang 6Phép quay 3 chiều
z Quay quanh trục x
z Quay quanh trục z
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
1 0 0 0
0 0
0 0
0 0 0 1
φ φ φ φ cos sin sin cos ]
[Tx
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
1 0 0 0
0 1 0 0
0 0 cos sin
0 0 sin cos ]
ϕ ϕ
Tz
32
Quay quanh trục y
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
=
1 0 0 0
0 cos 0 sin
0 0 1 0
0 sin 0 cos ] [
θ θ
θ θ
Ty
33
Phép biến dạng
(secondary translation)
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
1 0 0 0
0 1 0 1 0 1
1 1
i g f d c b z
y x z y
x' ' ' ] [ ]
[
] 1 [ x + yd + gz bx + y + iz cx + fy + z
=
34
Phép lấy đối xứng
( reflections-secondary translation)
Quay quanh một trục bất kỳ song song với
các trục tọa độ
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
1 0
0 1
0
0
0 0
1
0
0 0
0
1
]
[
z
y
Tr
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
=
1 0 0 0
0 0
0 0
0 0 0 1
φ φ φ φ φ
cos sin sin cos )]
(
[T
,
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
=
−
1 0
0 1 0 0
0 0 1 0
0 0 0 1
1
z y
Tr]
[
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎣
⎡
−
− +
−
−
=
1 sin ) cos 1 ( sin
)
cos
1
(
0
0 cos sin
0
0 sin cos
0
0 0 0
1
]
[
φ φ φ
φ
φ φ
φ φ
y z z
y
Tth
Quay quanh một trục bất kỳ
Trang 7Solution
z Chuyển P1 về gốc tọa độ
(y, z)
z Quay quanh trục x sao cho P1P2 trựng với trục z
(y, z)
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.
38
Biến đổi gúc nhỡn Viewing Transformation
Lờ Tấn Hựng
39
Nội dung
40
Hệ tọa độ thực
(WCS-World Coordinate System)
z Là hệ tọa độ của đối tượng được cỏc chương trỡnh ứng dụng sử dụng để mụ
tả tọa độ của cỏc đối tượng trong thế giới thực
z Đơn vị trong hệ thống tọa
độ phụ thuộc vào khụng gian và kớch thước của đối tượng được mụ tả, cú thể
từ A0, nm, mm đến m,
km
41
Hệ tọa độ thiết bị
(DCS-Device Coordinate System)
hỡnh ảnh và khụng gian của đối tượng mà
ứng dụng mụ tả
Thiết bị hiển thị
subselect.me
Vùng tọa độ thiết bị VGA=640x480
42
Hệ tọa độ chuẩn (NCS - Normalized Coordinate System)
thiết bị khỏc nhau
Wcs
chuyển đổi 1
chuyển đổi 2
Trang 8Phép biến đổi nhìn cơ bản
Basic Viewing Transform
hệ tọa độ mô hình sang hệ tọa độ mà hình
(Modelling co-ordinates to Screen Coordinates)
44
2-Dimensional Views
thực sẽ được hiển thị
ảnh thế giới thực sẽ hiển thị
(wx min ,wy min)
(wx max ,wy max)
(vx min ,vy min)
(vx max ,vy max)
45
Phép chuyển đổi
46
Phép biến đổi theo ma trận
z Ma trận chuyển vị theo Window
z Ma trận biến đổi tỉ lệ
z Ma trận chuyển vị theo tọa độ viewport
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
−
−
=
1 0 1 0 0 0 1 1
Yw Xw
T ]
[
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
=
1 0 0
0 min max min max 0
0 0 Xwmin -Xwmax Xvmin -Xvmax ] 1 [
Yw Yw Yv Yv S
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
= 1 0 1 0 0 0 1 ] 2 [
Yy Xv T
Ma trận biến đổi tổng hợp của phép chuyển đổi
tọa độ
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
=
=
1 min max min max min min Xwmin -Xwmax
Xvmin -Xvmax
min
min
0 min max min max 0
0 0
Xwmin
-Xwmax
Xvmin
-Xvmax
]
]
2
[
1
[
1
[
]
Yw Yw Yv Yv Yw Yv Xw
Xv
Yw Yw Yv Yv T
T
x
S
x
T
T
Ví dụ OpenGL - Windows and Viewports
z Plotting a function revisted
//set the viewing coordinates setWindow(xmin, xmax, ymin, ymax);
setViewport(0,640,0,480);
glBegin(GL_POINTS);
for(GLdouble x = xmin; x
< xmax; x+=0.005 ) {
glVertex2d(x, pow(2.7183,-x)
*cos(2*3.14*x));
}
// - setWindow -void setWindow(GLdouble left, Gldouble right, GLdouble bottom, GLdouble top) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(left, right, bottom, top);
} // - setViewport -void setViewport(GLdouble left, Gldouble right, GLdouble bottom, GLdouble top) {
glViewport(left, bottom, right – left, top -bottom);}
Trang 9Biến đổi hệ tọa độ
Coordinate Transforms
(1,1)
u’
v’
(1,1)
u
v
x
y
cục
z Là phép biến đổi trên hệ tọa độ của đối tượng Việc thay
đổi hệ tọa độ của đối tượng với hệ thống tọa độ chung
tao nên sự thay đổi toàn cảnh
50
x
y
x
y
Các phép biến đổi
P 1 0 0 0 1 0 0 0 1 Q
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
(1,1)
u
v
(1,1)
u’
v’
51
x
y
Translation
x
y
P 1 0 0 1 0 0 1 Q
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
tx
(1,1)
u
v
(1+tx,1+ty)
u’
v’
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
=
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
1
1
0
0
ty
tx
ty
tx
1
0
0
1
0
0
1
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡ +
=
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
1 1 1 0 1
ty tx ty tx
1 0 0 1 0 0 1
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡ +
=
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
1 1 1 1 0
ty tx ty tx
1 0 0 1 0 0 1
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
=
1
ty
tx
O
52
x
y
Rotation
x
y
P 1 0 0
0
0 Q
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
θ θ cos sin sin cos
(1,1)
u
v
u’
v’
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1 sin
cos θ
θ
v
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡−
= 1 cos
sin θ
θ
u
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1 0
0
O
53
x
y
Scaling
x
y
P 1 0
0
0
0 Q
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
sx
0
0
(1,1)
u
v
(sx*1,sy*1)
u
v
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1 0
0
O
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1
0
sy u
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
= 1 0
sx v
54
Composite Transformations
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎝
⎛
−
− +
−
−
=
1 0
0
sin ) cos 1 ( cos sin
sin ) cos 1 ( sin cos
1 1
1 1
θ θ θ
θ
θ θ θ
θ
x y
y x
M
x
y x
y
(1,1)
u
v
u’
v
’
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
− +
− 1 sin ) cos 1 (
sin ) cos 1 (
1 1
1 1
θ θ θ θ
y y
y x
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
−
− + +
− + 1 sin ) cos 1 ( sin
sin ) cos 1 ( cos
1 1 1 1
θ θ θ
θ θ θ
y y y x
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
−
− +
+
− +
− 1 sin ) cos 1 ( cos
sin ) cos 1 ( sin
1 1
1 1
θ θ θ
θ θ θ
y y
y x
O =
v =
u =
Trang 10+
=
+
Obviously we want
something more
versatile
56
Quan sát 3D - 3D Viewing
z Hiển thị hình ảnh 3D trên các thiết bị 2D
z Mỗi 1 quan sát 3D trên cùng 1 đối tượng chỉ ra trạng thái chiếu của điểm quan sát đó.
– HÌnh ảnh chiếu 2D của đối tượng 3D phụ thuộc vào người quan sát
z Các quan sát khác nhau được phân biệt bởi thông số: vị trí position, hướng orientation, và vùng nhìn field of view
57
Viewing
x W
z W
y W
y M
x M
z M
p M
x V
p W
modeling
coordinate Modeling
transformation
world coordinate Viewing viewing coordinate (eye coordinate) transformation
58
The Viewing Process
– Mô tả biểu diễn hình học
chiếu từ 3D thành 2D.
Khái quát về - Camera Analogy
z camera location: Vị trí trong thế
giới thực
của Camera
Camera
z aperture size: Vùng nhìn thấy của
Camera
Viewing Coordinates
thống tọa độ quan sát trên các thông số gồm:
– Điểm nhìn (VRP View Reference Point ): điểm gốc quan sát Vị trí của Camera)
– Vector mặt phẳng quan sát (VPN View Plane Normal vector ): viewing direction)
– Vector hướng quan sát (VUP View
UP vector ): establishes orientation of
“camera”
) , , (n1n2n3
=
=
N N n
) , , (u1u2u3
=
×
×
=
N V N V u
) , , (v1v2v3
=
×
=n u v
Three mutually orthogonal basis vectors:
Trang 1161 61
Ví dụ: Viewing Transformation
(i) simple cases ( always view along negative z-axis )
(0, 0, z)
Điểm nhìn trên trục Z
z W -axis
zW
xW
yW
n
M WC,VC= T (0, 0, z,)
(a, b, c)
Nhìn ở vị trí (a, b, c) theo trục Z và ngược hướng z W -axis
M WC,VC= T (-a, -b, -c )
zW
xW
yW
and , ,
3 2 1 3
2 1 3 2 1
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎝
⎛
=
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎝
⎛
=
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎝
⎛
=
n n n
v v v
u u u
n v
u
Ma trận biến đổi tọa độ thế giới sang tọa độ quan sát :
M WC,VC = R T
(xw, yw, zw) and (u, v, n) 2 hệ tọa độ với cùng 1 gốc
Vector đơn vị (u, v, n) được định nghĩa theo WCS
63
3D Viewing Transformation
z Với điểm quan sát VRPoint (x0, y0, z0) the Viewing
Transformation can be defined by composition of the
following two transformations:
⎟⎟
⎟
⎟
⎠
⎞
⎜⎜
⎜
⎜
⎝
⎛
−
−
−
=
1 0
0
0
1
0
0
0
1
0
0
0
1
0 0 0
z y x
T
⎟⎟
⎟
⎟
⎠
⎞
⎜⎜
⎜
⎜
⎝
⎛
=
1 0 0 0 0 0 0 3 2 1 3 2 1 3 2 1
n n n v v v u u u
R
T R
MWC , VC = •
This is used to determine the location of each vertex in the
camera co-ordinate system
x
x r wc vcr
,
M
=
′
64
Viewing Transformation
z We might also achieve this in terms of the following transformation sequence:
– Translate the view reference point to the origin of the world co-ordinate system
– Apply Rotations to align x v , y v and z v , axes, respectively
(x 0 , y 0 , z 0 )
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
−
− 1 0 0 1 0 0 0 0 1 0 0
z y x
1 0 0 0
0 0 0
3 2 1 3 2 1 3 2 1
⎟⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜⎜
⎜
⎜
⎜
⎜
⎝
⎛
=
n n n v v v u u u
R
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
= 1
3 2 1
u u u
R
R
p V = M WC,VC p W
x W
z W
y W
p M p W
p V
x V -z V
66
• Recall we’ve re-expressed our world geometry in eye’s frame reference.
• To do projection, we use a synthetic cameraby introducing a viewing frustum after the viewing transformation
66
x W
z W
y W
y M
x M
z M
p M
x V -z V p V
p W
x W
z W
y W
p M p W