Hello,

the code below gives 12 positions and 12 angle rotations on the Y axis to a cube.

The positions and the angles are inside of two matrices.

When you push the key 'b' you go to next position and angle.

My problem is at the 7th step: the window doesnt show the view it should and I cannot understand why.


Code :
 
 
#include <stdafx.h>
#include <glut.h>
#include <math.h>
 
#include <iostream>
using namespace std;
 
 
double m=5;
double n=6;
double o=10;
double b=m/n;
double c=2*b;
double f=3*b;
int i=0;
double p=2;
double q=12;
double d1=(m*sqrt(p))/q;
 
 
double array[12][3]={   0,   0,  0, //posicion0 
                        0,   0,  0, //1
			0,   0,  b, //2
		        0,   0,  c, //3
		        0,   0,  c, //4
		      -d1,   0,  c+d1, //5
	            -2*d1,   0,  c+d1*2, //6
                    -2*d1,   0,  c+d1*2, //7 -> //THIS IS THE STEP I CANT UNDERStand
                      -d1,   0,  c+d1*3, //8 
			0,   0,  c+d1*4, //9
                        0,   0,  c+d1*4, //10
			0,   0,  f+d1*4}; //11
 
 
 
float xpos = 0, ypos = 0, zpos = 0, xrot = 0, yrot = 0, angle=0.0;
 
 
double array2[12]={    0,  //posicion inicial
					0,   //1
					0,
					0,
				  -45,   //4
				  -45,
				  -45,
				   45,   //7 -> THIS IS THE STEP I CANT NOT UNDERSTAND
				   45,   //8
				   45,
					0,
					0,   //11
};
 
 
 
 
void init (void) {
 
}
 
void enable (void) {
	glEnable (GL_DEPTH_TEST); //enable the depth testing
	//dglEnable (GL_LIGHTING); //enable the lighting
	glEnable (GL_LIGHT0); //enable LIGHT0, our Diffuse Light
	glShadeModel (GL_SMOOTH); //set the shader to smooth shader
}
 
void camera (void) {
 
	glTranslated(-array[i][0],-array[i][1],-array[i][2]);
 
	glRotatef(array2[i], 0.0, 1.0, 0.0);
 
 
}
 
void display (void) {
	glClearColor (0.0,0.0,0.0,1.0); //clear the screen to black
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the color buffer and the depth buffer
    glLoadIdentity();  
	gluLookAt (0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0); //camera position, x,y,z, looking at x,y,z, Up Positions of the camera
	camera();
	enable();
 
 
 
	glBegin(GL_QUADS);           // Draw The Cube Using quads
		glColor3f(0.0f,1.0f,0.0f);     // Color Blue
		glVertex3f( 2.5f, 2.5f, 0.0f);    // Top Right Of The Quad (Top)
		glVertex3f(-2.5f, 2.5f, 0.0f);    // Top Left Of The Quad (Top)
		glVertex3f(-2.5f, 2.5f, 5.0f);    // Bottom Left Of The Quad (Top)
		glVertex3f( 2.5f, 2.5f, 5.0f);    // Bottom Right Of The Quad (Top)
 
		glColor3f(1.0f,0.5f,0.0f);     // Color Orange
		glVertex3f( 2.5f,-2.5f, 5.0f);    // Top Right Of The Quad (Bottom)
		glVertex3f(-2.5f,-2.5f, 5.0f);    // Top Left Of The Quad (Bottom)
		glVertex3f(-2.5f,-2.5f, 0.0f);    // Bottom Left Of The Quad (Bottom)
		glVertex3f( 2.5f,-2.5f, 0.0f);    // Bottom Right Of The Quad (Bottom)
 
		glColor3f(1.0f,0.0f,0.0f);     // Color Red      
		glVertex3f( 2.5f, 2.5f, 5.0f);    // Top Right Of The Quad (Front)
		glVertex3f(-2.5f, 2.5f, 5.0f);    // Top Left Of The Quad (Front)
		glVertex3f(-2.5f,-2.5f, 5.0f);    // Bottom Left Of The Quad (Front)
		glVertex3f( 2.5f,-2.5f, 5.0f);    // Bottom Right Of The Quad (Front)
 
		glColor3f(1.0f,1.0f,0.0f);     // Color Yellow
		glVertex3f( 2.5f,-2.5f, 0.0f);    // Top Right Of The Quad (Back)
		glVertex3f(-2.5f,-2.5f, 0.0f);    // Top Left Of The Quad (Back)
		glVertex3f(-2.5f, 2.5f, 0.0f);    // Bottom Left Of The Quad (Back)
		glVertex3f( 2.5f, 2.5f, 0.0f);    // Bottom Right Of The Quad (Back)
 
		glColor3f(0.0f,0.0f,1.0f);     // Color Blue
		glVertex3f(-2.5f, 2.5f, 5.0f);    // Top Right Of The Quad (Left)
		glVertex3f(-2.5f, 2.5f, 0.0f);    // Top Left Of The Quad (Left)
		glVertex3f(-2.5f,-2.5f, 0.0f);    // Bottom Left Of The Quad (Left)
		glVertex3f(-2.5f,-2.5f, 5.0f);    // Bottom Right Of The Quad (Left)
 
		glColor3f(1.0f,0.0f,1.0f);     // Color Violet
		glVertex3f( 2.5f, 2.5f, 0.0f);    // Top Right Of The Quad (Right)
		glVertex3f( 2.5f, 2.5f, 5.0f);    // Top Left Of The Quad (Right)
		glVertex3f( 2.5f,-2.5f, 5.0f);    // Bottom Left Of The Quad (Right)
		glVertex3f( 2.5f,-2.5f, 0.0f);    // Bottom Right Of The Quad (Right)
 
    glEnd();
 
 
 
	glutSwapBuffers(); //swap the buffers
	angle++; //increase the angle
}
 
void reshape (int w, int h) {
	glViewport (0, 0, (GLsizei)w, (GLsizei)h); //set the viewport to the current window specifications
	glMatrixMode (GL_PROJECTION); //set the matrix to projection
	glLoadIdentity ();
	gluPerspective (60, (GLfloat)w / (GLfloat)h, 0.1, 1000.0); //set the perspective (angle of sight, width, height, , depth)
	glMatrixMode (GL_MODELVIEW); //set the matrix back to model
}
 
void keyboard (unsigned char key, int x, int y) {
 
 
	if (key=='b')
	{		
 
		cout << "Posicion" << i+1 << endl;
		cout << array[i+1][0] << endl << array[i+1][1] << endl << array[i+1][2] << endl;
		cout << array2[i+1] << endl << endl;
		i++;
	}
 
 
 
}
 
int main (int argc, char **argv) {
    glutInit (&amp;argc, argv);
	glutInitDisplayMode (GLUT_DOUBLE | GLUT_DEPTH); //set the display to Double buffer, with depth
	glutInitWindowSize (500, 500); //set the window size
	glutInitWindowPosition (100, 100); //set the position of the window
    glutCreateWindow ("A basic OpenGL Window"); //the caption of the window
	init (); //call the init function
    glutDisplayFunc (display); //use the display function to draw everything
	glutIdleFunc (display); //update any variables in display, display can be changed to anyhing, as long as you move the variables to be updated, in this case, angle++;
	glutReshapeFunc (reshape); //reshape the window accordingly
	glutKeyboardFunc (keyboard); //check the keyboard
    glutMainLoop (); //call the main loop
    return 0;
}