Beruflich Dokumente
Kultur Dokumente
CONTENTS
1.INTRODUCTION
2.PROJECT DEFINITION AND DESCRPTION
3.DESIGN AND IMPLEMENTATION
4.RESULTS AND SNAPSHOTS
5.CONCLUSION
6.REFERENCE
1.INTRODUCTION
1.1 INTRODUCTION TO COMPUTER GRAPHICS
5.CONCLUSION
An attempt has been made to develop an OpenGL graphics package, which
meets the necessary requirements of the user successfully. We try to
implement major properties of CG such as transformation and viewing. It
enables us to learn about the basic concepts in graphics and know standard
library graphics functions and also to explore some other functions. Since it
is user friendly, it enables the user to interact efficiently and easily. Thus, the
program designed here, provides ultimate options of transformation and
viewing. Further this project can be advanced by adopting a better GUI
which may look pleasing.
6.REFERENCES:
1.
Interactive Computer Graphics A Top-Down Approach with OpenGLEdward Angel, 5th Edition, Addision-Wesley, 2008.
2.
Computer Graphics - OpenGL Version - Donald Hearn and Pauline
Baker, 2nd Edition, Pearson Education.
3.
OpenGl version Donald Hearn and Pauline Baker, 2 Edition Pearson
Education, 2003, Computer Graphics
PROGRAM:
#include<stdio.h>
#include<GL/glut.h>
#include<stdlib.h>
GLint r,q,k1,p,x,y,a;
void smoke()
{
glBegin(GL_POLYGON); //smoke cloud
glColor3f(0.7,0.7,0.7);
glVertex2d(640,870);
glVertex2d(655,845);
glVertex2d(675,835);
glVertex2d(695,830);
glVertex2d(715,830);
glVertex2d(735,835);
glVertex2d(750,850);
glVertex2d(775,845);
glVertex2d(800,855);
glVertex2d(810,865);
glVertex2d(825,880);
glVertex2d(825,900);
glVertex2d(810,920);
glVertex2d(790,930);
glVertex2d(770,935);
glVertex2d(755,935);
glVertex2d(740,945);
glVertex2d(725,955);
glVertex2d(705,960);
glVertex2d(685,955);
glVertex2d(670,945);
glVertex2d(660,930);
glVertex2d(630,940);
glVertex2d(605,935);
glVertex2d(585,925);
glVertex2d(570,905);
glVertex2d(575,885);
glVertex2d(590,870);
glVertex2d(615,860);
glEnd();
glBegin(GL_POLYGON); //smoke
glColor3f(0.8,0.8,0.8);
glVertex2d(725,740+q);
glVertex2d(690,765+q);
glVertex2d(700,765+q);
glVertex2d(690,790+q);
glVertex2d(735,790+q);
glVertex2d(725,765+q);
glVertex2d(735,765+q);
glVertex2d(725,740+q);
glEnd();
glColor3f(0.2,0.2,0.2);
glRasterPos2f(715,790);
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'S');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'M');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'O');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'K');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'E');
}
void lava()
{
glBegin(GL_LINES);
glColor3f(1.0,0.0,0.0); //lava
glLineWidth(1.0);
glBegin(GL_LINES);
glVertex2i(675-x,760+y); //left
glVertex2i(645-x,790+y);
glVertex2i(640-x,755+y);
glVertex2i(620-x,785+y);
glVertex2i(660-x,755+y);
glVertex2i(640-x,785+y);
glVertex2i(715+x,755+y); //right
glVertex2i(735+x,785+y);
glVertex2i(730+x,755+y);
glVertex2i(750+x,785+y);
glVertex2i(750+x,760+y);
glVertex2i(770+x,790+y);
glVertex2i(690-x,760+y);//left
glVertex2i(650-x,800+y);
glEnd();
glColor3f(1.0,0.0,0.0); //lava
glLineWidth(5.0);
glVertex2i(700,750); //left
glVertex2i(675,770);
glVertex2i(630,785);
glEnd();
}
void sea()
{
glColor3f(0.0,0.7,1.0); //sea
glBegin(GL_POLYGON);
glVertex2i(0,0);
glVertex2i(0,400);
glVertex2i(300,450);
glVertex2i(300,0);
glVertex2i(0,0);
glEnd();
glColor3f(0.0,0.7,1.0); //waves
glBegin(GL_POLYGON);
glVertex2i(0+p,400);
glVertex2i(325+p,465);
glVertex2i(315+p,440);
glVertex2i(340+p,420);
glVertex2i(310+p,400);
glVertex2i(400+p,350);
glVertex2i(315+p,370);
glVertex2i(420+p,350);
glVertex2i(325+p,300);
glVertex2i(410+p,250);
glVertex2i(335+p,200);
glVertex2i(350+p,140);
glVertex2i(0+p,0);
glVertex2i(0+p,300);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex2d(350,320);
glVertex2d(350,360);
glVertex2d(370,370);
glVertex2d(390,340);
glVertex2d(370,320);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex2d(350,270);
glVertex2d(370,300);
glVertex2d(340,310);
glVertex2d(320,300);
glVertex2d(340,310);
glVertex2d(350,270);
/*
glVertex2d(860,400);
glVertex2d(860,300);*/
glEnd();
}
void mountain()
{
glColor3f(0.27,0.0,0.1);
glBegin(GL_POLYGON); //1st mountain
glVertex2i(0,600);
glVertex2i(200,800);
glVertex2i(400,600);
glVertex2i(0,600);
glEnd();
glColor3f(0.28,0.0,0.1); //2nd mountain
glBegin(GL_POLYGON);
glVertex2i(300,700);
glVertex2i(450,850);
glVertex2i(700,600);
glVertex2i(400,600);
glVertex2i(300,700);
glEnd();
lava();
smoke();
glVertex2i(750,750);
glVertex2i(950,600);
glVertex2i(700,600);
glVertex2i(590,700);
glEnd();
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex2i(705,750);
glVertex2i(720,750);
glVertex2i(720,600);
glVertex2i(420,350);
//glVertex2i(40,350);
glVertex2i(315,370);
glVertex2i(400,350);
//
glVertex2i(710,600);
glVertex2i(705,750);
glVertex2i(720,750);
glEnd();
}
void burst()
{
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'L');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'A');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'V');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'A');
}
void stones()
{
glColor3f(0.0,0.0,0.0); //stone
glBegin(GL_POLYGON);
glVertex2d(270,290);
glVertex2d(290,350);
//glVertex2d(300,370);
glVertex2d(230,365);
glVertex2d(170,370);
glVertex2d(200,300);
glVertex2d(270,290);
glEnd();
glColor3f(1.0,1.0,1.0);
glRasterPos2f(320,320);
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'S');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'T');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'O');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'N');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'E');
glColor3f(1.0,1.0,1.0);
glRasterPos2f(270,280);
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'F');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'O');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'R');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'M');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'A');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'T');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'I');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'O');
glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,'N');
}
void tree()
{
glColor3f(0.7,0.5,0.2);
glBegin(GL_POLYGON);
//tree
glVertex2d(830,300);
glVertex2d(830,400);
glVertex2d(860,400);
glVertex2d(860,300);
glEnd();
glColor3f(0.0,0.7,0.0);
glBegin(GL_POLYGON);
glVertex2d(830,400);
glVertex2d(800,375);
glVertex2d(810,370);
glVertex2d(780,400);
glVertex2d(800,425);
glVertex2d(795,450);
glVertex2d(820,470);
glVertex2d(820,495);
glVertex2d(850,520);
glVertex2d(850,515);
glVertex2d(875,500);
glVertex2d(880,475);
glVertex2d(905,455);
glVertex2d(895,430);
glVertex2d(910,400);
glVertex2d(885,375);
glVertex2d(860,400);
glEnd();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
mountain();
burst();
sea();
stones();
tree();
glFlush();
glutSwapBuffers();
}
void idle()
{
if(q<=150) // smoke
q+=1.0;
else
{
q=0;
q-=0.01;
}
if(p<=10) // sea
p+=1.0;
else
{
p=0;
p-=0.9;
}
if(r<=60) // lava(particals)
r+=1.2;
else
{
r-=0.9;
}
else
{
r=0;
if(x<=100) //lava strip
x+=1.0;
x=0;
x-=0.9;
}
if(y<=100)
y+=1.0;
else
{
y=0;
y-=0.9;
}
glFlush();
glutPostRedisplay();
void init()
{
glClearColor(0.4,0.5,0.6,0.0);
//glColor3f(0.4,0.6,0.8);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,999.0,0.0,999.0);
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(1000,1000);
glutInitWindowPosition(0,0);
glutCreateWindow("Volcanic Eruption");
glutDisplayFunc(display);
glutIdleFunc(idle);
init();
glutMainLoop();
}