Transformasi 3D Grafika Komputer Defiana Arnaldy, M.Si 0818 0296 4763 deff_arnaldy@yahoo.com
Pengenalan Transformasi Dalam ruang dua dimensi, suatu titik (objek) akan berada pada suatu posisi yang dinyatakan oleh dua sumbu, umumnya sumbu-x dan sumbu-y. Sedangkan dalam ruang tiga dimensi, terdapat sumbu ketiga yang biasa disebut sumbu-z. Terdapat dua kaidah dalam merepresentasikan suatu titik : Kaidah Tangan Kanan : Jika sumbu-x positif mengarah ke kanan dan sumbu-y positif mengarah ke atas, maka sumbu-z positif mengarah mendekati kita (pengamat/kamera)
b) Kaidah Tangan Kiri : Jika sumbu-x positif mengarah ke kanan dan sumbu-y positif mengarah ke atas, maka sumbu-z positif mengarah menjauhi kita (pengamat/kamera)
Transformasi di dalam ruang tiga dimensi pada dasarnya sama seperti di dalam ruang dua dimensi, kecuali : Rotasi, kita perlu membedakan rotasi terhadap masing-masing sumbu. Refleksi, dilakukan pada bidang-bidang xy, yz, atau xz. Shear, dilakukan terhadap dua sumbu, misalnya x & z
Matrix yang mentranslasikan titik sejauh (tx, ty, tz) a. Translasi Matrix yang mentranslasikan titik sejauh (tx, ty, tz) glPushMatrix(); glTranslatef( 1.9, -2.3, 0.0 ); glutSolidCube(1.5); glPopMatrix(); b. Skala Matrix skala dengan faktor-faktor skala (sx, sy, sz) adalah : glPushMatrix(); glTranslatef( 1.9, -2.3, 0.0 ); glScalef(2.0, 1.0, 2.5); glutSolidCube(1.5); glPopMatrix();
c. Shear Matrix transformasi shear pada sumbu-sumbu x dan y adalah Shxy(hx, hy) : Catatan : Fungsi shear dalam pemrograman OpenGL yaitu dengan menambahkan nilai-nilai hasil shear pada titik-titik tertentu.
d. Refleksi Matrix refleksi terhadap sumbu-z, sumbu-x, dan sumbu-y adalah sebagai berikut : Tidak berbeda dengan fungsi shear, fungsi refleksi juga tidak terdapat pada pemrograman OpenGL. Karena hasil refleksi merupakan objek itu sendiri dengan koordinat yang berlawanan, maka diperlukan pembuatan algoritma tersendiri dalam merepresentasikannya.
e. Rotasi Matrix rotasi terhadap sumbu-z, sumbu-y dan sumbu-x adalah sebagai berikut : glPushMatrix(); glTranslatef( 1.9, -2.3, 0.0 ); glScalef(2.0, 1.0, 2.5); glRotatef(15.0, 1.0, 0.0, 0.0); // rotasi sumbu-z glRotatef(15.0, 0.0, 1.0, 0.0); // rotasi sumbu-x glRotatef(15.0, 0.0, 0.0, 1.0); // rotasi sumbu-y glutSolidCube(1.5); glPopMatrix();
Selesai...