// Dibujo de un monito [copiado] #include <GL/glut.h> //#include <unistd.h> // Medidas del cuerpo #define CUERPO_ALTO 4.0 #define CUERPO_ANCHO 2.5 #define CUERPO_LONGITUD 1.0 #define BRAZO_ALTO 3.5 #define BRAZO_ANCHO 1.0 #define BRAZO_LONGITUD 1.0 #define PIERNA_ALTO 4.5 #define PIERNA_ANCHO 1.0 #define PIERNA_LONGITUD 1.0 #define CABEZA_RADIO 1.1 void display(void) { glDepthFunc(GL_LEQUAL); // Activamos el el Z-Buffer glEnable(GL_DEPTH_TEST); glClearColor(0.0,0.0,0.0,0.0); // Borramos el buffer de color y el Z-Buffer glClearDepth(1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); // Proyección perspectiva. El ángulo de glLoadIdentity(); gluPerspective(60.0,1.0,1.0,100.0); // Proyección perspectiva. El ángulo de 60 grados, la razón ancho/alto es 1, la distancia z=100.0 glMatrixMode(GL_MODELVIEW); glTranslatef(0.0,0.0,-16.0); // Dibujamos el cuerpo glTranslatef(0,CUERPO_ALTO/2,0); glPushMatrix(); glScalef(CUERPO_ANCHO,CUERPO_ALTO,CUERPO_LONGITUD); glColor3f(0.0,0.3,0.8); glutSolidCube(1); glPopMatrix(); // Dibujamos el brazo derecho glPushMatrix(); glTranslatef(-(CUERPO_ANCHO)/2,(CUERPO_ALTO-BRAZO_ALTO)/2,0); glTranslatef(0,BRAZO_ALTO/2,0); glRotatef(-30,0,0,1); glTranslatef(0,-BRAZO_ALTO/2,0); glPushMatrix(); glScalef(BRAZO_ANCHO,BRAZO_ALTO,BRAZO_LONGITUD); glutSolidCube(1); glPopMatrix(); // ya tenemos el brazo... la mano glTranslatef(0,-(BRAZO_ALTO+BRAZO_ANCHO)/2,0); glColor3f(1,0.6,0.6); glScalef(BRAZO_ANCHO,BRAZO_ANCHO,BRAZO_LONGITUD); glutSolidCube(1); glPopMatrix(); // Dibujamos el brazo izquierdo glColor3f(0.0,0.3,0.8); glPushMatrix(); glTranslatef((CUERPO_ANCHO)/2,(CUERPO_ALTO-BRAZO_ALTO)/2,0); glTranslatef(0,BRAZO_ALTO/2,0); glRotatef(30,0,0,1); glTranslatef(0,-BRAZO_ALTO/2,0); glPushMatrix(); glScalef(BRAZO_ANCHO,BRAZO_ALTO,BRAZO_LONGITUD); glutSolidCube(1); glPopMatrix(); // ya tenemos el brazo... la mano glTranslatef(0,-(BRAZO_ALTO+BRAZO_ANCHO)/2,0); glColor3f(1,0.6,0.6); glScalef(BRAZO_ANCHO,BRAZO_ANCHO,BRAZO_LONGITUD); glutSolidCube(1); glPopMatrix(); //Dibujamos la pierna derecha glColor3f(0.0,0.3,0.8); glPushMatrix(); glTranslatef(-(CUERPO_ANCHO-PIERNA_ANCHO)/2,-(CUERPO_ALTO+PIERNA_ALTO)/2,0); glPushMatrix(); glScalef(PIERNA_ANCHO,PIERNA_ALTO,PIERNA_LONGITUD); glutSolidCube(1); glPopMatrix(); // ahora el píe glTranslatef(0,-(PIERNA_ALTO+PIERNA_ANCHO)/2,PIERNA_LONGITUD); glColor3f(0.3,0.4,0.4); glScalef(PIERNA_ANCHO,PIERNA_ANCHO,PIERNA_LONGITUD*2); glutSolidCube(1); glPopMatrix(); //Dibujamos la pierna izquierda glColor3f(0.0,0.3,0.8); glPushMatrix(); glTranslatef((CUERPO_ANCHO-PIERNA_ANCHO)/2,-(CUERPO_ALTO+PIERNA_ALTO)/2,0); glPushMatrix(); glScalef(PIERNA_ANCHO,PIERNA_ALTO,PIERNA_LONGITUD); glutSolidCube(1); glPopMatrix(); // ahora el píe glTranslatef(0,-(PIERNA_ALTO+PIERNA_ANCHO)/2,PIERNA_LONGITUD); glColor3f(0.3,0.4,0.4); glScalef(PIERNA_ANCHO,PIERNA_ANCHO,PIERNA_LONGITUD*2); glutSolidCube(1); glPopMatrix(); // Dibujamos la cabeza glColor3f(1,0.6,0.6); glPushMatrix(); glTranslatef(0,CUERPO_ALTO/2 + CABEZA_RADIO*3/4,0); glutSolidSphere(CABEZA_RADIO,10,10); glPopMatrix(); glFlush(); sleep(20); exit(0); } int main(int argc, char ** argv) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH); glutInitWindowPosition(20,20); glutInitWindowSize(500,500); glutCreateWindow(argv[0]); glutDisplayFunc(display); glutMainLoop(); return 0; }