Transformasi Geometri (Rotasi)
Hai semua... Kembali
pada komputer grafis untuk pertemuan 5. Pada
pertemuan ini, masih dibahas mengenai transformasi geometri. Jika pada pertemuan
4 yang lalu telah dibahas transformasi geometri translasi dan scalling, maka
dalam pertemuan 5 ini akan dibahas mengenai transformasi geometri rotasi.
Mendengar kata “rotasi”, yang ada dalam pemikiran pada umumnya adalah berputar.
Begitu pula pada komputer grafis. Rotasi di sini artinya objek yang telah kita
gambarkan ketika dirotasi akan berputar. Tetapi berputar di sini maksudnya
adalah seperti bumi mengelilingi matahari. Jadi, sebuah objek yang dilakukan
transformasi rotasi, diproses terhadap titik (0,0) jadi dapat kita bayangkan
sebelum kita membuat praktikumnya, bahwa objek nantinya akan berputar dengan
titik pusat (0,0).
Nilai X dan Y yang dikalikan dengan Sin dan Cos
pada rumus di atas bukanlah X dan Y yang setelah dirotasi atau tidak mengambil
nilai dari X dan Y sebelumnya. Tetapi diambil dari X dan Y pada titik awal yang
sebelum dirotasi. Untuk lebih jelasnya, akan kita lihat contoh pada grafik di
bawah ini:
Dari grafik di atas, dapat kita lihat bahwa yang
berwarna biru adalah titik awal P(2,2), yang akan dirotasikan dengan sudut
sebesar 30 derajat. Rotasi pasti akan berlawanan dengan jarum jam. Bisa
didapatkan titik P’(1,3) yang berwarna merah adalah dengan perhitungan sebagai
berikut:
Dari
hasil perhitungan di atas, didapatlah titik P’(1,3) .
Penggunaannya
dalam delphi adalah sebagai berikut ini:
Namun, jika dilihat cara penulisan di atas masih
belum tepat, karena jika dalam pemrograman, untuk menghitung Y[i], digunakan
X[i], maka X[i] yang digunakan adalah X[i] yang di atas Y[i], yaitu X[i] yag
sudah dikalikan dengan Cos(sudut_degree), sedangkan tadi kita sudah membahasnya
bahwa X dan Y yang digunakan adalah X dan Y dari titik semula. Kita dapat
mengubah sedikit dari kode program di atas. Hanya menambahkan 1 baris saja pada
kode program tersebut agar X[i] yang digunakan pada Y[i] bukanlah X[i] yang bar
dihitung. Berikut adalah yang harus ditambahkan untuk membedakan X[i]:
Kita
lihat dari kode program di atas, yang ditambahkan hanya sebuah variabel
penampung yang menampung nilai dari X[i]. variabel simpan inilah yang menampung
nilai X[i] awal. Untuk menghitung Y[i], digunakan variabel simpan agar yang
dikalikan adalah nilai X[i] semula, buka nilai X[i] yang telah dihitung
rotasinya. Dan satu lagi yang perlu diperhatikan adalah bahwa pada delphi,
sudut yang diambil adalah masih dalam bentuk radian, sedangkan secara umum
orang lebih familiar dengan derajat atau degree. Untuk itu, harus dihitung atau
diubah dulu ke dalam satuan degree dengan mengalikan sudut radian dengan pi dan
membaginya dengan 180. Dalam delphi sudah disediakan konstanta untuk nilai pi,
jadi kita hanya perlu memanggil variable pi tanpa hars mendeklarasikan
konstanta pi tersebut. Kode program di atas sudah ditulis juga cara mengubah
radian ke degree. Untuk variabel sudut adalah yang masih dalam bentuk radian.
Variabel sudut_degree adalah variabel untuk menampung hasil konversi dari
radian ke degree, yaitu dengn cara: sudut*pi/180.
Saya rasa cukup untuk penjelasan yang menjadi
dasar dari transformasi geometri rotasi pada pertemuan ini. Untuk lebih
lengkapnya kita akan langsung membahas cara membuat objek bintang yang kita
buat pada pertemuan sebelumnya bisa dirotasikan. Untuk awalnya sama dengan
pembahasan pertemuan sebelumnya, yang ditambahkan hanya pembuatan kode program
untuk rotasi. Tampilan user interface untuk pembahasan kali ini adalah sebagai
berikut:
Tampilan
di atas tidak jauh berbeda dengan tampilan yang dibuat pada pertemuan 4 yang
lalu. Hanya ditambahkan 1 buah label Sudut, 1 buah edit box sudut, dan 1 buah
button untuk rotasi.
Untuk melihat
pembahasan mengenai pembuatan tampilan di atas dapat dilihat pada pertemuan 4
yang lalu. Pada pertemuan ini hanya akan dibahas mengenai pembuatan kode
program untuk button rotasi, di mana button rotasi inilah yang digunakan untuk
memutar objek berlawanan jarum jam.penulisan kode program untuk button rotasi adalah
seperti berikut ini:
Dari
gambar kode program di atas, dapat kita lihat perbedaan kedua for yang
dituliskan.
Tampilan saat program
dijalankan adalah sebagai berikut:
Dan
tampilannya saat dirotasi dengan sudut sebesar 10° adalah sebagai berikut:
Saat
button rotasi diklik 1 kali lagi:
Untuk perubahan selanjutnya dapat dipraktekan sendiri sampai posisi bintang kembali ke posisi semula.
Nah, sekian dulu ya untuk pembahasan komputer grafis kali ini mengenai rotasi. Nantikan lagi pembahasan-pembahasan selanjutnya ya..
Semoga bermanfaat.. ^.^
Thx untuk yang udah baca blog ini..
No comments:
Post a Comment