We also uses visitor mining to monitise our website

Want to Make Money With Us? Whats App me +91 8147433408 Arun From eduladder

Learn to win Always With Us Start Today

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