Source Code
Source Code
h>
#include<GL/glut.h>
#include<GL/glu.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
#include<math.h>
#define TIMER 33
float quad;
void *fonts[] =
GLUT_STROKE_ROMAN, GLUT_STROKE_MONO_ROMAN};
int value=15,val=5,valu,v=1;
void polygon();
va_list args;
if(theObject>=0)
va_start(args, format);
vsprintf(buffer, format, args);
va_end(args);
glPushMatrix();
glTranslatef(x, y, 0);
glutStrokeCharacter(font, *p);
glPopMatrix();
void text()
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glColor3f(1.0,1.0,1.0);
output(1800,2800, "%s",objectNames[theObject]);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopAttrib();
}
glPushMatrix();
glEnable (GL_CULL_FACE);
glCullFace (GL_BACK);
glFrontFace(order);
text();
glColor3f(1.0,0.9,1.0);
glBegin(GL_QUADS);
glEnd();
glDisable (GL_CULL_FACE);
glPushMatrix ();
glPopMatrix ();
polygon();
glPopMatrix();
void minion()
theObject=0;
glRotatef(xrot,0.0,1.0,0.0);
glPushMatrix();
//BODY OF MINION//
glPushMatrix();
glTranslatef(0,.2,0);
glScalef(0.5,0.5,0.5);
glColor3f(1.0,1.0,0.0);
glRotatef(90.0,1,0,0);
gluCylinder(gluNewQuadric(),.6,.6,1.4,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.18,0);
glScalef(.9 ,.9,.9 );
glColor3f(1.0,1.0,0.0);
glutSolidSphere(0.333,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(0,-0.45,0);
glScalef(.9 ,.7,.9 );
glColor3f(0.0,0.0,1.0);
glutSolidSphere(0.333,25,16);
glPopMatrix();
glPushMatrix();
glRotatef(-45,0,0,1);
glutSolidSphere(0.05,25,16);
glPopMatrix();
glPushMatrix();
glScalef(.15,.15,.19);
glColor3f(1.0,0.0,0.0);
glRotatef(0.0,1,0,0);
glutSolidTorus(.09,0.7,20,20);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.1,-0.007); //belt
glScalef(.84,1.0,.84);
glColor3f(0.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.02,0.35,20,20);
glPopMatrix();
glPushMatrix();
glScalef(0.5,0.2,0.5);
glColor3f(0.0,0.0,1.0);
glRotatef(90.0,1,0,0);
gluCylinder(gluNewQuadric(),.62,.62,1.4,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(-.5,-0.4,.1);
glRotatef(90,0,1,0);
glRotatef(-50,1,0,0);
gluCylinder(gluNewQuadric(),.02,.05,.48,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(0.5,-0.4,.1); //Specify the position for the right arm
glRotatef(90,0,1,0);
glRotatef(-130,1,0,0);
gluCylinder(gluNewQuadric(),.02,.05,.48,30,6);
glPopMatrix();
glPushMatrix();
glScalef(.19,.14,.14);
gluSphere(gluNewQuadric(),.3,100,100);
glPopMatrix();
glPushMatrix();
glScalef(.19,.14,.14);
gluSphere(gluNewQuadric(),.3,100,100);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glColor3f(0.0,0.0,1.0);
glScalef(.9,.3,.9);
gluCylinder(gluNewQuadric(),.03,.05,.4,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(-.05,-.9,0); //Specify the position for the right leg
glRotatef(-90.0,1,0,0);
glColor3f(0.0,0.0,1.0);
glScalef(.9,.3,.9);
gluCylinder(gluNewQuadric(),.03,.05,.4,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(.06,-.89,0); //shoes
glScalef(0.9,.7,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.06,100,200);
glPopMatrix();
glPushMatrix();
glTranslatef(-.06,-.89,0);
glScalef(0.9,.7,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.06,100,200);
glPopMatrix();
glPopMatrix();
void winku()
theObject=1;
glRotatef(xrot,0.0,1.0,0.0);
glPushMatrix();
glPushMatrix();
glTranslatef(0,0.3,0); //head
glScalef(.9 ,.9,.9 );
glColor3f(1.0,0.8,0.6);
glutSolidSphere(0.38,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.002,0.41,0); //hat
glScalef(.98,.98,.98);
glColor3f(0.0,0.0,1.0);
glutSolidSphere(0.33,25,16);
glPopMatrix();
glPushMatrix();
glScalef(.84,.84,.84);
glColor3f(1.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.03,0.4,20,20);
glPopMatrix();
glPushMatrix();
glTranslatef(0,.08,0);
glScalef(0.75,.7,0.75);
glColor3f(0.5,0.5,0.0);
glRotatef(90.0,1,0,0);
gluCylinder( gluNewQuadric(),.3,.45,0.5,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(0,-0.11,.29);
glRotatef(-17.0,1,0,0);
glScalef(.05,.33,.03);
glColor3f(0.0,0.0,0.0);
glutSolidCube(1);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.05,0.02);
glScalef(.84,.84,.84);
glColor3f(1.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.04,0.32,20,20);
glPopMatrix();
glPushMatrix();
glRotatef(-45,0,0,1);
glPopMatrix();
glPushMatrix();
glRotatef(45,0,0,1);
glScalef(.9,.9,.9);
glColor3f(0.0,0.0,0.0);
glutSolidSphere(0.05,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(0.01,.22,.33);
glScalef(.6,.4,.1);
glColor3f(1.0,0.0,0.0);
glutSolidSphere(0.1,25,16);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glScalef(.8,.8,.8);
gluCylinder(gluNewQuadric(),.19,.19,.5,30,6);
glPopMatrix();
glPushMatrix();
glScalef(.8,.8,.8);
gluCylinder(gluNewQuadric(),.19,.19,.5,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(.13,-.49,0); //shoes
glScalef(1.6,.4,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.11,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(-.13,-.49,0);
glScalef(1.6,.4,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.11,100,100);
glPopMatrix();
glPopMatrix();
void snowman()
theObject = 2;
glTranslatef(0.0,0.0,0.6);
glPushMatrix();
glRotatef(xrot,0.0,1.0,0.0);
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.0,0.0);
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.55,0.0);
glutSolidSphere(0.2,16,16); //head
glColor3f(0.0,0.0,0.0);
glTranslatef(0.1,0.1,0.13);
glutSolidSphere(0.02,16,16); //eye
glTranslatef(-0.1,0.0,0.05);
glutSolidSphere(0.02,16,16); //eye
glTranslatef(0.05,-0.1,-0.3);
glColor3f(1.0,0.0,0.0);
glutSolidCone(0.06,0.5,50,50); //nose
glTranslatef(-0.05,0.15,0.1);
glRotated(270,1.0,0.0,0.0);
glColor3f(0.0,0.0,0.0);
glutSolidCone(0.15,0.5,50,50); //hat
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.0,-1.5);
glPopMatrix();
glPushMatrix();
glRotatef(xrot,0.0,1.0,0.0);
glScalef(1,0.05,0.05);
glColor3f(0.0,0.0,1.0);
glTranslatef(0.5,2.0,2.0);
glRotatef(12,1,0,0);
glutSolidCube(1.0); //hand
glTranslatef(-1.0,-0.6,-2.0);
glutSolidCube(1.0); //hand
glPopMatrix();
void polygon()
if(value==14)
minion();
if(value==15)
winku();
if(value==16)
snowman();
void pol(int p)
value=p;
{
value=valu;
if (value == 0)
exit(0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
/* draw mirror */
glClear (GL_DEPTH_BUFFER_BIT);
glPushAttrib (0xffffffff);
glDisable (GL_LIGHTING);
glEnable (GL_BLEND);
glPointSize(6);
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd ();
glBegin (GL_QUADS);
glPushMatrix();
glRotated(90,0,0,1);
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd ();
glPopMatrix();
glPushMatrix();
glRotated(90,0,0,1);
glBegin (GL_QUADS);
glEnd();
glPopMatrix();
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd();
glBegin(GL_QUADS);
glEnd ();
glPopAttrib();
drawScene(GL_CCW);
glutSwapBuffers();
#include<GL/glut.h>
#include<GL/glu.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
#include<math.h>
#define TIMER 33
float quad;
void *font = GLUT_STROKE_ROMAN;
void *fonts[] =
GLUT_STROKE_ROMAN, GLUT_STROKE_MONO_ROMAN};
int value=15,val=5,valu,v=1;
void polygon();
va_list args;
if(theObject>=0)
va_start(args, format);
va_end(args);
glPushMatrix();
glTranslatef(x, y, 0);
glutStrokeCharacter(font, *p);
glPopMatrix();
}
void text()
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glColor3f(1.0,1.0,1.0);
output(1800,2800, "%s",objectNames[theObject]);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopAttrib();
glPushMatrix();
glEnable (GL_CULL_FACE);
glCullFace (GL_BACK);
glFrontFace(order);
text();
glColor3f(1.0,0.9,1.0);
glBegin(GL_QUADS);
glEnd();
glDisable (GL_CULL_FACE);
glPushMatrix ();
glPopMatrix ();
polygon();
glPopMatrix();
void minion()
theObject=0;
glRotatef(xrot,0.0,1.0,0.0);
glPushMatrix();
//BODY OF MINION//
glPushMatrix();
glTranslatef(0,.2,0);
glScalef(0.5,0.5,0.5);
glColor3f(1.0,1.0,0.0);
glRotatef(90.0,1,0,0);
gluCylinder(gluNewQuadric(),.6,.6,1.4,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.18,0);
glScalef(.9 ,.9,.9 );
glColor3f(1.0,1.0,0.0);
glutSolidSphere(0.333,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(0,-0.45,0);
glScalef(.9 ,.7,.9 );
glColor3f(0.0,0.0,1.0);
glutSolidSphere(0.333,25,16);
glPopMatrix();
glPushMatrix();
glRotatef(-45,0,0,1);
glutSolidSphere(0.05,25,16);
glPopMatrix();
glPushMatrix();
glScalef(.15,.15,.19);
glColor3f(1.0,0.0,0.0);
glRotatef(0.0,1,0,0);
glutSolidTorus(.09,0.7,20,20);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.1,-0.007); //belt
glScalef(.84,1.0,.84);
glColor3f(0.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.02,0.35,20,20);
glPopMatrix();
glPushMatrix();
glScalef(0.5,0.2,0.5);
glColor3f(0.0,0.0,1.0);
glRotatef(90.0,1,0,0);
gluCylinder(gluNewQuadric(),.62,.62,1.4,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(-.5,-0.4,.1);
glRotatef(90,0,1,0);
glRotatef(-50,1,0,0);
gluCylinder(gluNewQuadric(),.02,.05,.48,30,6);
glPopMatrix();
glPushMatrix();
glRotatef(90,0,1,0);
glRotatef(-130,1,0,0);
gluCylinder(gluNewQuadric(),.02,.05,.48,30,6);
glPopMatrix();
glPushMatrix();
glScalef(.19,.14,.14);
gluSphere(gluNewQuadric(),.3,100,100);
glPopMatrix();
glPushMatrix();
glScalef(.19,.14,.14);
gluSphere(gluNewQuadric(),.3,100,100);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glColor3f(0.0,0.0,1.0);
glScalef(.9,.3,.9);
gluCylinder(gluNewQuadric(),.03,.05,.4,30,6);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glColor3f(0.0,0.0,1.0);
glScalef(.9,.3,.9);
gluCylinder(gluNewQuadric(),.03,.05,.4,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(.06,-.89,0); //shoes
glScalef(0.9,.7,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.06,100,200);
glPopMatrix();
glPushMatrix();
glTranslatef(-.06,-.89,0);
glScalef(0.9,.7,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.06,100,200);
glPopMatrix();
glPopMatrix();
void winku()
theObject=1;
glRotatef(xrot,0.0,1.0,0.0);
glPushMatrix();
glPushMatrix();
glTranslatef(0,0.3,0); //head
glScalef(.9 ,.9,.9 );
glColor3f(1.0,0.8,0.6);
glutSolidSphere(0.38,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.002,0.41,0); //hat
glScalef(.98,.98,.98);
glColor3f(0.0,0.0,1.0);
glutSolidSphere(0.33,25,16);
glPopMatrix();
glPushMatrix();
glScalef(.84,.84,.84);
glColor3f(1.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.03,0.4,20,20);
glPopMatrix();
glPushMatrix();
glTranslatef(0,.08,0);
glScalef(0.75,.7,0.75);
glColor3f(0.5,0.5,0.0);
glRotatef(90.0,1,0,0);
gluCylinder( gluNewQuadric(),.3,.45,0.5,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(0,-0.11,.29);
glRotatef(-17.0,1,0,0);
glScalef(.05,.33,.03);
glColor3f(0.0,0.0,0.0);
glutSolidCube(1);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0.05,0.02);
glScalef(.84,.84,.84);
glColor3f(1.0,0.0,0.0);
glRotatef(90.0,1,0,0);
glutSolidTorus(.04,0.32,20,20);
glPopMatrix();
glPushMatrix();
glRotatef(-45,0,0,1);
glutSolidSphere(0.05,25,16);
glPopMatrix();
glPushMatrix();
glRotatef(45,0,0,1);
glScalef(.9,.9,.9);
glColor3f(0.0,0.0,0.0);
glutSolidSphere(0.05,25,16);
glPopMatrix();
glPushMatrix();
glTranslatef(0.01,.22,.33);
glScalef(.6,.4,.1);
glColor3f(1.0,0.0,0.0);
glutSolidSphere(0.1,25,16);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glScalef(.8,.8,.8);
gluCylinder(gluNewQuadric(),.19,.19,.5,30,6);
glPopMatrix();
glPushMatrix();
glRotatef(-90.0,1,0,0);
glScalef(.8,.8,.8);
gluCylinder(gluNewQuadric(),.19,.19,.5,30,6);
glPopMatrix();
glPushMatrix();
glTranslatef(.13,-.49,0); //shoes
glScalef(1.6,.4,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.11,100,100);
glPopMatrix();
glPushMatrix();
glTranslatef(-.13,-.49,0);
glScalef(1.6,.4,1.5);
glColor3f(0.0,0.0,0.0);
gluSphere(gluNewQuadric(),.11,100,100);
glPopMatrix();
glPopMatrix();
void snowman()
theObject = 2;
glTranslatef(0.0,0.0,0.6);
glPushMatrix();
glRotatef(xrot,0.0,1.0,0.0);
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.0,0.0);
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.55,0.0);
glutSolidSphere(0.2,16,16); //head
glColor3f(0.0,0.0,0.0);
glTranslatef(0.1,0.1,0.13);
glutSolidSphere(0.02,16,16); //eye
glTranslatef(-0.1,0.0,0.05);
glutSolidSphere(0.02,16,16); //eye
glTranslatef(0.05,-0.1,-0.3);
glColor3f(1.0,0.0,0.0);
glutSolidCone(0.06,0.5,50,50); //nose
glTranslatef(-0.05,0.15,0.1);
glRotated(270,1.0,0.0,0.0);
glColor3f(0.0,0.0,0.0);
glutSolidCone(0.15,0.5,50,50); //hat
glColor3f(1.0,1.0,1.0);
glTranslatef(0.0,0.0,-1.5);
glPopMatrix();
glPushMatrix();
glRotatef(xrot,0.0,1.0,0.0);
glScalef(1,0.05,0.05);
glColor3f(0.0,0.0,1.0);
glTranslatef(0.5,2.0,2.0);
glRotatef(12,1,0,0);
glutSolidCube(1.0); //hand
glTranslatef(-1.0,-0.6,-2.0);
glutSolidCube(1.0); //hand
glPopMatrix();
}
void polygon()
if(value==14)
minion();
if(value==15)
winku();
if(value==16)
snowman();
void pol(int p)
value=p;
value=valu;
if (value == 0)
exit(0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
glPushMatrix ();
drawScene(GL_CW);
glPopMatrix ();
/* draw mirror */
glClear (GL_DEPTH_BUFFER_BIT);
glPushAttrib (0xffffffff);
glDisable (GL_LIGHTING);
/* Create imperfect reflector effect by blending a black
glEnable (GL_BLEND);
glPointSize(6);
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd ();
glBegin (GL_QUADS);
glEnd();
glPushMatrix();
glRotated(90,0,0,1);
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd ();
glPopMatrix();
glPushMatrix();
glRotated(90,0,0,1);
glBegin (GL_QUADS);
glEnd();
glPopMatrix();
glColor3f(1.0,0.0,0.0);
glBegin (GL_LINE_LOOP);
glEnd();
glBegin(GL_QUADS);
glEnd ();
glPopAttrib();
drawScene(GL_CCW);
glutSwapBuffers();
font = fonts[newfont];
glutPostRedisplay();
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
int nv=value,cv=val;
value++;
if(key=='n' &&nv==17)
value=14;
val++;
val=3;
v++;
if(key=='d' &&v>=1)
v--;
xrot +=v;
glutPostRedisplay ();
int s1,s2,s3;
xrot = 1.;
glEnable (GL_DEPTH_TEST);
/* Set up light1 */
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT1);
glEnable (GL_COLOR_MATERIAL);
glutDisplayFunc (display);
glutReshapeFunc (reshape);
s1=glutCreateMenu(pol);
glutAddMenuEntry("minion", 14);
glutAddMenuEntry("winku", 15);
glutAddMenuEntry("snowman",16);
s2=glutCreateMenu(selectFont);
glutAddMenuEntry("Roman",0);
glutAddMenuEntry("Mono Roman",1);
glutCreateMenu(main_menu);
glutAddSubMenu("Object",s1);
glutAddSubMenu("texts",s2);
glutAddMenuEntry("Quit", 0);
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
glutInit (&argc,argv);
glutInitWindowSize (300,300);
glutInitWindowPosition (0,0);
glutKeyboardFunc(kb);
init ();
glutMainLoop ();
font = fonts[newfont];
glutPostRedisplay();
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
{
int nv=value,cv=val;
value++;
if(key=='n' &&nv==17)
value=14;
val++;
val=3;
v++;
if(key=='d' &&v>=1)
v--;
xrot +=v;
glutPostRedisplay ();
int s1,s2,s3;
xrot = 1.;
glEnable (GL_DEPTH_TEST);
/* Set up light1 */
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT1);
glEnable (GL_COLOR_MATERIAL);
glutDisplayFunc (display);
glutReshapeFunc (reshape);
s1=glutCreateMenu(pol);
glutAddMenuEntry("minion", 14);
glutAddMenuEntry("winku", 15);
glutAddMenuEntry("snowman",16);
s2=glutCreateMenu(selectFont);
glutAddMenuEntry("Roman",0);
glutAddMenuEntry("Mono Roman",1);
glutCreateMenu(main_menu);
glutAddSubMenu("Object",s1);
glutAddSubMenu("texts",s2);
glutAddMenuEntry("Quit", 0);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutInit (&argc,argv);
glutInitWindowSize (300,300);
glutInitWindowPosition (0,0);
glutKeyboardFunc(kb);
init ();
glutMainLoop ();