#include /*=========================================================================*/ typedef struct { float x; float y; float z; float r; float g; float b; } point; point p[8]={ {-0.5,-0.5, 0.5,0.0,0.0,0.0}, {-0.5, 0.5, 0.5,0.0,0.0,0.0}, { 0.5, 0.5, 0.5,0.0,0.0,0.0}, { 0.5,-0.5, 0.5,0.0,0.0,0.0}, {-0.5,-0.5,-0.5,0.0,0.0,0.0}, {-0.5, 0.5,-0.5,0.0,0.0,0.0}, { 0.5, 0.5,-0.5,0.0,0.0,0.0}, { 0.5,-0.5,-0.5,0.0,0.0,0.0}}; int f[6][4]={ {0,1,2,3}, {3,2,6,7}, {4,5,6,7}, {0,1,5,4}, {1,5,6,2}, {0,4,7,3}}; char presse; int anglex,angley,x,y,xold,yold; int width=500, heigth=500, deep=400; /*=========================================================================*/ void texto(int x, int y, char *palabra); void display(); void mouse(int bouton,int etat,int x,int y); void mousemotion(int x,int y); /*=========================================================================*/ int main(int argc,char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowPosition(200,200); glutInitWindowSize(width,heigth); glutCreateWindow("cube"); glOrtho(-(width/2), (width/2), -(heigth/2), (heigth/2), -deep, deep); glClearColor(1.0,1.0,1.0,0.0); glColor3f(1.0,1.0,1.0); glPointSize(2.0); glEnable(GL_DEPTH_TEST); glutDisplayFunc(display); glutMouseFunc(mouse); glutMotionFunc(mousemotion); glutMainLoop(); return 0; } /*=========================================================================*/ void display() { int i,j; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /*--rotation of the mouse-*/ /*------------------------*/ glRotatef(-angley,1.0,0.0,0.0); glRotatef(-anglex,0.0,1.0,0.0); /*--drawing the cube--*/ /*--------------------*/ glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); for (i=0;i<6;i++) { glBegin(GL_POLYGON); for (j=0;j<4;j++) { glColor3f(p[f[i][j]].r,p[f[i][j]].g,p[f[i][j]].b); glVertex3f(p[f[i][j]].x,p[f[i][j]].y,p[f[i][j]].z); } glEnd(); } glFlush(); /*--displaying text ?--*/ /*---------------------*/ texto(-width/2+10,heigth/2-20,"blabla"); glutSwapBuffers(); } /*=========================================================================*/ void texto(int x, int y, char *palabra) { int i; glColor3f(0,0,0); glRasterPos2f(x, y); for (i = 0; palabra[i]; i++) glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, palabra[i]); } /*=========================================================================*/ void mouse(int button, int state,int x,int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { presse = 1; xold = x; yold=y; } if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) presse=0; } /*=========================================================================*/ void mousemotion(int x,int y) { if (presse) { anglex=anglex+(x-xold); angley=angley+(y-yold); glutPostRedisplay(); } xold=x; yold=y; }