Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include <glut.

h>
//mengaktifkan fungsi perhitungan matematika
#include <math.h>

/*
GIGIH SETYAJI
UMRI Indonesia
Grafica Computer

support by dhamalo WEBLOG


*/

//deklarasi pembuatan lingkaran


const double PI = 3.142857143;
int i,radius,jumlah_titik,x_tengah,y_tengah;

//deklarasi gerakan otomatis


int gerak = 0;
bool atas = true;

void tampil()
{
//perintah menghapus layar
glClear(GL_COLOR_BUFFER_BIT);

//perintah animasi
glPushMatrix();
glTranslatef( gerak, 0,0);

//cup tengah
glColor3f(0.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(1.0,1.0);
glVertex2f(1.5,0.0);
glVertex2f(1.5,-1.0);
glVertex2f(-1.0,-1.0);
glVertex2f(-1.0,0.0);
glVertex2f(-0.7,1.0);
glEnd();
glFlush();

//cup depan
glColor3f(0.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(1.5,0.0);
glVertex2f(2.5,0.0);
glVertex2f(2.5,-1.0);
glVertex2f(1.5,-1.0);
glEnd();
glFlush();

//cup belakang
glColor3f(0.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(-1.0,-1.0);
glVertex2f(-1.5,-1.0);
glVertex2f(-1.5,0.0);
glVertex2f(-1.0,0.0);
glEnd();
glFlush();

//kaca samping depan


glColor3f(5.0,1.0,5.0);
glBegin(GL_POLYGON);
glVertex2f(0.25,0.85);
glVertex2f(0.85,0.85);
glVertex2f(1.25,0.0);
glVertex2f(0.25,0.0);
glEnd();
glFlush();

//kaca samping belakang


glColor3f(5.0,1.0,5.0);
glBegin(GL_POLYGON);
glVertex2f(0.0,0.85);
glVertex2f(-0.55,0.85);
glVertex2f(-0.80,0.0);
glVertex2f(0.0,0.0);
glEnd();
glFlush();

//ban depan
glColor3f(0.0,0.0,0.0);
glBegin(GL_POLYGON);

radius = 40;
jumlah_titik = 60;
x_tengah = 190;
y_tengah = -90;

for (i=0;i<=360;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glFlush();

//ban belakang
glColor3f(0.0,0.0,0.0);
glBegin(GL_POLYGON);

radius = 40;
jumlah_titik = 60;
x_tengah = -90;
y_tengah = -90;

for (i=0;i<=360;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glFlush();

glPopMatrix();
}
void timer(int t)
{
if (atas){
gerak += 1;
} else {
gerak -= 1;
}
if (gerak > 20) {
atas = false;
} else if(gerak < -20){
atas = true;
}
glutPostRedisplay();

/*
kecepatan mobil berbanding terbalik
semakin besar nilai glutTimerFunc maka akan semakin pelan gerakannya
ubahlah angka 50 agar mengerti
*/
glutTimerFunc(50,timer,0);
}
int main(int argc, char** argv)
{
glutCreateWindow("Mobil Bergerk Auto");
//background warna putih
glClearColor(1.0,9.0,1.0,0.0);
glutDisplayFunc(tampil);
gluOrtho2D(-20., 20., -20.0, 20.0);
glutTimerFunc(1,timer,0);
glutMainLoop();
}

You might also like