#include #include #include #define PI 3.14 void drawFilledCircle(GLfloat x, GLfloat y, GLfloat radius) { int i; int triangleAmount = 50; GLfloat twicePi = 2.0f * PI; glBegin(GL_TRIANGLE_FAN); glVertex2f(x, y); for(i = 0; i <= triangleAmount; i++) { glVertex2f(x + (radius * cos(i * twicePi / triangleAmount)), y + (radius * sin(i * twicePi/ triangleAmount))); } glEnd(); } void display(void) { /* clear all pixels */ glClear (GL_COLOR_BUFFER_BIT); /* draw white polygon (rectangle) with corners at * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */ glColor3f (0.2, 0.3, 0.4); // car base 1 glBegin(GL_POLYGON); glVertex3f (-25.0+25, -5.0, 0.0); // bottom left, + -height 15 glVertex3f (25.0+25, -5.0, 0.0); // bottom right, glVertex3f (25.0+25, 15.0, 0.0); // top right, glVertex3f (-25.0+25, 15.0, 0.0); // top left, glEnd(); glColor3f (0.2, 0.0, 0.0); // car wheel area 1 glBegin(GL_POLYGON); glVertex3f (-15.0+25, -5.0, 0.0); // bottom left, + -height 15 glVertex3f (15.0+25, -5.0, 0.0); // bottom right, glVertex3f (10.0+25, 15.0-10, 0.0); // top right, glVertex3f (-10.0+25, 15.0-10, 0.0); // top left, glEnd(); // car wheel 1 glColor3f(0.2, 0.3, 0.3); drawFilledCircle(0.0+25, 0.0-5, 8); /* glColor3f (0.2, 0.3, 0.3); // car wheel 1 glBegin(GL_POLYGON); glVertex3f (-0.0+25, -5.0, 0.0); // bottom left, + -height 15 glVertex3f (0.0+25, -5.0, 0.0); // bottom right, glVertex3f (3.0+25, 15.0-10, 0.0); // top right, glVertex3f (-3.0+25, 15.0-10, 0.0); // top left, glEnd();*/ glColor3f (0.2, 0.3, 0.4); // car base 2 glBegin(GL_POLYGON); glVertex3f (-25.0-25, -5.0, 0.0); // height 15 glVertex3f (25.0-25, -5.0, 0.0); glVertex3f (25.0-25, 15.0, 0.0); glVertex3f (-25.0-25, 15.0, 0.0); glEnd(); glColor3f (0.2, 0.0, 0.0); // // car wheel area 2 glBegin(GL_POLYGON); glVertex3f (-15.0-25, -5.0, 0.0); // bottom left, + -height 15 glVertex3f (15.0-25, -5.0, 0.0);// bottom right, glVertex3f (10.0-25, 15.0-10, 0.0);// top right, glVertex3f (-10.0-25, 15.0-10, 0.0); // top left, glEnd(); // car wheel 2 glColor3f(0.2, 0.3, 0.3); drawFilledCircle(0.0-25, 0.0-5, 8); glColor3f (0.2, 0.3, 0.4); // car base level 1 glBegin(GL_POLYGON); glVertex3f (-5.0-25, -15.0+30, 0.0); // bottom left, + -height 15 glVertex3f (25.0-25, -15.0+30, 0.0); // bottom right, glVertex3f (25.0-25, 5.0+30, 0.0); // top right, glVertex3f (10.0-25, 5.0+30, 0.0); // top left, glEnd(); glColor3f (0.5, 0.6, 0.6); // car glass level 1 glBegin(GL_POLYGON); glVertex3f (1.5-25, -13.0+30, 0.0); // bottom left, + -height 15 glVertex3f (23.0-25, -13.0+30, 0.0); // bottom right, glVertex3f (23.0-25, 1.0+30, 0.0); // top right, glVertex3f (11.0-25, 1.0+30, 0.0); // top left, glEnd(); glColor3f (0.2, 0.3, 0.4); // car base level 2 glBegin(GL_POLYGON); glVertex3f (-25.0+25, -15.0+30, 0.0); // bottom left, + -height 15 glVertex3f (25.0+25, -15.0+30, 0.0); // bottom right, glVertex3f (15.0+25, 5.0+30, 0.0); // top right, glVertex3f (-25.0+25, 5.0+30, 0.0); // top left, glEnd(); glColor3f (0.5, 0.6, 0.6); // car glass level 1 glBegin(GL_POLYGON); glVertex3f (-24.0+25, -13.0+30, 0.0); // bottom left, + -height 15 glVertex3f (20.0+25, -13.0+30, 0.0); // bottom right, glVertex3f (13.0+25, 1.0+30, 0.0); // top right, glVertex3f (-24.0+25, 1.0+30, 0.0); // top left, glEnd(); /* /* glColor3f (0.6, 0.6, 0.6); // home_roof glBegin(GL_TRIANGLES); glVertex3f (-35.0, 25.0, 0.0); //lower left corner of the triangle glVertex3f (35.0, 25.0, 0.0); // lower right corner of the triangle glVertex3f (0.0, 50.0, 0.0); // top of the triangle glEnd(); glColor3f (0.5, 0.6, 0.6); glBegin(GL_POLYGON); glVertex3f (-20.0, -25.0, 0.0); //lower left corner of the door glVertex3f (-5.0, -25.0, 0.0); //lower right corner of the door glVertex3f (-5.0, 5.0, 0.0); //upper right corner glVertex3f (-20.0, 5.0, 0.0); //upper left corner glEnd(); glColor3f (0.5, 0.6, 0.6); glBegin(GL_POLYGON); glVertex3f (20.0, -10.0, 0.0); //lower left corner of the door glVertex3f (2.0, -10.0, 0.0); //lower right corner of the door glVertex3f (2.0, 5.0, 0.0); //upper right corner glVertex3f (20.0, 5.0, 0.0); //upper left corner glEnd(); */ /* don't wait! * start processing buffered OpenGL routines */ glFlush (); } void init (void) { /* select clearing (background) color */ glClearColor (1.0, 1.0, 1.0, 0.0); /* initialize viewing values */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-100, 100, -100, 100, -1.0, 1.0); } /* * Declare initial window size, position, and display mode * (single buffer and RGBA). Open window with "hello" * in its title bar. Call initialization routines. * Register callback function to display graphics. * Enter main loop and process events. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (700, 700); glutInitWindowPosition (100, 100); glutCreateWindow ("ID: 171410013; Md. Abu Bakkar Siddique"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; /* ISO C requires main to return int. */ }