Monday, 9 March 2015

Komputer Grafis 5

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).

Berikut ini adalah rumusan untuk mencari hasil rotasi pada masing-masing titik koordinat (X dan Y).



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