// Callback para gerenciar eventos do teclado para teclas especiais void TeclasEspeciais(int key, int x, int y) { switch (key) { case GLUT_KEY_LEFT:rotY--; break; case GLUT_KEY_RIGHT:rotY++; break; case GLUT_KEY_UP:rotX++; break; case GLUT_KEY_DOWN:rotX--; break; case GLUT_KEY_HOME:obsZ++; break; case GLUT_KEY_END:obsZ--; break; case GLUT_KEY_F10:// "camera reset" rotX=30; rotY=0; obsZ=10; angle=50; EspecificaParametrosVisualizacao(); break; } PosicionaObservador(); glutPostRedisplay(); }
void GerenciaMovim(int x, int y) { // Botão esquerdo ? if(bot==GLUT_LEFT_BUTTON) { // Calcula diferenças int deltax = x_ini - x; int deltay = y_ini - y; // E modifica ângulos rotY = rotY_ini - deltax/SENS_ROT; rotX = rotX_ini - deltay/SENS_ROT; } // Botão direito ? else if(bot==GLUT_RIGHT_BUTTON) { // Calcula diferença int deltaz = y_ini - y; // E modifica distância do observador obsZ = obsZ_ini + deltaz/SENS_OBS; } // Botão do meio ? else if(bot==GLUT_MIDDLE_BUTTON) { // Calcula diferenças int deltax = x_ini - x; int deltay = y_ini - y; // E modifica posições obsX = obsX_ini + deltax/SENS_TRANSL; obsY = obsY_ini - deltay/SENS_TRANSL; } PosicionaObservador(); glutPostRedisplay(); }
void GerenciaMovim(int x, int y) { if(bot==GLUT_LEFT_BUTTON) { int deltax = x_ini - x; int deltay = y_ini - y; rotY = rotY_ini - deltax/SENS_ROT; rotX = rotX_ini - deltay/SENS_ROT; } else if(bot==GLUT_RIGHT_BUTTON) { int deltaz = y_ini - y; obsZ = obsZ_ini + deltaz/SENS_OBS; } else if(bot==GLUT_MIDDLE_BUTTON) { int deltax = x_ini - x; int deltay = y_ini - y; obsX = obsX_ini + deltax/SENS_TRANSL; obsY = obsY_ini - deltay/SENS_TRANSL; } PosicionaObservador(); glutPostRedisplay(); }
void EspecificaParametrosVisualizacao(void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(angle,fAspect,0.5,500); PosicionaObservador(); }
// Função usada para especificar o volume de visualização void EspecificaParametrosVisualizacao(void) { // Especifica sistema de coordenadas de projeção glMatrixMode(GL_PROJECTION); // Inicializa sistema de coordenadas de projeção glLoadIdentity(); // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax) gluPerspective(angle,fAspect,0.5,500); PosicionaObservador(); }
// FunÁ„o usada para especificar o volume de visualizaÁ„o void EspecificaParametrosVisualizacao(void) { // Especifica sistema de coordenadas de projeÁ„o glMatrixMode(GL_PROJECTION); // Inicializa sistema de coordenadas de projeÁ„o glLoadIdentity(); // Especifica a projeÁ„o perspectiva gluPerspective(angle,fAspect,0.4,5000); // Especifica posiÁ„o do observador e do alvo PosicionaObservador(); }