void key(unsigned char key, int x, int y){ bool need_redisplay = true; switch (key) { case 27: /* Escape key */ //continue_in_main_loop = false; // (**) //Freeglut's sentence for stopping glut's main loop (*) glutLeaveMainLoop (); break; // ---------------- // linea de debug::: cout<< angleX << " "<< angleY << " " <<angleZ << " "; case 't': escena->obRotate(5,0); break; case 'y': escena->obRotate(-5,0); break; // ---------------- case 'g': escena->obRotate(5,1); break; case 'h': escena->obRotate(-5,1); break; // ---------------- case 'b': escena->obRotate(5,-1); break; case ',': escena->obRotate(-5,-1); break; // ---------------- // ------ Roll case 'u': acumRoll += 0.09; camera.roll(acumRoll); break; case 'i': acumRoll += -0.09; camera.roll(acumRoll); break; // ------ Yaw case 'j': acumYaw += 0.01; acumRoll = 0; acumPitch = 0; camera.yaw(acumYaw); break; case 'k': acumYaw += -0.01; acumRoll = 0; acumPitch = 0; camera.yaw(acumYaw); break; // ------ Pitch case 'n': acumPitch += 0.01; acumRoll = 0; acumYaw = 0; camera.pitch(acumPitch); break; case 'm': acumPitch += -0.01; acumRoll = 0; acumYaw = 0; camera.pitch(acumPitch); break; // ------ Recorrido X case 'e': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(10.0,0.0,0.0); break; case 'r': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(-10.0,0.0,0.0); break; // ------ Recorrido Y case 'd': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(0.0,10.0,0.0); break; case 'f': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(0.0,-10.0,0.0); break; // ------ Recorrido Z case 'c': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(0.0,0.0,10.0); break; case 'v': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.recorridoEje(0.0,0.0,-10.0); break; // ------ Desplazar X case 'q': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(2.0,0.0,0.0); break; case 'w': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(-2.0,0.0,0.0); break; // ------ Desplazar Y case 'a': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(0.0,2.0,0.0); break; case 's': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(0.0,-2.0,0.0); break; // ------ Desplazar Z case 'z': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(0.0,0.0,2.0); break; case 'x': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.desplazar(0.0,0.0,-2.0); break; // ------ Ortogonal case 'o': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.ortogonal(xLeft,xRight,yBot,yTop,N,F); break; // ------ Perspectiva case 'p': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.perspectiva(xLeft,xRight,yBot,yTop,N,F); break; // ------ Oblicua case 'l': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.oblicua(aux.clone(),xLeft,xRight,yBot,yTop,N,F); break; // ------ Gira X case '1': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.giraX(0.1); break; // ------ Gira Y case '2': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.giraY(0.1); break; // ------ Gira Z case '3': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.giraZ(0.1); break; // ------ Vista Lateral case '4': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.lateral(); break; // ------ Vista Frontal case '5': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.frontal(); break; // ------ Vista Cenital case '6': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.cenital(); break; // ------ Vista Esquina case '7': acumRoll = 0; acumPitch = 0; acumYaw = 0; camera.esquina(); break; default: need_redisplay = false; cout<<key<<endl; break; } if (need_redisplay) glutPostRedisplay(); }