410 likes | 559 Views
Geometric Transformations. Contoh 1. Bagian-bagian (part) obyek dg koordinat lokal masing-masing: Obyek yang lebih besar dibangun dengan duplikasi dan transformasi beberapa bagian/komponen/part. etc. Contoh 2. Contoh 3.
E N D
Contoh 1 • Bagian-bagian (part) obyek dg koordinat lokal masing-masing: • Obyek yang lebih besar dibangun dengan duplikasi dan transformasi beberapa bagian/komponen/part. etc...
Contoh 3 • Pada setiap frame animasi, obyek ditransformasikan (dalam hal ini dengan rotasi). • Obyek dapat ditransformasi dg merubah ukuran (scaling), atau bentuk (deformasi) atau lokasi (translasi) • Efek2 animasi selanjutnya dapat dilakukan dg tidak merubah obyek, tetapi cara menampilkannya, zooming dan panning. 5 langkah animasi “rotasi kubus”
Transformasi Obyek 2D • Merubah setiap titik P {Px, Py}menjadi titik baru Q {Qx, Qy} dg aturan tertentu • functionT, yang memetakanl pasangan koordinat ke pasangan koordinat baru: • T ({Px,Py}) = {Qx,Qy} • Atau mudahnya T(P) = Q • mis: • P adalah titik {2, 2} • T adalah scaling dg faktor 2. • Maka T(P) = T({2, 2}) = {4,4} P = {Px, Py} ??? DO SOMETHING ??? Q = {Qx, Qy} P = {2, 2} Scale by 2 Q = {4, 4}
Transformasi • Koleksi semua titik suatu obyek, dapat ditransformasi dengan transformasi yang sama T. mis: garis atau lingkaran • Image sebuah garis, L, dg T, adalah kumpulan semua image titik-titik dari L. • Perhatian utama pada pemetaan, image-image tsb masih terhubung dg kurva dg beberapa bentuk. • Untuk beberapa pemetaan, hasil transformasi garis bisa saja bukan berupa garis lagi. • Affine Transformations, adalah transformasi yang mempertahankan garis-garis, dan umum dipakai transformasi pada computer graphics P1 {0, 2} P2 {2, 2} P0 {0, 0} P3 {2, 0} Q1 {0, 4} Q2 {4, 4} Q3 {4, 0} Q0 {0, 0}
Affine Transformation: sifat-sifatnya • Mempertahankan garis • Mempertahankan parallelism • Mempertahankan jarak proposional
Transformasi Dasar • Affine transformations, biasanya kombinasi 4 transformasi dasar: • 1: Translation • 2: Scaling • 3: Rotation • 4: Shearing
Translation • Sebuah translasi memindahkan obyek ke posisi yang berbeda. • Hal itu dilakukan dengan menambahkan offset atau vector translasi • Notasi Vector: t Ditranslasi dg t Titik original Titik hasil transformasi
Scaling • Merubah ukuran obyek dg 2 faktor skala, Sx and Sy • (Jika Sx != Sy, maka mendapatkan non-uniform scale) Sx, Sy Scale by Sx, Sy Original points Transformed points
Rotation • Menggunakan relasi trigonometri, sebuah titik dirotasi dg sudut q dari titik pusat, dg rumus: • Jadi q Rotate by q Original points Transformed points
Q P PY PX R Rotation - turunan [1] [2] [3] [4] [1] Substitusi dari [3] and [4]… Sama dengan bentuk [2]…
Shearing • Shearing pada arah x : • Kuantitas h menentukan fraction koordinat y apa yang akan ditambahkan kepada koordinat x, dan dapat positif atau negatif • Secara umum: shearing secara simultan pada arah x dan y adalah
Shearing g =0, h=0.5 Shear by {g,h} Original points Transformed points g=0.5, h=0.5 Shear by {g,h} Original points Transformed points
Matrix Representation • Semua affine transformations pada 2D secara generik dapat dideskripsikan dg persamaan sbb: • i.e.
Rangkuman Transformasi • 1: Translation • 2: Scaling • 3: Rotation • 4: Shearing T T T T
Matrix Representation • Semua affine transformations pada 2D secara generik dapat dideskripsikan dg persamaan sbb: • i.e.
Problem • Affine transformation adalah kombinasi linier yang diikuti translasi • Sayangnya, porsi translasi bukan sebuah perkalian matrix, tetapi sebuah penjumlahan tambahan atau vector – ini menyusahkan.
Homogeneous Coordinates • Triknya, kita gunakan 1 komponen tambahan kepada P dan Q, juga kolom ke 3 M sbb Rotate by q: Translation by {tx, ty} Scale by Sx, Sy Shear by g, h:
Multiple Transformations:Rotation and Scaling Not only is the object rotated, but it also moves around the origin
Pivotal points • Seringkali kita ingin merotasi atau men-scaling tidak dari titik pusat, tetapi titik lain (pivotal point) • Kebanyakan, kita ingin merotasi dari titik pusat atau titik tengah obyek • Dalam hal ini , lokasi obyek tidak berubah
{x1,y1} {0,0} dari titik {x1, y1} Untuk merotasi kotak dg sudut: • Translasi semua titik melalui {-x1,-y1} • Rotasi semua titik dari titik pusat dg sudut • Translasi balik semua titik melalui {x1,y2}
Modelling Scenes Modelling scene yg kompleks dg menyusun dari banyak obyek memerlukan 2 langkah: a) modelling obyek, b) menempatkannya di scene dg transformasi
Scene Graphs TRINITY
A Scene Graph Body Hood Trunk Front Bumper Rear Bumper Left Door Left Door Glass Right Door Right Door Glass Left Front Wheel Right Front Wheel Left Rear Wheel Right Rear Wheel
Koordinat Lokal vs Global + + Setiap obyek memiliki lokal koordinat Tidak berarti setiap obyek memiliki transformasi yang sama =
+ + + + transform transform transform Kita biasanya ingin yang lebih versatile =
Current Transformation Matrix (CTM) • Salah satu caranya adalah dg: CURRENT TRANSFORMATION MATRIX {CTM} • Semua transformasi hanya berferk pada CTM • Prosedure draw akhirnya memanggil berdasarkan CTM • CTM bisa dianggap merepresentasikan “current coordinate frame” untuk menggambar.
v {1,1} u Coordinate Transforms x v’ {1*,1*} u’ Obyek didefinisikan dg Local Coordinate System y Obyek ditransformasikan pada Global Coordinate System
x x v’ v {1,1} {1,1} y y u’ u Identity
x x v’ v {1+tx,1+ty} {1,1} y y u’ u Translation u {0, 1, 1} origin v
x x v’ v {1,1} y y u’ u Rotation
x x v v {sx*1,sy*1} {1,1} y y u u Scaling
x x v’ u {1,1} u’ y y u Composite Transformations O = v = u =
Transforming Images • Simply juggling array positions can achieve simple 90 degree rotations for (int x=0; x<width; x++) for (int y=0; y<height; y++) { set(x, y, get (y, x) ); }
Transformations on Pixels • Alternatif lain, kita dapat menerapkan transform rotasi kepada setiap pixel. • Hal itu bekerja pada beberapa kasus, tetapi menjadi masalah kalau rotasi bukan kelipatan dari 90 derajat. • Biasanya tidak ada korespondensi 1-to-1 antara pixel original dan pixel hasil transformasi. • Apalagi, rounding pada blok berdekatan akan menyebabkan error, yang akan menghasilkan gap pada image hasil transformasi.
Solusinya adalah melihatnya dari sudut pandang raszterisasi polygon hasil transformasi yang memiliki texture image original ROTATE IMAGE dg sudut q : Temukan “frame” yg akan dirotasi pada image Untuk setiap scanline (y) Gunakan interpolasi utk temukan startx dan endx Utk setiap pixel x (antara startx dan endx) Temukan {u,v} yg koresponden thd {x, y} Hal ini dilakukan dg merotasi {x,y} dg -q set ( {x,y}, get {u,v}) Hal ini memastikan bahwa setiap pixel dirotasi tanpa meninggalkan gap Transforming Images start_x end_x v N.B. In most cases there will be some distortion in the image. So rotating images by arbitrary angles can cause degradation. u
Tugas • Buatlah program processing, yang merotasi image berwarna berukuran minimal 200 x 200 pixel, maksimum 500 x 500 pixel. • Kumpulkan maksimum 2 pekan. • Tuliskan nama dan nomor mahasiswa