/* 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();
}