The Eduladder is a community of students, teachers, and programmers just interested to make you pass any exams. So we help you to solve your academic and programming questions fast.
In eduladder you can Ask,Answer,Listen,Earn and Download Questions and Question papers.
Watch related videos of your favorite subject.
Connect with students from different parts of the world.
Apply or Post Jobs, Courses ,Internships and Volunteering opportunity. For FREE
See Our team
Wondering how we keep quality?
Got unsolved questions? Ask Questions


You are here:Open notes-->VTU-->CG-and-Visualisation-Lab10CSL67-Vtu-prg-8

CG and Visualisation Lab(10CSL67) Vtu prg-8

/* Lab Program 8 */ /* Program to draw a color cube and allow the user to move the camera suitably to experiment with perspective viewing. Use OpenGL functions */

#include<stdlib.h>

#include<GL/glut.h>

GLfloat ver[][3]={{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}};

GLfloat colors[][3]={{0.0,0.0,0.0},{1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,1.0,0.0},{1.0,0.0,1.0},{0.0,1.0,1.0},{1.0,1.0,1.0}};

void polygon(int a,int b,int c,int d) {

glBegin(GL_POLYGON);

glColor3fv(colors[a]);

glVertex3fv(ver[a]);

glColor3fv(colors[b]);

glVertex3fv(ver[b]);

glColor3fv(colors[c]);

glVertex3fv(ver[c]);

glColor3fv(colors[d]);

glVertex3fv(ver[d]);

glEnd();

}

void colorcube() {

polygon(0,3,2,1);

polygon(2,3,7,6);

polygon(0,4,7,3);

polygon(1,2,6,5);

polygon(4,5,6,7);

polygon(0,1,5,4);

}

static GLfloat theta[]={0.0,0.0,0.0};

static GLint axis=2;

static GLdouble viewer[]={0.0,0.0,5.0};

/*void spincube() {

theta[axis]+=2.0;

if(theta[axis]>360.0) theta[axis]-=360.0;

glutPostRedisplay();

}*/

void display() {

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

gluLookAt(viewer[0],viewer[1],viewer[2],0.0,0.0,0.0,0.0,1.0,0.0); glRotatef(theta[0],1.0,0.0,0.0);

glRotatef(theta[1],0.0,1.0,0.0);

glRotatef(theta[2],0.0,0.0,1.0);

colorcube();

glFlush();

glutSwapBuffers();

}

void mymouse(int btn,int state,int x,int y) { if(btn==GLUT_LEFT_BUTTON&&state==GLUT_DOWN) axis=0; if(btn==GLUT_MIDDLE_BUTTON&&state==GLUT_DOWN) axis=1; if(btn==GLUT_RIGHT_BUTTON&&state==GLUT_DOWN) axis=2;

theta[axis]+=2.0;

if(theta[axis]>360.0) theta[axis]-=360.0; display(); }

void keys(unsigned char key,int x,int y) {

if(key=='X') viewer[0]-=1.0;

if(key=='x') viewer[0]+=1.0;

if(key=='Y') viewer[1]-=1.0;

if(key=='y') viewer[1]+=1.0;

if(key=='Z') viewer[2]-=1.0;

if(key=='z') viewer[2]+=1.0;

display();

}

void myReshape(int w,int h) {

glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(50.0,w/h,1.0,10.0);

glMatrixMode(GL_MODELVIEW);

}

int main(int argc ,char **argv) {

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

glutInitWindowSize(500,500);

glutCreateWindow("colorCube");

glutReshapeFunc(myReshape);

glutDisplayFunc(display);

glutSpinFunc(spincube);

glutMouseFunc(mymouse);

glutKeyboardFunc(keys);

glEnable(GL_DEPTH_TEST);

glutMainLoop();

return 0;

}

Editors




play