intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng môn Đồ họa và hiện thực ảo - Bài 4: Các phép biến đổi đồ hoạ - Transformations

Chia sẻ: Ti Vu | Ngày: | Loại File: PDF | Số trang:16

45
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài 4 - Các phép biến đổi đồ hoạ Transformations. Bài giảng trình bày một số nội dung như: Phép biến đổi transformations, phép biến đổi affine affine transformations, modeling transformations, biểu diễn ma trận, matrix representation, các phép biến đổi hình học hai chiều,... Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn Đồ họa và hiện thực ảo - Bài 4: Các phép biến đổi đồ hoạ - Transformations

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 />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2