USO_DE_LOOKAT.c



/*     EJEMPLO DE USO DEL LOOKAT( ___ )     */


#include <stdio.h>
#include <GL/glut.h>
#include <unistd.h>

void PintaEjes()
{
	glBegin(GL_LINES);
		glColor3f(1,0,0); glVertex3f(-5, 0, 0); glVertex3f(5, 0, 0);	// X
		glColor3f(0,1,0); glVertex3f(0, -5, 0); glVertex3f(0, 5, 0);	// Y
		glColor3f(0,0,1); glVertex3f(0, 0, -5); glVertex3f(0, 0, 5);	// Z
	glEnd();
	glPushMatrix();
	glColor3f(1,0,0); glTranslatef(5.0f, 0.0f, 0.0f); glutWireSphere(0.20, 20, 20);
	glPopMatrix(); glPushMatrix();
	glColor3f(0,1,0); glTranslatef(0.0f, 5.0f, 0.0f); glutWireSphere(0.20, 20, 20);
	glPopMatrix(); glPushMatrix();
	glColor3f(0,0,1); glTranslatef(0.0f, 0.0f, 5.0f); glutWireSphere(0.20, 20, 20);
	glPopMatrix();
}

void Gradua  ( )
{
	int k=0, x1,y1,x2,y2;

	glBegin(GL_LINES);
		glColor3f(1,0,0); for(k=1; k<10; k++) { glVertex3f(-5+k, 0.2, 0); glVertex3f(-5+k, -0.2, 0); }
		glColor3f(0,1,0); for(k=1; k<10; k++) { glVertex3f(0.2, -5+k, 0); glVertex3f(-0.2, -5+k, 0); }
		glColor3f(0,1,0); for(k=1; k<10; k++) { glVertex3f(0.2, 0, -5+k); glVertex3f(-0.2, 0, -5+k); }
	glEnd();
}

Inicializa()
{
	int texture;

	glClearColor(0.0,0.0,0.0,0.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-8.0,8.0, -8.0,8.0, -7.0,7.0);

	glMatrixMode(GL_MODELVIEW);
	// X=ROJO	Y=VERDE		Z=AZUL
	gluLookAt(-1,-1,1,  2,2,-1,  0,0,1);			// VISTA 3D
	//gluLookAt(0,-5,0,  0,0,0,  0,0,1);			// VISTA (1)	DE FRENTE
	//gluLookAt(0,0,-5,  0,0,0,  0,-1,0);			// VISTA (2)	DE ABAJO HACIA ARRIBA
	//gluLookAt(0,0,5,  0,0,0,  0,1,0);				// VISTA (3)	DE ARRIBA HACIA ABAJO
	//gluLookAt(1,1,-1,  0,0,-1,  0,1,0);
	glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glClearDepth(1.0);
}

void Dibuja(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	PintaEjes( ); Gradua( );
	glPushMatrix(); glColor3f(0,0,1);
		glTranslatef(0.0f, 0.0f, 0.0f);
		glutWireSphere(2, 20, 20);				// (radio, DivLatitud, DivLongitud)
	glPopMatrix();
	glPushMatrix(); glColor3f(1,1,0);
		glTranslatef(0.0f, 0.0f, 1.5f);
		//glRotatef(90, 0.0f, 1.0f, 0.0f);			// rotaciOn en el eje Y
		glutSolidCone(1, 2.0, 50, 50);			// (radio, alto, DivLatitud, DivLongitud)
	glPopMatrix();
	glFlush();
}

int main(int argc, char ** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
	glutInitWindowPosition(700,100);
	glutInitWindowSize(650,650);
	glutCreateWindow("USO DE LOOK AT ... ");
	Inicializa();
	glutDisplayFunc(Dibuja);
	glutMainLoop();
}