#include void mySpecial(int specKey, int mouseX, int mouseY); /* definitions for cuboid */ GLuint cuboid=1,axes=2; float top[4][3] = { 0, 20,0, 200, 20,0, 200,20,100, 0,20,100 }; /* vertex arrays for each rectangle */ float bottom[4][3] = { 0, 0, 0, 200, 0, 0, 200,0, 100, 0,0, 100 }; float front[4][3] = { 0, 0, 0, 200,0, 0, 200,20,0, 0, 20,0 }; float back[4][3] = { 0,0,100, 200,0, 100, 200, 20, 100, 0, 20,100 }; float left[4][3] = { 0, 0, 0, 0, 20,0, 0, 20,100, 0, 0, 100 }; float right[4][3] = { 200,0, 0, 200,20,0, 200,20,100, 200,0, 100 }; int step=0; /* Initializations */ static void myinit(void) { glClearColor (1.0, 1.0, 1.0, 1.0); /* background color */ glNewList(cuboid, GL_COMPILE); glBegin(GL_QUADS); /* front area of cuboid */ glColor3f(1.0,0.0,0.0); glVertex3fv(front[0]); glVertex3fv(front[1]); glVertex3fv(front[2]); glVertex3fv(front[3]); glEnd(); glBegin(GL_QUADS); // back area of cuboid glColor3f(0.0,0.0,0.0); glVertex3fv(back[0]); glVertex3fv(back[1]); glVertex3fv(back[2]); glVertex3fv(back[3]); glEnd(); glBegin(GL_QUADS); // left area of cuboid glColor3f(0.0,0.0,0.0); glVertex3fv(left[0]); glVertex3fv(left[1]); glVertex3fv(left[2]); glVertex3fv(left[3]); glEnd(); glBegin(GL_QUADS); //right area of cuboid glColor3f(0.0,0.0,0.0); glVertex3fv(right[0]); glVertex3fv(right[1]); glVertex3fv(right[2]); glVertex3fv(right[3]); glEnd(); glBegin(GL_QUADS); // top area of cuboid glColor3f(0.0,0.0,1.0); glVertex3fv(top[0]); glVertex3fv(top[1]); glVertex3fv(top[2]); glVertex3fv(top[3]); glEnd(); glBegin(GL_QUADS); //bottom area of cuboid glColor3f(0.0,1.0,0.0); glVertex3fv(bottom[0]); glVertex3fv(bottom[1]); glVertex3fv(bottom[2]); glVertex3fv(bottom[3]); glEnd(); glBegin(GL_POINTS); glPointSize(10.0); glColor3f(1,0,0); glVertex3f(-5,-5,-5); glEnd(); glEndList(); } /* Creating the Scene */ static void RenderScene(void) { glMatrixMode(GL_MODELVIEW); glClear(GL_COLOR_BUFFER_BIT); /* clears the color buffer */ glLoadIdentity(); glTranslatef(0,80,0); glCallList(cuboid); glLoadIdentity(); // glTranslatef(0,60,0); //tischbein verschieben, das ganze 4 mal glScalef(0.05,4, 0.1); //korrekt formen glCallList(cuboid); glLoadIdentity(); glTranslatef(190,0,0); //tischbein verschieben, das ganze 4 mal glScalef(0.05,4, 0.1); //korrekt formen glCallList(cuboid); glLoadIdentity(); glTranslatef(190,0,90); //tischbein verschieben, das ganze 4 mal glScalef(0.05,4, 0.1); //korrekt formen glCallList(cuboid); glLoadIdentity(); glTranslatef(0,0,90); //tischbein verschieben, das ganze 4 mal glScalef(0.05,4, 0.1); //korrekt formen glCallList(cuboid); glFlush (); /* flushes OpenGL command queues and buffers */ } /* Callback function to handle window dimensions and size changes */ static void myReshape(int w, int h) { if(w>h) w=h; /* cube doesn't change its design on resize */ else h=w; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); /* sets the current projection matrix (applies following matrix operations to the projection matrix stack)*/ glLoadIdentity(); /* replace current matrix through identity matrix */ gluPerspective(90.0, 1.0, 0.1, 500.0); /* set perspective */ gluLookAt(50, 150.0, -200.0, 100, 90, 50, 0.0, 1.0, 0.0); /* set the viewpoint */ } /* GLUT functions to set up the window */ void main(int argc, char** argv) { glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_ALPHA | GLUT_DEPTH); glutInitWindowPosition (0, 0); glutInitWindowSize(500, 500); glutInit(&argc, argv); glutCreateWindow ("Transformationsverfahren Aufgabe a"); myinit(); /* Initialization */ glutReshapeFunc (myReshape); /* Function to call when window changes size */ glutDisplayFunc(RenderScene); /* Creating the Szene */ /* Key function */ glutMainLoop(); }