Pengertian • ‘Transformasi’ geometric transformation • Transformasi = mengubah deskripsi koordinat dari objek • Transformasi dasar:
Transformasi 2D Sumber : CS3204 GRAFIKA KOMPUTER – Chapter 6 Transformasi 2D, Departement Teknik Informatika - STT Telkom
Sesi 10-11
1. Translasi 2. Rotasi 3. Penskalaan
Dosen Pembina: Sriyani Violina Danang Junaedi
IF-UTAMA
IF-UTAMA
1
Translasi Geser
2
Contoh translasi
• Mengubah posisi objek: perpindahan lurus • Menambahkan translation distance tx & ty ke tiap titik dari objek • (x,y) translasi (x’,y’) – x’=x+tx – y’=y+ty
IF-UTAMA
3
IF-UTAMA
4
1
Rotasi Putar
Rotasi terhadap titik (0,0)
• Mengubah posisi objek: perpindahan sesuai jalur sirkular • Perlu dispesifikasikan:
x = r cos φ y = r sin φ x’ = r cos (φ+θ) = r cos φ cos θ - r sin φ sin θ = x cos θ - y sin θ y’ = r sin (φ+θ) = r cos φ sin θ + r sin φ cos θ = x sin θ + y cos θ
– Sudut rotasi θ (rotation angle) – Titik tumpu rotasi (xr,yr) (pivot point)
• Konsensus tentang θ: – Positif: putaran berlawanan arah jarum jam – Negatif: putaran searah jarum jam IF-UTAMA
5
Rotasi terhadap titik (xr,yr)
6
Rigid-body transformation
x’ = xr + (x-xr) cos θ - (y-yr) sin θ y’ = yr + (x-xr) sin θ + (y-yr) cos θ
• Transformasi yang hanya mengubah posisi objek, tanpa mengubah bentuknya • Setiap titik pada objek mendapat perlakuan yang sama • Transformasi dasar:
Tahapan rotasi Translasi tx= -xr & ty= -yr Rotasi sebesar θ Translasi tx= xr & ty= yr
IF-UTAMA
IF-UTAMA
1. Translasi 2. Rotasi
7
IF-UTAMA
8
2
Rigid-body transformation: teknik
Rigid-body transformation: translasi
• Transformasikan hanya titik-titik yang terlibat dalam deskripsi objek • Titik-titik lain digambar ulang dgn algoritma pembangkit primitif grafika
IF-UTAMA
9
IF-UTAMA
10
Penskalaan Perbesar/Perkecil
Rigid-body transformation: rotasi
• Mengubah ukuran objek (memperbesar / memperkecil) – Mengubah jarak setiap titik pada objek terhadap titik acuan
• Perlu dispesifikasikan: – Faktor penskalaan: sx & sy real: (0..N] – Titik acuan (xf,yf)
• Jenis penskalaan: – Uniform: sx = sy – Differential: sx ≠ sy
IF-UTAMA
11
IF-UTAMA
12
3
Penskalaan terhadap titik (0,0)
Penskalaan terhadap titik (xf,yf) x’= xf + (x-xf).sx y’= yf + (y-yf).sy
x’=x.sx y’=y.sy • Bentuk objek berubah • Posisi objek berubah
1. Translasi tx= -xf & ty= -yf 2. Penskalaan dgn Sx & Sy
• 0<S<1: lebih dekat ke (0,0) • S=1: ukuran tetap • 1<S: lebih jauh dari (0,0)
3. Translasi tx= xf & ty= yf
x’= x. sx + xf.(1-sx) y’= y. sy + yf.(1-sy) Dimana xf.(1-sx) & yf.(1-sy) konstan untuk semua (x,y)
IF-UTAMA
13
Penskalaan uniform untuk poligon, lingkaran dan elips
IF-UTAMA
14
RefleksiPencerminan
• Poligon:
• Menyalin posisi objek tergantung sumbu yang dijadikan acuan refleksi • Acuan refleksi : (x,y) refleksi (x’,y’)
– Transformasikan titik-titik sudut – Gambar ulang tiap garis
• Lingkaran:
– Garis sejajar sumbu X :
– Transformasikan titik pusat – Sesuaikan ukuran jari-jari – Gambar ulang tiap titik
• x’=-x • y’=y
– Garis sejajar sumbu Y :
• Elips:
• x’=x • y’=-y
– Transformasikan sumbu mayor dan minor – Gambar ulang tiap titik
– Bagaimana dengan garis yang tidak sejajar sumbu X maupun sumbu Y ??? IF-UTAMA
15
IF-UTAMA
16
4
Representasi dalam matriks
Persamaan matriks translasi
• Memudahkan perhitungan transformasi • Setiap titik direpresentasikan sebagai vektor kolom P=(x,y) P= x
• Translation distance tx & ty T= • P’ = P + T
x' x tx y' = y + t y
y
• Koefisien transformasi direpresentasikan sebagai vektor atau matriks
IF-UTAMA
− 4 2 − 5 4 = 1 + 3
17
IF-UTAMA
Persamaan matriks rotasi: pivot = (0,0)
Persamaan matriks rotasi: pivot = (xr,yr)
x’ = x cos θ - y sin θ y’ = x sin θ + y cos θ
x’ = xr + (x-xr) cos θ - (y-yr) sin θ y’ = yr + (x-xr) sin θ + (y-yr) cos θ x ' x r cos θ y ' = y + sin θ r
x' cosθ − sinθ x y' = sinθ cosθ • y 7 cos(−900 ) − sin(−900 ) 2 • − 2 = 0 0 sin(−90 ) cos(−90 ) 7 IF-UTAMA
t x t y
0 1 cos 90 0 8 = 2 + 0 sin 90 19
18
− sin θ x x r • − cos θ y y r
− sin 90 0 7 1 • − cos 90 0 3 2 IF-UTAMA
20
5
Studi Kasus
Persamaan matriks penskalaan x’=x.sx y’=y.sy
1. Hitunglah dengan menggunakan matriks, translasi segitiga dengan koordinat berikut A(5,5), B(15,5) dan (5,15) dengan vektor translasi (10,20) 2. Buatlah Algoritma untuk merefleksi sebuah hexagon terhadap titik pusat (0,0), seperti terlihat pada ilustrasi berikut (Diasumsikan sudah ada fungsi menggambar garis yaitu drawline(x1, x2, y1,y2))
x' Sx 0 x y' = 0 S • y y
x
x’= xf + (x-xf).sx y’= yf + (y-yf).sy
x ' x f S x y ' = y + 0 f IF-UTAMA
3. Buatlah algoritma untuk merotasi sebuah garis dengan sudut 300 secara kontinu berlawanan arah dengan jarum jam sampai garis tersebut melewati titik semula. 4. Buatlah algoritma untuk merotasi sebuah garis dengan sudut 900 bolak-balik sampai 10 kali. 5. Buatlah algoritma untuk memindahkan sebuah lingkaran
0 x x f − • S y y y f 21
IF-UTAMA
22
6