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