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


0 komentar:
Posting Komentar