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

angka bergerak memantul (transformasi) dengan openGL

Sudah lama gak ngepost nih, postingan kali ini saya akan membahas tentang angka yang bergerak memantul- mantul(bertransformasi) sebagai contoh saya akan mengunakan angka “013”, untuk lebih jelasnya lihat hasil runningan programnya di bawah ini :


Bagaimana tertarik ini Source Code :

#include <glut.h>
#include <math.h>

int gerak = 0;
bool atas = true;

void init(){
glClearColor(0.2, 0.2, 0.2, 0.0);//warna background
glMatrixMode(GL_PROJECTION);//Fungsi mode proyeksi
glLoadIdentity();//mendifinisikan objek
glOrtho(-50.0, 50.0, -50.0, 50.0, -50.0, 50.0);//Fungsi untuk menampilkan koordinat view (sumbu X & Y)
}

void nrp(){
glClear(GL_COLOR_BUFFER_BIT);//Membersihkan semua pixel di buffer(clear all pixels)
glPushMatrix();//Fungsi untuk menyimpan nilai matrix
glTranslatef( gerak, 0, 0 ); //translasi ke kanan

//NOL
       glBegin(GL_LINE_LOOP);
              glColor3f(0,0,1); //warna biru
              glVertex2f(-5, 5);  
              glVertex2f(-4, 4);  
              glVertex2f(-4, -3);
              glVertex2f(-5, -4);
              glVertex2f(-7, -4);
              glVertex2f(-8, -3);
              glVertex2f(-8, 4);
              glVertex2f(-7, 5);
       glEnd();

//lubang nol
       glBegin(GL_LINE_LOOP);
              glColor3f(0,0,1); //warna biru
              glVertex2f(-6, 4);
              glVertex2f(-5, 3);
              glVertex2f(-5, -2);
              glVertex2f(-6, -3);
              glVertex2f(-7, -2);
              glVertex2f(-7, 3);
       glEnd();

glPopMatrix();//kembali ke koordinat sebelum dipush

glPushMatrix();//Fungsi untuk menyimpan nilai matrix
glTranslatef( 0, -gerak, 0 ); //translasi ke bawah
      
//satu
       glBegin(GL_LINE_LOOP);
              glColor3f(1,0.5,0); //warna orange
              glVertex2f(2, 5);   
              glVertex2f(2, -3);  
              glVertex2f(3, -3);
              glVertex2f(3, -4);
              glVertex2f(0, -4);
              glVertex2f(0, -3);
              glVertex2f(1, -3);
              glVertex2f(1, 4);
              glVertex2f(0, 4);
              glVertex2f(1, 5);
       glEnd();
glPopMatrix();//kembali ke koordinat sebelum dipush

glPushMatrix();//Fungsi untuk menyimpan nilai matrix
glTranslatef( -gerak, 0, 0 ); //translasi ke kiri

//tiga
       glBegin(GL_LINE_LOOP);
              glColor3f(0,1,0); //warna hijau
              glVertex2f(4, 5);   
              glVertex2f(8, 5);   
              glVertex2f(8, -4);
              glVertex2f(4, -4);
              glVertex2f(4, -3);
              glVertex2f(7, -3);
              glVertex2f(7, 0);
              glVertex2f(4, 0);
              glVertex2f(4, 1);
              glVertex2f(7, 1);
              glVertex2f(7, 4);
              glVertex2f(4, 4);         
       glEnd();
       glPopMatrix();//kembali ke koordinat sebelum dipush

glutSwapBuffers();//Fungsi perpindahan
}

void timer(int t){
    if (atas){
        gerak += 1;
    } else {
        gerak -= 1;
    }
    if (gerak > 50) {
        atas = false;
    } else if(gerak < -50){
        atas = true;
    }
 glutPostRedisplay();
 glutTimerFunc(15,timer,0);
}

void tampil(void){
    glClear(GL_COLOR_BUFFER_BIT);
    nrp();
    glFlush();
}

int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(600, 600); // ukuran window
glutInitWindowPosition(150, 100); // posisi window
glutCreateWindow("NRP");//ganti "NRP" dengan nama yang anda inginkan
init();
glutDisplayFunc(tampil); //memangil kelas tampil
glutTimerFunc(1,timer,0);
glutMainLoop();
return 0;
}

ok demikian postingan kali ini terima kasih telah mampir dan semoga bermanfaat.....