2009/3/26 renuka prasad <renukaprasadb@gmail.com>
i got a program from this link
http://people.sc.fsu.edu/~burkardt/cpp_src/rotating_cube_display_open_gl/rotating_cube_display_open_gl.html

http://people.sc.fsu.edu/~burkardt/cpp_src/rotating_cube_display_open_gl/rotating_cube_display_open_gl.html

the program i have pasted below -- might be missing some lines as i removed few lines ( comments ) while pasting here , the actual program is at the bottom of the page ( link provided above )

# include <cstdlib>
# include <cmath>
# include <iostream>
# include <iomanip>
# include <fstream>

# include <GL/glut.h>

using namespace std;

GLfloat vertices[][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 normals[][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 },
  { 1.0, 1.0, 0.0 },
  { 0.0, 1.0, 0.0 },
  { 0.0, 0.0, 1.0 },
  { 1.0, 0.0, 1.0 },
  { 1.0, 1.0, 1.0 },
  { 0.0, 1.0, 1.0 } };

static GLint axis = 2;
static GLfloat theta[3] = { 0.0, 0.0, 0.0 };

int main ( int argc, char *argv[] );
void colorcube ( );
void display ( );
void mouse ( int btn, int state, int x, int y );
void myReshape ( int w, int h );
void polygon ( int a, int b, int c, int d );
void spinCube ( );



int main ( int argc, char *argv[] )
{
  glutInit ( &argc, argv );
  glutInitDisplayMode ( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
  glutInitWindowSize ( 500, 500 );
  glutInitWindowPosition ( 0, 0 );
  glutCreateWindow ( "Rotating cube" );
  glutReshapeFunc ( myReshape );
  glutDisplayFunc ( display );
  glutIdleFunc ( spinCube );
  glutMouseFunc ( mouse );
  glEnable ( GL_DEPTH_TEST );
  glutMainLoop ( );

  return 0;
}
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 );

  return;
}

void display ( )

  glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

  glLoadIdentity ( );
 
  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 ( );

  return;
}


void mouse ( int btn, int state, int x, int y )
{
  if ( btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN )
  {
    axis = axis + 1;
  }
  if ( btn == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN )
  {
    axis = axis + 1;
  }
  if ( btn == GLUT_RIGHT_BUTTON && state == GLUT_DOWN )
  {
    axis = axis + 1;
  }
  axis = axis % 3;

  return;
}

void myReshape ( int w, int h )
{
  glViewport ( 0, 0, w, h );
  glMatrixMode ( GL_PROJECTION );
  glLoadIdentity ( );

  if ( w <= h )
  {
    glOrtho (
      -2.0, 2.0,
      -2.0 * ( GLfloat ) h / ( GLfloat ) w, 2.0 * ( GLfloat ) h / ( GLfloat ) w,
      -10.0, 10.0 );
  }
  else
  {
    glOrtho (
      -2.0 * ( GLfloat ) h / ( GLfloat ) w, 2.0 * ( GLfloat ) h / ( GLfloat ) w, 
      -2.0, 2.0,
      -10.0, 10.0 );
  }

  glMatrixMode ( GL_MODELVIEW );

  return;
}


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

{
  glBegin ( GL_POLYGON );

  glColor3fv ( colors[a] );
  glNormal3fv ( normals[a] );
  glVertex3fv ( vertices[a] );

  glColor3fv ( colors[b] );
  glNormal3fv ( normals[b] );
  glVertex3fv ( vertices[b] );

  glColor3fv ( colors[c] );
  glNormal3fv ( normals[c] );
  glVertex3fv ( vertices[c] );

  glColor3fv ( colors[d] );
  glNormal3fv ( normals[d] );
  glVertex3fv ( vertices[d] );

  glEnd ( );

  return;
}


void spinCube ( )

{
  theta[axis] = theta[axis] + 0.020;
  if ( 360.0 < theta[axis] )
  {
    theta[axis] = theta[axis] - 360.0;
  }
  glutPostRedisplay ( );

  return;
}

-------------------------------

I compiled using command
rvcemcabrp@rvcemcabrp-laptop:~/Desktop/opengl$ g++ rotating_cube_display_open_gl.C -lm -lGL -lGLU -lglut

then i tried  this

./a.out
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  143 (GLX)
  Minor opcode of failed request:  19 (X_GLXQueryServerString)
  Serial number of failed request:  12
  Current serial number in output stream:  12
rvcemcabrp@rvcemcabrp-laptop:~/Desktop/opengl$

i want solution for any of the following problems


------------------ this is for one of the labs for BE ( computer science students -- VI semester )

Implement the following programs in C / C++

  1. Program to recursively subdivide a tetrahedron to from 3D Sierpinski gasket. The number of recursive steps is to be specified by the user.
  2. Program to implement Liang-Barsky line clipping algorithm.

3.     Program to draw a color cube and spin it using OpenGL transformation matrices.

4.   Program to create a house like figure and rotate it about a given fixed point using   OpenGL functions.

5.    Program to implement the Cohen-Sutherland line-clipping algorithm. Make provision    to specify the input line, window for clipping and view port for displaying the clipped image.

6.    Program to create a cylinder and a parallelepiped by extruding a circle and

     quadrilateral respectively. Allow the user to specify the circle and the quadrilateral.

7    Program, using OpenGL functions, to draw a simple shaded scene consisting of a tea pot on a table. Define suitably the position and properties of the light source along with the properties of the properties of the surfaces of the solid object used in the scene.

  1. Program to draw a color cube and allow the user to move the camera suitably to experiment with perspective viewing. Use OpenGL functions.
  2. Program to fill any given polygon using scan-line area filling algorithm. (Use appropriate data structures.)
  3.  Program to display a set of values { fij } as a rectangular mesh.            

Part B

Develop a suitable Graphics package to implement the skills learnt in the theory and the exercises indicated in Part A. Use the OpenGL.