Tadi sudah saya posting bagaimana cara membuat objekmemantul dan untuk postingan ke dua hari ini akan membahas tentang fungsi-fungsi dari transformasi yaitu rotasi, sekala dan translasi, sebagai contohnya saya menggunakan angka yang sama seperti pada postingan sebelumnya yaitu “013”, ok untuk lebih jelasnya simaklah hasil running programnya dibawah ini :
rotasi
sekala
traslasi
bagaimana mulai tertarik
dibawah adalah kode dengan kunci tombol dimana saat di tekan tombol tertentu objek akan melakukan aksi yang berbeda beda :
untuk tobolnya saya disini menggunakan sebagai berikut :
rotasi : q dan e
skala : 1 dan 2
translasi : w,s,a dan d
langsung saja ini adalah kode dan penjelasannya :
#include <windows.h> #include <gl\gl.h> #include <gl\glut.h> void npm(void){ //lubang nol glBegin(GL_LINE_LOOP); glColor3f(1,1,0); glVertex2f(-0.55, 0.3); glVertex2f(-0.55, -0.2); glVertex2f(-0.65, -0.2); glVertex2f(-0.65, 0.3); glEnd(); //NOL glBegin(GL_LINE_LOOP); glColor3f(1,1,0); glVertex2f(-0.5, 0.5); glVertex2f(-0.4, 0.4); glVertex2f(-0.4, -0.3); glVertex2f(-0.5, -0.4); glVertex2f(-0.7, -0.4); glVertex2f(-0.8, -0.3); glVertex2f(-0.8, 0.4); glVertex2f(-0.7, 0.5); glEnd(); //satu glBegin(GL_LINE_LOOP); glColor3f(0,1,0); glVertex2f(0.2, 0.5); glVertex2f(0.2, -0.3); glVertex2f(0.3, -0.3); glVertex2f(0.3, -0.4); glVertex2f(0.0, -0.4); glVertex2f(0.0, -0.3); glVertex2f(0.1, -0.3); glVertex2f(0.1, 0.4); glVertex2f(0.0, 0.4); glVertex2f(0.1, 0.5); glEnd(); //tiga glBegin(GL_LINE_LOOP); glColor3f(0,0,1); glVertex2f(0.4, 0.5); glVertex2f(0.8, 0.5); glVertex2f(0.8, -0.4); glVertex2f(0.4, -0.4); glVertex2f(0.4, -0.3); glVertex2f(0.7, -0.3); glVertex2f(0.7, 0.0); glVertex2f(0.4, 0.0); glVertex2f(0.4, 0.1); glVertex2f(0.7, 0.1); glVertex2f(0.7, 0.4); glVertex2f(0.4, 0.4); glEnd(); glutSwapBuffers(); } void tombol(unsigned char kunci, int x, int y) { //huruf-huruf di keyboard yang mengendalikan grafik switch (kunci) { case 'q': glRotatef(2.0, 2.0, 0.0, 0.0); // objek akan merotasi kedepan break; case 'e': glRotatef(-2.0, 2.0, 0.0, 0.0); //objek akan merotasi kebelakang break; case '1': glScaled(0.2, 0.2, 0.0); //objek akan mengecil case '2': glScaled(2.0, 2.0, 0.0); //objek akan membesar break; case 'a': glTranslatef( -0.2f, 0.0f, 0.0f ); //objek akan bergeser ke kiri break; case 'd': glTranslatef( 0.2f, 0.0f, 0.0f ); //objek akan bergeser ke kanan break; case 'w': glTranslatef( 0.0f, 0.1f, 0.0f ); //objek akan bergeser ke atas break; case 's': glTranslatef( 0.0f, -0.1f, 0.0f ); ////objek akan bergeser ke bawah } glClear(GL_COLOR_BUFFER_BIT); npm(); /* repaint the window */ } int main (int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(150, 100); glutCreateWindow("npm"); glutDisplayFunc(npm); glutKeyboardFunc(tombol); glutMainLoop(); return 0; } |
ok sekian dulu untuk postingan kali ini,
semoga bermanfaat.....