void displayNavigateSubwindow()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glLoadIdentity();

	setNavigateSubwindowCamera(&estado.camera2, gordon.objecto);
	setLight();

	glCallList(modelo.labirinto[JANELA_NAVIGATE]);
	glCallList(modelo.chao[JANELA_NAVIGATE]);

	if(!estado.vista[JANELA_NAVIGATE])
	{
		glPushMatrix();
		glTranslatef(gordon.objecto.pos.x,gordon.objecto.pos.y,gordon.objecto.pos.z);
		glRotatef(GRAUS(gordon.objecto.dir),0,1,0);
		glRotatef(-90,1,0,0);
		glScalef(SCALE_GORDON,SCALE_GORDON,SCALE_GORDONY);
		mdlviewer_display(gordon.stdModel[JANELA_NAVIGATE]);
		glPopMatrix();

		for(int i=0; i < 3 ; i++)
		{
			if(headCrabs[i].objecto.pos.x != NULL)
				if(headCrabs[i].objecto.pos.x > 0)
				{
					glPushMatrix();		
					glTranslatef(headCrabs[i].objecto.pos.x,headCrabs[i].objecto.pos.y,headCrabs[i].objecto.pos.z);
					glRotatef(GRAUS(headCrabs[i].objecto.dir),0,1,0);
					glRotatef(-90,1,0,0);
					glScalef(SCALE_GORDON+0.01,SCALE_GORDON+0.01,SCALE_GORDONY+0.01);
					mdlviewer_display(headCrabs[i].stdModel[JANELA_NAVIGATE]);
					glPopMatrix();
				}
		}

		//GLint x=2;

		//for(int i=0;i<3;i++){

		//	glPushMatrix();
		//	glTranslatef(x+i,0,0);
		//	//glRotatef(GRAUS(gordon.objecto.dir),0,1,0);
		//	glRotatef(-90,1,0,0);
		//	glScalef(SCALE_GORDON,SCALE_GORDON,SCALE_GORDON);
		//	mdlviewer_display(headCrabs[i].stdModel[JANELA_NAVIGATE]);
		//	glPopMatrix();
		//}
	}

	glutSwapBuffers();
}
void displayNavigateSubwindow()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
	glLoadIdentity();

	setNavigateSubwindowCamera(&estado.camera, modelo.objecto);
    setLight();

	glCallList(modelo.labirinto[JANELA_NAVIGATE]);
	glCallList(modelo.chao[JANELA_NAVIGATE]);

	if(!estado.vista[JANELA_NAVIGATE])
      {
        glPushMatrix();
            glTranslatef(modelo.objecto.pos.x,modelo.objecto.pos.y,modelo.objecto.pos.z);
            glRotatef(GRAUS(modelo.objecto.dir),0,1,0);
            glRotatef(-90,1,0,0);
            glScalef(SCALE_HOMER,SCALE_HOMER,SCALE_HOMER);
            mdlviewer_display(modelo.homer[JANELA_NAVIGATE]);
        glPopMatrix();
      }

	desenhaBussola(glutGet(GLUT_WINDOW_WIDTH),glutGet(GLUT_WINDOW_HEIGHT));

	glutSwapBuffers();
}
void motionNavigateSubwindow(int x, int y)
{
	double dx,dy;
	dx=(modelo.xMouse-x)*0.01;
	dy=(modelo.yMouse-y)*0.01;
	estado.camera.dir_lat+=dy;
	estado.camera.dir_long+=dx;
	if(GRAUS(estado.camera.dir_lat)>80)
	{
		dx=RAD(80);
	}
	if(GRAUS(estado.camera.dir_lat)>-15)
	{
		dy=RAD(-15);
	}
	modelo.xMouse=x;
	modelo.yMouse=y;
}
void desenhaModelo()
{
    glColor3f(0,1,0);
    glutSolidCube(OBJECTO_ALTURA);
    glPushMatrix();
        glColor3f(1,0,0);
        glTranslatef(0,OBJECTO_ALTURA*0.75,0);
        glRotatef(GRAUS(estado.camera.dir_long-modelo.objecto.dir),0,1,0);
        glutSolidCube(OBJECTO_ALTURA*0.5);
    glPopMatrix();
}
void displayTopSubwindow()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
    glLoadIdentity();
    setTopSubwindowCamera(&estado.camera,modelo.objecto);
    setLight();

	glCallList(modelo.labirinto[JANELA_TOP]);
	glCallList(modelo.chao[JANELA_TOP]);
	
    glPushMatrix();		
        glTranslatef(modelo.objecto.pos.x,modelo.objecto.pos.y,modelo.objecto.pos.z);
        glRotatef(GRAUS(modelo.objecto.dir),0,1,0);
        glRotatef(-90,1,0,0);
        glScalef(SCALE_HOMER,SCALE_HOMER,SCALE_HOMER);
        mdlviewer_display(modelo.homer[JANELA_TOP]);
    glPopMatrix();

	desenhaAngVisao(&estado.camera);
	desenhaModeloDir(modelo.objecto,glutGet(GLUT_WINDOW_WIDTH),glutGet(GLUT_WINDOW_HEIGHT));
	glutSwapBuffers();
}
void desenhaAngVisao(camera_t *cam)
{
    GLfloat ratio;
    ratio=(GLfloat)glutGet(GLUT_WINDOW_WIDTH)/glutGet(GLUT_WINDOW_HEIGHT); // proporчуo 
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    glDepthMask(GL_FALSE);

    glPushMatrix();
        glTranslatef(cam->eye.x,OBJECTO_ALTURA,cam->eye.z);
        glColor4f(0,0,1,0.2);
        glRotatef(GRAUS(cam->dir_long),0,1,0);

        glBegin(GL_TRIANGLES);
            glVertex3f(0,0,0);
            glVertex3f(5*cos(RAD(cam->fov*ratio*0.5)),0,-5*sin(RAD(cam->fov*ratio*0.5)));
            glVertex3f(5*cos(RAD(cam->fov*ratio*0.5)),0,5*sin(RAD(cam->fov*ratio*0.5)));
        glEnd();
    glPopMatrix();

    glDepthMask(GL_TRUE);
    glDisable(GL_BLEND);
}