Khoa CNTT - DDHBK Hà nội<br />
hunglt@it-hut.edu.vn<br />
8682595<br />
<br />
Phép biến đổi - Transformations<br />
Bài 4 Các phép biến đổi Đồ hoạ<br />
<br />
z<br />
<br />
Transformations<br />
<br />
z<br />
<br />
Trong kỹ thuật đồ hoạ 3 bước: Mô hình, Tô trát<br />
và Hiên thị (modeling, rendering, displaying)<br />
Với Modeling ( Mô hình hóa) :<br />
<br />
modeling<br />
coordinate Modeling<br />
transformation<br />
<br />
world<br />
coordinate<br />
<br />
Viewing<br />
transformation<br />
<br />
viewing<br />
coordinate (eye<br />
coordinate)<br />
<br />
Le Tan Hung<br />
Email: hunglt@it-hut.edu.vn<br />
<br />
z<br />
<br />
Transformation: là phép ánh xạ tọa độ điểm hay<br />
vector thành tọa độ hay vector khác<br />
<br />
2<br />
<br />
1<br />
<br />
Transformations - Modeling<br />
<br />
Phép biến đổi Transformations<br />
z<br />
<br />
–<br />
<br />
z<br />
<br />
build complex models by positioning simple<br />
components<br />
<br />
Biến đổi tạo góc nhìn - Viewing transformations<br />
–<br />
–<br />
<br />
z<br />
<br />
world<br />
<br />
Biến đổi mô hình hoá - Modeling transformations<br />
<br />
placing virtual camera in the world<br />
transformation from world coordinates to camera<br />
coordinates<br />
<br />
Biến Phép chiếu – Projection Transform<br />
<br />
3<br />
<br />
4<br />
<br />
Phép biến đổi Affine<br />
Affine Transformations?<br />
z<br />
<br />
Modeling Transformations<br />
<br />
Phép biến đổi Affine là phép biến đổi tọa độ<br />
<br />
Transform<br />
objects/points<br />
<br />
điểm đặc trưng của đối tượng thành tập tương<br />
ứng các điểm mới để tạo ra các hiệu ứng cho<br />
toàn đối tượng.<br />
– Ví dụ: phép biến đổi tọa độ với chỉ 2 điểm đầu cuối của<br />
<br />
Transform coordinate system<br />
<br />
đoạn thẳng tạo thành 2 điểm mới mà khi nối chúng với<br />
nhau tạo thành đoạn thẳng mới.<br />
z Các điểm nằm trên đoạn thẳng sẽ có kết quả là<br />
điểm nằm trên đoạn thẳng mới với cùng phép biến<br />
đổi thông qua phép nội suy.<br />
5<br />
<br />
6<br />
<br />
1<br />
<br />
Khoa CNTT - DDHBK Hà nội<br />
hunglt@it-hut.edu.vn<br />
8682595<br />
<br />
Biểu diễn Ma trận<br />
z<br />
z<br />
z<br />
<br />
Matrix Representation<br />
z<br />
<br />
Việc biến đối các đối tượng làm thay đổi các<br />
điểm P thành các điểm Q theo thuật toán<br />
Việc biến đổi P sử dụng tọa độ của P (Px,Py) ánh<br />
xạ thành các tọa độ mới Q (Qx,Qy)<br />
Việc biến đổi có thể biểu diễn thông qua hàm T,<br />
hàm ánh xạ của điểm:<br />
<br />
–<br />
–<br />
<br />
z<br />
<br />
T(Px,Py) = (Qx,Qy)<br />
or:<br />
T(P) = Q<br />
<br />
–<br />
–<br />
–<br />
<br />
Phép biến đổi đồ họa - affine transformation T ánh xạ<br />
tập P sang tập Q:<br />
–<br />
Qx = aPx + bPx + t x<br />
<br />
z<br />
<br />
Biểu diễn ma trận:<br />
<br />
i.e.<br />
<br />
⎛Qx<br />
⎜<br />
⎜Q<br />
⎝ y<br />
<br />
⎞ ⎛a<br />
⎟ = ⎜⎜<br />
⎟<br />
⎠ ⎝c<br />
<br />
b<br />
d<br />
<br />
⎞ ⎛ Px ⎞ ⎛ t x<br />
⎟+⎜<br />
⎟⎟ ⎜⎜<br />
⎟ ⎜<br />
⎠⎝ Py ⎠ ⎝ t y<br />
<br />
⎞<br />
⎟<br />
⎟<br />
⎠<br />
<br />
Q = MP + Tr<br />
<br />
7<br />
<br />
8<br />
<br />
Các phép biến đổi hình học hai<br />
chiều<br />
z<br />
z<br />
<br />
z<br />
<br />
Phương pháp biểu diễn đối tượng P = [ x<br />
Phép biến đổi vị trí điểm<br />
⎡a b ⎤<br />
<br />
Phép biến đổi<br />
<br />
y ]<br />
<br />
T =⎢<br />
⎥<br />
⎣c d ⎦<br />
<br />
Thực thi phép biến đổi đúng trên 1 điểm ảnh sẽ đúng<br />
trên toàn bộ đối tượng<br />
a<br />
[X ]* [T ] = [x y ]* ⎡⎢<br />
⎣c<br />
<br />
[<br />
<br />
b⎤<br />
= [(ax + cy ) (bx + dy )] = x ' y '<br />
d ⎥⎦<br />
<br />
Phép bất biến<br />
<br />
z<br />
<br />
Phép biến đổi tỉ lệ - Scaling<br />
A scaling changes the size of an object with two scale<br />
factors, Sx and Sy<br />
<br />
z<br />
<br />
]<br />
z<br />
z<br />
<br />
x<br />
z<br />
<br />
9<br />
<br />
x<br />
<br />
⎡ a 0⎤<br />
y ]* ⎢<br />
⎥ = [(ax ) y ] = [x' y ']<br />
⎣0 1⎦<br />
1 b<br />
[X ]* [T ] = [x y ]* ⎡⎢ ⎤⎥ = [bx + dy ] = [x' y ']<br />
⎣0 1 ⎦<br />
<br />
[X ]* [T ] = [x<br />
<br />
pW<br />
<br />
pM<br />
<br />
⎡1 0 ⎤<br />
T =⎢<br />
⎥<br />
⎣0 1 ⎦ z<br />
<br />
y<br />
<br />
z<br />
<br />
y<br />
<br />
Phép biến dạng<br />
A shearing shears an object in a particular direction, (in<br />
2D, it’s either in the x or in the y direction<br />
<br />
10<br />
<br />
Thuộc tính cơ bản của phép biến<br />
đổi Affine Transformations<br />
<br />
Phép quay- Rotation<br />
x = ρ cos α, y = ρ sin α ;<br />
x’ = ρ cos (θ +α ), y’ = ρ sin (θ +α ) ;<br />
x’ = ρ ( cosθ cosα - sinθ sinα )<br />
= x cosθ - y sinθ<br />
y’ = ρ ( sinθ cosα + cosθ sinα )<br />
= x sinθ + y cosθ<br />
[x' y']= [xcosθ - ysinθ xsinθ + ycosθ]<br />
<br />
z<br />
<br />
y<br />
<br />
⎡ cos θ<br />
[T ] = ⎢<br />
⎣ − sin θ<br />
<br />
sin θ ⎤<br />
cos θ ⎥⎦<br />
<br />
Preservation of lines:<br />
–<br />
<br />
( x’, y’ )<br />
<br />
–<br />
ρ<br />
( x, y )<br />
<br />
–<br />
<br />
ρ<br />
<br />
θ<br />
<br />
11<br />
<br />
Q y = cPy + dPy + t y<br />
where a, b, c, d, tx and ty là các hệ số<br />
<br />
α<br />
<br />
x<br />
<br />
–<br />
<br />
12<br />
<br />
–<br />
<br />
They preserve lines, so the image of a straight line is<br />
another straight line.<br />
This vastly simplifies drawing transformed line<br />
segments.<br />
We need only compute the image of the two endpoints<br />
of the original line and then draw a straight line between<br />
them<br />
Preservation of collinearity guarantees that polygons will<br />
transform into polygons<br />
<br />
Affine transformations map lines to lines;<br />
<br />
2<br />
<br />
Khoa CNTT - DDHBK Hà nội<br />
hunglt@it-hut.edu.vn<br />
8682595<br />
<br />
Kết hợp các phép biến đổi<br />
Composition of Affine Transforms<br />
<br />
Thuộc tính<br />
<br />
z<br />
<br />
–<br />
<br />
z<br />
<br />
Preservation of parallelism guarantees that<br />
parallelograms will transform into parallelograms<br />
<br />
z<br />
<br />
Preservation of proportional distances<br />
–<br />
<br />
z<br />
<br />
z<br />
<br />
Preservation of parallelism<br />
<br />
Preservation of proportional distances means that midpoints of lines remain mid-points<br />
<br />
Affine transformations change volume by |<br />
Det(M) |;<br />
<br />
13<br />
<br />
Any affine transformation can be<br />
decomposed into elementary<br />
transformations.<br />
Mọi phép biến đổi phức tạp đều<br />
có thể tạo thành từ các phép biến<br />
đổi cơ sở như:<br />
– Dịch chuyển - Translation<br />
– Tỉ lệ - Scaling<br />
– Quay- Rotation<br />
– Biến dạng - Shearing<br />
<br />
14<br />
<br />
Affine transformations preserve<br />
affine combinations<br />
z<br />
z<br />
<br />
z<br />
z<br />
<br />
T<br />
<br />
It is rare that we want to perform just one elementary<br />
transformation.<br />
Usually an application requires that we build a<br />
complex transformation out of several elementary<br />
ones<br />
–<br />
<br />
z<br />
<br />
Thuộc tính<br />
<br />
z<br />
<br />
z<br />
<br />
These individual transformations combine into one<br />
overall transformation<br />
This is called the composition of transformations.<br />
The composition of two or more affine transformations<br />
is also an affine transformation<br />
<br />
15<br />
<br />
Tác động lên tập các điểm đặc trưng của đối<br />
<br />
tượng tạo thành phép biến đổi cho đối tượng<br />
<br />
e.g. translate an object, rotate it, and scale it, all in one move<br />
<br />
z<br />
<br />
We have defined each transformation by their effects on<br />
single points<br />
In practice these will be applied to multiple points to<br />
transfer entire scenes or objects made up of many<br />
defining points<br />
<br />
16<br />
<br />
Điểm gốc - Pivotal points<br />
<br />
Pivotal points<br />
<br />
Cho phép quay và tỉ lệ Rotation and Scaling<br />
z<br />
z<br />
z<br />
z<br />
z<br />
<br />
The simple versions of rotation and scaling have been based around the<br />
origin.<br />
This means that when we rotate or scale, the object will also move, with<br />
respect to the origin<br />
Translate all points through (-c1,-c2)<br />
Rotate all points about the origin by<br />
<br />
z<br />
z<br />
z<br />
z<br />
<br />
Translate all points back through (c1,c2)<br />
<br />
Often we wish to rotate or scale with respect to some<br />
pivotal point, not the origin<br />
Most significantly, we often wish to rotate or scale an<br />
object about its centre, or midpoint<br />
In this way, the object’s location does not change<br />
To do this, we relate the rotation or scaling about the<br />
pivotal point V, to an elementary rotation or scaling about<br />
the origin<br />
–<br />
<br />
(c1,c2)<br />
<br />
–<br />
–<br />
<br />
(0,0)<br />
17<br />
<br />
We first translate all points so that V coincides with the origin<br />
We then rotate or about the origin<br />
then all points are translated back, so that V is restored to its<br />
original location<br />
<br />
18<br />
<br />
3<br />
<br />
Khoa CNTT - DDHBK Hà nội<br />
hunglt@it-hut.edu.vn<br />
8682595<br />
<br />
z<br />
z<br />
z<br />
<br />
z<br />
z<br />
19<br />
<br />
Hệ toạ độ đồng nhất<br />
<br />
Tọa độ đồng nhất<br />
Homogeneous Transform<br />
<br />
Vấn đề gặp phải:<br />
An affine transformation is composed of a linear<br />
transformation followed by a translation<br />
Unfortunately, the translation portion is not a<br />
matrix multiplication but must instead be added as<br />
an extra term, or vector<br />
What we need is a “trick”, so that translations can<br />
be represented in matrix multiplication form<br />
This then means that they can be easily<br />
composed with other transformations, by simply<br />
multiplying the matrices together<br />
<br />
x' = ax + by + n<br />
y' = cx + dy + m<br />
Phương pháp biểu diễn mở rộng thông qua<br />
tọa độ đồng nhất của các vector vị trí<br />
–<br />
–<br />
<br />
z<br />
<br />
z<br />
<br />
20<br />
<br />
Ưu điểm của Hệ tọa độ đồng nhất<br />
Homogeneous Transform<br />
z<br />
<br />
z<br />
<br />
z<br />
<br />
Phép biến đổi với tọa độ đồng nhất<br />
<br />
Ðưa ra cái nhìn hợp nhất của các phép biến đổi<br />
dưới phép nhân ma trận, hỗ trợ cho việc xử lý<br />
bằng cả phần cứng và phần mềm<br />
Kết hợp các các phép biến đổi tạo thành ma trận<br />
tích đơn giản duy nhất. Tránh nhầm lẫn về thứ tự<br />
của các phép nhân khi sử dụng.<br />
–<br />
<br />
Với ứng dụng của phép chiếu hình học mà<br />
ở đó tọa độ điểm được mô tả dưới ma trận [<br />
x* y* h]<br />
– với x = x*/h, y = y*/h, z = z*/h và h là một số<br />
thực tuỳ ý<br />
<br />
z<br />
<br />
Ma trận biến đổi đồng nhất<br />
<br />
z<br />
<br />
Phép tịnh tiến<br />
[ x'<br />
<br />
–<br />
<br />
y ' 1] = [ x<br />
<br />
Order matters: AB is generally not the same as BA<br />
<br />
Cho phép kết hợp với cả các phép biến đổi đặc<br />
biệt không tuyến tính khác(non-affine) như:<br />
–<br />
<br />
⎡ a b 0⎤<br />
[T ] = ⎢⎢ c d 0⎥⎥<br />
⎣⎢m n 1⎥⎦<br />
<br />
⎡ 1 0 0⎤<br />
y 1]⎢⎢ 0 1 0⎥⎥ = [ x + m<br />
⎣⎢m n 1⎥⎦<br />
<br />
y + n 1]<br />
<br />
(tx, ty, tz)<br />
<br />
Phép chiếu phối cảnh - Perspective projections!<br />
Uốn - Bends, Vuốt tapers v.v.v<br />
<br />
21<br />
<br />
22<br />
<br />
Phép tỉ lệ<br />
<br />
[ x'<br />
<br />
y ' 1] = [ x<br />
<br />
⎡ S1 0 0⎤<br />
y 1]⎢ 0 S 2 0⎥ = [ x.S1 y.S 2 1]<br />
⎢<br />
⎥<br />
⎣⎢ 0 0 1⎥⎦<br />
<br />
Phép quay<br />
[ x'<br />
<br />
y ' 1] = [ x<br />
<br />
y<br />
<br />
⎡ cos φ<br />
1] ⎢ − sin φ<br />
⎢<br />
⎢⎣ 0<br />
<br />
= [ x. cos φ − y. sin φ<br />
<br />
sin φ<br />
cos φ<br />
0<br />
<br />
0⎤<br />
0⎥<br />
⎥<br />
1 ⎥⎦<br />
<br />
y<br />
( x’, y’ )<br />
<br />
x. sin φ + y. cos φ 1]<br />
ρ<br />
( x, y )<br />
ρ<br />
<br />
θ<br />
α<br />
<br />
23<br />
<br />
x<br />
<br />
24<br />
<br />
4<br />
<br />
Khoa CNTT - DDHBK Hà nội<br />
hunglt@it-hut.edu.vn<br />
8682595<br />
<br />
Ma trận biến đổi 3 chiều<br />
3D Matrix Transformations<br />
<br />
Phép biến đổi tổng hợp<br />
z<br />
<br />
z<br />
<br />
z<br />
<br />
25<br />
<br />
Các phép biến đổi chuyển vị - translation, tỉ lệscaling và quay-rotation sử dụng trong không<br />
gian 2D đều co thể mở rộng trong không gian 3D<br />
Again, using homogeneous coordinates it is<br />
possible to represent each type of transformation<br />
in a matrix form<br />
In 3D, each transformation is represented by a<br />
4x4 matrix<br />
<br />
26<br />
<br />
Các phép biến đổi hình học 3 chiều<br />
z<br />
<br />
Biểu diễn điểm trong không gian 3 chiều<br />
z [ x* y* z* h ] = [ x y z 1 ]. [ T ]<br />
z [x' y' z' 1 ]= [ x*/h y*/h z*/h 1 ][ T ]<br />
<br />
z<br />
<br />
Ma trận biến đổi<br />
<br />
⎡a b c p ⎤<br />
⎢d e f q ⎥<br />
⎥<br />
[T ] = ⎢<br />
⎢g i j r ⎥<br />
⎥<br />
⎢<br />
⎣l m n s⎦<br />
<br />
Phép tịnh tiến<br />
⎡1 0 0<br />
⎢0 1 0<br />
[T (dx, dy, dz )] = ⎢<br />
⎢0 0 1<br />
⎢<br />
⎣dx dy dz<br />
–<br />
–<br />
–<br />
<br />
z<br />
27<br />
<br />
[X'] = [ X ] . [ T(dx,dy,dz) ]<br />
[ x' y' z' 1 ] =<br />
[ x y z 1 ].[ T(dx,dy,dz) ]<br />
<br />
= [ x+dx y+dy z+dz 1 ]<br />
<br />
28<br />
<br />
Phép tỉ lệ<br />
<br />
[ x'<br />
<br />
y ' z ' 1] = [ x<br />
<br />
Rotation<br />
<br />
y<br />
<br />
⎡ s1 0<br />
⎢ 0 s2<br />
z 1] ⎢<br />
⎢0 0<br />
⎢<br />
⎣0 0<br />
<br />
0⎤<br />
0⎥⎥<br />
s3 0⎥<br />
⎥<br />
0 1⎦<br />
0<br />
<br />
z<br />
<br />
0<br />
<br />
z<br />
z<br />
<br />
= [ x .s 1 y .s 2 z .s 3 1]<br />
<br />
In 2D, the only rotation possible was about the<br />
origin.<br />
In 3D, there are 3 possible rotations, one about<br />
each of the x, y and z axes<br />
Positive rotations are anti-clockwise, negative<br />
rotations are clockwise, when looking down a<br />
positive axis towards the origin<br />
y<br />
<br />
z<br />
<br />
s1, s2, s3 là các hệ số tỉ lệ<br />
tương ứng trên các trục toạ độ<br />
30<br />
<br />
y<br />
<br />
y<br />
<br />
x<br />
z<br />
<br />
29<br />
<br />
0⎤<br />
0⎥⎥<br />
0⎥<br />
⎥<br />
1⎦<br />
<br />
x<br />
<br />
x<br />
z<br />
<br />
z<br />
<br />
5<br />
<br />