Rabu, 22 Mei 2013

MEMBUAT UNTUK TRASFORMASI OBJEK DENGAN OPENGL

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

Tidak ada komentar:

Posting Komentar