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