6. COMPUTER GRAPHICS LAB | READ NOW
VTU COMPUTER GRAPHICS LAB
Program 6:- To draw a simple shaded scene consisting of a tea pot on a table. Define suitablythe
position and properties of the light source along with the properties of the surfaces of the
solid object used in the scene
STEPS TO RUN CG PROGRAM
- Copy the below copy
- Past it in any code compiler ex- Code Blocks, DEV C++, VS Code
- Save the file with .cpp extension
- Compile and Run the code
- Program Execution Successful
Note:- if you use Dev C++, right click on project>project options>parameter>linker paste the below code in Linker – as shown in image.
-lopengl32
-lfreeglut
-lglu32
-lopengl32
-lfreeglut
-lglu32
-lopengl32 -lfreeglut -lglu32

Program Code [lab6.cpp]
#include<GL/glut.h>
void wall(double thickness)
{
glPushMatrix();
glTranslated(0.5,0.5*thickness, 0.5);
glScaled(1.0,thickness, 1.0);
glutSolidCube(1.0);
glPopMatrix();
}
void tableleg(double thick, double len)
{
glPushMatrix();
glTranslated(0,len/2,0);
glScaled(thick, len, thick);
glutSolidCube(1.0);
glPopMatrix();
}
void table(double topwid, double topthick, double legthick, double leglen)
{
glPushMatrix();
glTranslated(0,leglen,0);
glScaled(topwid, topthick, topwid);
glutSolidCube(1.0);
glPopMatrix();
double dist=0.95*topwid/2.0-legthick/2.0;
glPushMatrix();
glTranslated(dist, 0, dist);
tableleg(legthick, leglen);
glTranslated(0.0,0.0,-2*dist);
tableleg(legthick, leglen);
glTranslated(-2*dist, 0, 2*dist);
tableleg(legthick, leglen);
glTranslated(0,0,-2*dist);
tableleg(legthick,leglen);
glPopMatrix();
}
void displaySolid(void)
{
GLfloat mat_ambient[]={0.7f,0.7f,0.7f,1.0f};
GLfloat mat_diffuse[]={0.5f,0.5f,0.5f,1.0f};
GLfloat mat_specular[]={1.0f,1.0f,1.0f,1.0f};
GLfloat mat_shininess[]={50.0f};
glMaterialfv(GL_FRONT,GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS, mat_shininess);
GLfloat lightintensity[]={0.7f,0.7f,0.7f,1.0f};
GLfloat lightposition[]={2.0f,6.0f,3.0f,0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, lightposition);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightintensity);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winht=1.0;
glOrtho(-winht*64/48, winht*64/48, -winht, winht,
0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3,1.3,2.0,0.0,0.25,0.0,0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0.6,0.38,0.5);
glRotated(30,0,1,0);
glutSolidTeapot(0.08);
glPopMatrix();
glPushMatrix();
glTranslated(0.4,0,0.4);
table(0.6,0.02,0.02,0.3);
glPopMatrix();
wall(0.02);
glPushMatrix();
glRotated(90.0,0.0,0.0,1.0);
wall(0.02);
glPopMatrix();
glPushMatrix();
glRotated(-90.0,1.0,0.0,0.0);
wall(0.02);
glPopMatrix();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowPosition(50,50);
glutInitWindowSize(400,300);
glutCreateWindow("Shaded Scene");
glutDisplayFunc(displaySolid);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glClearColor(0.1,0.1,0.1,0.0);
glViewport(0,0,640,480);
glutMainLoop();
}
#include<GL/glut.h>
void wall(double thickness)
{
glPushMatrix();
glTranslated(0.5,0.5*thickness, 0.5);
glScaled(1.0,thickness, 1.0);
glutSolidCube(1.0);
glPopMatrix();
}
void tableleg(double thick, double len)
{
glPushMatrix();
glTranslated(0,len/2,0);
glScaled(thick, len, thick);
glutSolidCube(1.0);
glPopMatrix();
}
void table(double topwid, double topthick, double legthick, double leglen)
{
glPushMatrix();
glTranslated(0,leglen,0);
glScaled(topwid, topthick, topwid);
glutSolidCube(1.0);
glPopMatrix();
double dist=0.95*topwid/2.0-legthick/2.0;
glPushMatrix();
glTranslated(dist, 0, dist);
tableleg(legthick, leglen);
glTranslated(0.0,0.0,-2*dist);
tableleg(legthick, leglen);
glTranslated(-2*dist, 0, 2*dist);
tableleg(legthick, leglen);
glTranslated(0,0,-2*dist);
tableleg(legthick,leglen);
glPopMatrix();
}
void displaySolid(void)
{
GLfloat mat_ambient[]={0.7f,0.7f,0.7f,1.0f};
GLfloat mat_diffuse[]={0.5f,0.5f,0.5f,1.0f};
GLfloat mat_specular[]={1.0f,1.0f,1.0f,1.0f};
GLfloat mat_shininess[]={50.0f};
glMaterialfv(GL_FRONT,GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS, mat_shininess);
GLfloat lightintensity[]={0.7f,0.7f,0.7f,1.0f};
GLfloat lightposition[]={2.0f,6.0f,3.0f,0.0f};
glLightfv(GL_LIGHT0, GL_POSITION, lightposition);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightintensity);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winht=1.0;
glOrtho(-winht*64/48, winht*64/48, -winht, winht,
0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3,1.3,2.0,0.0,0.25,0.0,0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0.6,0.38,0.5);
glRotated(30,0,1,0);
glutSolidTeapot(0.08);
glPopMatrix();
glPushMatrix();
glTranslated(0.4,0,0.4);
table(0.6,0.02,0.02,0.3);
glPopMatrix();
wall(0.02);
glPushMatrix();
glRotated(90.0,0.0,0.0,1.0);
wall(0.02);
glPopMatrix();
glPushMatrix();
glRotated(-90.0,1.0,0.0,0.0);
wall(0.02);
glPopMatrix();
glFlush();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowPosition(50,50);
glutInitWindowSize(400,300);
glutCreateWindow("Shaded Scene");
glutDisplayFunc(displaySolid);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glClearColor(0.1,0.1,0.1,0.0);
glViewport(0,0,640,480);
glutMainLoop();
}
#include<GL/glut.h> void wall(double thickness) { glPushMatrix(); glTranslated(0.5,0.5*thickness, 0.5); glScaled(1.0,thickness, 1.0); glutSolidCube(1.0); glPopMatrix(); } void tableleg(double thick, double len) { glPushMatrix(); glTranslated(0,len/2,0); glScaled(thick, len, thick); glutSolidCube(1.0); glPopMatrix(); } void table(double topwid, double topthick, double legthick, double leglen) { glPushMatrix(); glTranslated(0,leglen,0); glScaled(topwid, topthick, topwid); glutSolidCube(1.0); glPopMatrix(); double dist=0.95*topwid/2.0-legthick/2.0; glPushMatrix(); glTranslated(dist, 0, dist); tableleg(legthick, leglen); glTranslated(0.0,0.0,-2*dist); tableleg(legthick, leglen); glTranslated(-2*dist, 0, 2*dist); tableleg(legthick, leglen); glTranslated(0,0,-2*dist); tableleg(legthick,leglen); glPopMatrix(); } void displaySolid(void) { GLfloat mat_ambient[]={0.7f,0.7f,0.7f,1.0f}; GLfloat mat_diffuse[]={0.5f,0.5f,0.5f,1.0f}; GLfloat mat_specular[]={1.0f,1.0f,1.0f,1.0f}; GLfloat mat_shininess[]={50.0f}; glMaterialfv(GL_FRONT,GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT,GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS, mat_shininess); GLfloat lightintensity[]={0.7f,0.7f,0.7f,1.0f}; GLfloat lightposition[]={2.0f,6.0f,3.0f,0.0f}; glLightfv(GL_LIGHT0, GL_POSITION, lightposition); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightintensity); glMatrixMode(GL_PROJECTION); glLoadIdentity(); double winht=1.0; glOrtho(-winht*64/48, winht*64/48, -winht, winht, 0.1, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(2.3,1.3,2.0,0.0,0.25,0.0,0.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslated(0.6,0.38,0.5); glRotated(30,0,1,0); glutSolidTeapot(0.08); glPopMatrix(); glPushMatrix(); glTranslated(0.4,0,0.4); table(0.6,0.02,0.02,0.3); glPopMatrix(); wall(0.02); glPushMatrix(); glRotated(90.0,0.0,0.0,1.0); wall(0.02); glPopMatrix(); glPushMatrix(); glRotated(-90.0,1.0,0.0,0.0); wall(0.02); glPopMatrix(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowPosition(50,50); glutInitWindowSize(400,300); glutCreateWindow("Shaded Scene"); glutDisplayFunc(displaySolid); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); glClearColor(0.1,0.1,0.1,0.0); glViewport(0,0,640,480); glutMainLoop(); }
COMPUTER GRAPHICS LAB OUTPUT

Alternative Method [lab6.cpp]
#include<GL/glut.h>
void obj(double tx,double ty,double tz,double sx,double sy,double sz)
{
glRotated(50,0,1,0);
glRotated(10,-1,0,0);
glRotated(11.7,0,0,-1);
glTranslated(tx,ty,tz);
glScaled(sx,sy,sz);
glutSolidCube(1);
glLoadIdentity();
}
void display()
{
glViewport(0,0,700,700);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
obj(0,0,0.5,1,1,0.04);
obj(0,-0.5,0,1,0.04,1);
obj(-0.5,0,0,0.04,1,1);
obj(0,-0.3,0,0.02,0.2,0.02);
obj(0,-0.3,-0.4,0.02,0.2,0.02);
obj(0.4,-0.3,0,0.02,0.2,0.02);
obj(0.4,-0.3,-0.4,0.02,0.2,0.02);
obj(0.2,-0.18,-0.2,0.6,0.02,0.6);
glRotated(50,0,1,0);
glRotated(10,-1,0,0);
glRotated(11.7,0,0,-1);
glTranslated(0.3,-0.1,-0.3);
glutSolidTeapot(0.09);
glFlush();
glLoadIdentity();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
float ambient[]={1,1,1,1};
float light_pos[]={27,80,2,3};
glutInitWindowSize(700,700);
glutCreateWindow("Tea Pot");
glutDisplayFunc(display);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glMaterialfv(GL_FRONT,GL_AMBIENT,ambient);
glLightfv(GL_LIGHT0,GL_POSITION,light_pos);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
}
#include<GL/glut.h>
void obj(double tx,double ty,double tz,double sx,double sy,double sz)
{
glRotated(50,0,1,0);
glRotated(10,-1,0,0);
glRotated(11.7,0,0,-1);
glTranslated(tx,ty,tz);
glScaled(sx,sy,sz);
glutSolidCube(1);
glLoadIdentity();
}
void display()
{
glViewport(0,0,700,700);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
obj(0,0,0.5,1,1,0.04);
obj(0,-0.5,0,1,0.04,1);
obj(-0.5,0,0,0.04,1,1);
obj(0,-0.3,0,0.02,0.2,0.02);
obj(0,-0.3,-0.4,0.02,0.2,0.02);
obj(0.4,-0.3,0,0.02,0.2,0.02);
obj(0.4,-0.3,-0.4,0.02,0.2,0.02);
obj(0.2,-0.18,-0.2,0.6,0.02,0.6);
glRotated(50,0,1,0);
glRotated(10,-1,0,0);
glRotated(11.7,0,0,-1);
glTranslated(0.3,-0.1,-0.3);
glutSolidTeapot(0.09);
glFlush();
glLoadIdentity();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
float ambient[]={1,1,1,1};
float light_pos[]={27,80,2,3};
glutInitWindowSize(700,700);
glutCreateWindow("Tea Pot");
glutDisplayFunc(display);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glMaterialfv(GL_FRONT,GL_AMBIENT,ambient);
glLightfv(GL_LIGHT0,GL_POSITION,light_pos);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
}
#include<GL/glut.h> void obj(double tx,double ty,double tz,double sx,double sy,double sz) { glRotated(50,0,1,0); glRotated(10,-1,0,0); glRotated(11.7,0,0,-1); glTranslated(tx,ty,tz); glScaled(sx,sy,sz); glutSolidCube(1); glLoadIdentity(); } void display() { glViewport(0,0,700,700); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); obj(0,0,0.5,1,1,0.04); obj(0,-0.5,0,1,0.04,1); obj(-0.5,0,0,0.04,1,1); obj(0,-0.3,0,0.02,0.2,0.02); obj(0,-0.3,-0.4,0.02,0.2,0.02); obj(0.4,-0.3,0,0.02,0.2,0.02); obj(0.4,-0.3,-0.4,0.02,0.2,0.02); obj(0.2,-0.18,-0.2,0.6,0.02,0.6); glRotated(50,0,1,0); glRotated(10,-1,0,0); glRotated(11.7,0,0,-1); glTranslated(0.3,-0.1,-0.3); glutSolidTeapot(0.09); glFlush(); glLoadIdentity(); } int main(int argc,char **argv) { glutInit(&argc,argv); float ambient[]={1,1,1,1}; float light_pos[]={27,80,2,3}; glutInitWindowSize(700,700); glutCreateWindow("Tea Pot"); glutDisplayFunc(display); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glMaterialfv(GL_FRONT,GL_AMBIENT,ambient); glLightfv(GL_LIGHT0,GL_POSITION,light_pos); glEnable(GL_DEPTH_TEST); glutMainLoop(); }
COMPUTER GRAPHICS LAB Alternative Method Output
