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/rot...http://people.sc.fsu.edu/%7Eburkardt/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/rot...http://people.sc.fsu.edu/%7Eburkardt/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++
- 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.
Program to draw a color cube and spin it using OpenGL transformation
matrices.
- Program to create a house like figure and rotate it about a given
fixed point using OpenGL functions.
- 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.
- 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.
- 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.