Rabu, 22 Mei 2013

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

Tidak ada komentar:

Posting Komentar