viernes, 11 de octubre de 2013

U3-ACTIVIDA4-Cubo Rubik

codigo

#include <GL/glut.h>

GLfloat arx = 0.0f;
GLfloat ary = 0.0f;
void reshape(int width, int height){
 glViewport(0,0,width,height);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-40,40,-40,40,-40,40);
 glMatrixMode(GL_MODELVIEW);

}
void DibujaCaras(void)
{
 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-9.8,9.8,9.8);
 glVertex3f(-3.8,9.8,9.8);
 glVertex3f(-3.8,3.8,9.8);
 glVertex3f(-9.8,3.8,9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,9.8,3.8);
 glVertex3f(-9.8,9.8,9.8);
 glVertex3f(-9.8,3.8,9.8);
 glVertex3f(-9.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-9.8,9.8,3.8);
 glVertex3f(-9.8,9.8,9.8);
 glVertex3f(-3.8,9.8,9.8);
 glVertex3f(-3.8,9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-3.5,9.8,9.8);
 glVertex3f(3.5,9.8,9.8);
 glVertex3f(3.5,3.8,9.8);
 glVertex3f(-3.5,3.8,9.8);
 glEnd();
  
 glBegin(GL_POLYGON);//
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-3.5,9.8,3.8);
 glVertex3f(-3.5,9.8,9.8);
 glVertex3f(3.5,9.8,9.8);
 glVertex3f(3.5,9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(3.8,9.8,9.8);
 glVertex3f(9.8,9.8,9.8);
 glVertex3f(9.8,3.8,9.8);
 glVertex3f(3.8,3.8,9.8);
 glEnd();
  
 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(3.8,9.8,3.8);
 glVertex3f(3.8,9.8,9.8);
 glVertex3f(9.8,9.8,9.8);
 glVertex3f(9.8,9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);//
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,9.8,3.8);
 glVertex3f(9.8,9.8,9.8);
 glVertex3f(9.8,3.8,9.8);
 glVertex3f(9.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-9.8,3.5,9.8);
 glVertex3f(-3.8,3.5,9.8);
 glVertex3f(-3.8,-3.5,9.8);
 glVertex3f(-9.8,-3.5,9.8);
 glEnd();

 glBegin(GL_POLYGON);//
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,3.5,3.8);
 glVertex3f(-9.8,3.5,9.8);
 glVertex3f(-9.8,-3.5,9.8);
 glVertex3f(-9.8,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-3.5,3.5,9.8);
 glVertex3f(3.5,3.5,9.8);
 glVertex3f(3.5,-3.5,9.8);
 glVertex3f(-3.5,-3.5,9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(3.8,3.5,9.8);
 glVertex3f(9.8,3.5,9.8);
 glVertex3f(9.8,-3.5,9.8);
 glVertex3f(3.8,-3.5,9.8);
 glEnd();
  
 glBegin(GL_POLYGON);//
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,3.5,3.8);
 glVertex3f(9.8,3.5,9.8);
 glVertex3f(9.8,-3.5,9.8);
 glVertex3f(9.8,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-9.8,-3.8,9.8);
 glVertex3f(-3.8,-3.8,9.8);
 glVertex3f(-3.8,-9.8,9.8);
 glVertex3f(-9.8,-9.8,9.8);
 glEnd();

 glBegin(GL_POLYGON);//
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,-3.8,3.8);
 glVertex3f(-9.8,-3.8,9.8);
 glVertex3f(-9.8,-9.8,9.8);
 glVertex3f(-9.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);//
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(-3.8,-9.8,3.8);
 glVertex3f(-3.8,-9.8,9.8);
 glVertex3f(-9.8,-9.8,9.8);
 glVertex3f(-9.8,-9.8,3.8);
 glEnd();


 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(-3.5,-3.8,9.8);
 glVertex3f(3.5,-3.8,9.8);
 glVertex3f(3.5,-9.8,9.8);
 glVertex3f(-3.5,-9.8,9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(3.5,-9.8,3.8);
 glVertex3f(3.5,-9.8,9.8);
 glVertex3f(-3.5,-9.8,9.8);
 glVertex3f(-3.5,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,1.0f);// azul
 glVertex3f(3.8,-3.8,9.8);
 glVertex3f(9.8,-3.8,9.8);
 glVertex3f(9.8,-9.8,9.8);
 glVertex3f(3.8,-9.8,9.8);
 glEnd();
  
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,-3.8,3.8);
 glVertex3f(9.8,-3.8,9.8);
 glVertex3f(9.8,-9.8,9.8);
 glVertex3f(9.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(9.8,-9.8,3.8);
 glVertex3f(9.8,-9.8,9.8);
 glVertex3f(3.8,-9.8,9.8);
 glVertex3f(3.8,-9.8,3.8);
 glEnd();


 //1c-i

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,9.8,-3.5);
 glVertex3f(-9.8,9.8,3.5);
 glVertex3f(-9.8,3.8,3.5);
 glVertex3f(-9.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-9.8,9.8,-3.5);
 glVertex3f(-9.8,9.8,3.5);
 glVertex3f(-3.8,9.8,3.5);
 glVertex3f(-3.8,9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-3.5,9.8,-3.5);
 glVertex3f(-3.5,9.8,3.5);
 glVertex3f(3.5,9.8,3.5);
 glVertex3f(3.5,9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(3.8,9.8,-3.5);
 glVertex3f(3.8,9.8,3.5);
 glVertex3f(9.8,9.8,3.5);
 glVertex3f(9.8,9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,9.8,-3.5);
 glVertex3f(9.8,9.8,3.5);
 glVertex3f(9.8,3.8,3.5);
 glVertex3f(9.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,3.5,-3.5);
 glVertex3f(-9.8,3.5,3.5);
 glVertex3f(-9.8,-3.5,3.5);
 glVertex3f(-9.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,3.5,-3.5);
 glVertex3f(9.8,3.5,3.5);
 glVertex3f(9.8,-3.5,3.5);
 glVertex3f(9.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,-3.8,-3.5);
 glVertex3f(-9.8,-3.8,3.5);
 glVertex3f(-9.8,-9.8,3.5);
 glVertex3f(-9.8,-9.8,-3.5);
 glEnd();
  
 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(-3.8,-9.8,-3.5);
 glVertex3f(-3.8,-9.8,3.5);
 glVertex3f(-9.8,-9.8,3.5);
 glVertex3f(-9.8,-9.8,-3.5);
 glEnd();


 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(3.5,-9.8,-3.5);
 glVertex3f(3.5,-9.8,3.5);
 glVertex3f(-3.5,-9.8,3.5);
 glVertex3f(-3.5,-9.8,-3.5);
 glEnd();


 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,-3.8,-3.5);
 glVertex3f(9.8,-3.8,3.5);
 glVertex3f(9.8,-9.8,3.5);
 glVertex3f(9.8,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(9.8,-9.8,-3.5);
 glVertex3f(9.8,-9.8,3.5);
 glVertex3f(3.8,-9.8,3.5);
 glVertex3f(3.8,-9.8,-3.5);
 glEnd();

 //1-i
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-9.8,9.8,-9.8);
 glVertex3f(-3.8,9.8,-9.8);
 glVertex3f(-3.8,3.8,-9.8);
 glVertex3f(-9.8,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,9.8,-9.8);
 glVertex3f(-9.8,9.8,-3.8);
 glVertex3f(-9.8,3.8,-3.8);
 glVertex3f(-9.8,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-9.8,9.8,-9.8);
 glVertex3f(-9.8,9.8,-3.8);
 glVertex3f(-3.8,9.8,-3.8);
 glVertex3f(-3.8,9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-3.5,9.8,-9.8);
 glVertex3f(3.5,9.8,-9.8);
 glVertex3f(3.5,3.8,-9.8);
 glVertex3f(-3.5,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(-3.5,9.8,-9.8);
 glVertex3f(-3.5,9.8,-3.8);
 glVertex3f(3.5,9.8,-3.8);
 glVertex3f(3.5,9.8,-9.8);
 glEnd();


 //1-d
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(3.8,9.8,-9.8);
 glVertex3f(9.8,9.8,-9.8);
 glVertex3f(9.8,3.8,-9.8);
 glVertex3f(3.8,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f, 1.0f, 0.0f); // verde
 glVertex3f(3.8,9.8,-9.8);
 glVertex3f(3.8,9.8,-3.8);
 glVertex3f(9.8,9.8,-3.8);
 glVertex3f(9.8,9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,9.8,-9.8);
 glVertex3f(9.8,9.8,-3.8);
 glVertex3f(9.8,3.8,-3.8);
 glVertex3f(9.8,3.8,-9.8);
 glEnd();

 //2i
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-9.8,3.5,-9.8);
 glVertex3f(-3.8,3.5,-9.8);
 glVertex3f(-3.8,-3.5,-9.8);
 glVertex3f(-9.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,3.5,-9.8);
 glVertex3f(-9.8,3.5,-3.8);
 glVertex3f(-9.8,-3.5,-3.8);
 glVertex3f(-9.8,-3.5,-9.8);
 glEnd();

 //2c
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-3.5,3.5,-9.8);
 glVertex3f(3.5,3.5,-9.8);
 glVertex3f(3.5,-3.5,-9.8);
 glVertex3f(-3.5,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f);
 glVertex3f(3.8,3.5,-9.8);
 glVertex3f(9.8,3.5,-9.8);
 glVertex3f(9.8,-3.5,-9.8);
 glVertex3f(3.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,3.5,-9.8);
 glVertex3f(9.8,3.5,-3.8);
 glVertex3f(9.8,-3.5,-3.8);
 glVertex3f(9.8,-3.5,-9.8);
 glEnd();

 //3i
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-9.8,-3.8,-9.8);
 glVertex3f(-3.8,-3.8,-9.8);
 glVertex3f(-3.8,-9.8,-9.8);
 glVertex3f(-9.8,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.5f, 0.0f, 1.0f); //morado
 glVertex3f(-9.8,-3.8,-9.8);
 glVertex3f(-9.8,-3.8,-3.8);
 glVertex3f(-9.8,-9.8,-3.8);
 glVertex3f(-9.8,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(-3.8,-9.8,-9.8);
 glVertex3f(-3.8,-9.8,-3.8);
 glVertex3f(-9.8,-9.8,-3.8);
 glVertex3f(-9.8,-9.8,-9.8);
 glEnd();

 //3c
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(-3.5,-3.8,-9.8);
 glVertex3f(3.5,-3.8,-9.8);
 glVertex3f(3.5,-9.8,-9.8);
 glVertex3f(-3.5,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(3.5,-9.8,-9.8);
 glVertex3f(3.5,-9.8,-3.8);
 glVertex3f(-3.5,-9.8,-3.8);
 glVertex3f(-3.5,-9.8,-9.8);
 glEnd();

 //3d
 glBegin(GL_POLYGON);
 glColor3f(1.0f, 1.0f, 0.0f); // amarillo
 glVertex3f(3.8,-3.8,-9.8);
 glVertex3f(9.8,-3.8,-9.8);
 glVertex3f(9.8,-9.8,-9.8);
 glVertex3f(3.8,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(1.0f, 0.0f, 0.0f); // rojo
 glVertex3f(9.8,-3.8,-9.8);
 glVertex3f(9.8,-3.8,-3.8);
 glVertex3f(9.8,-9.8,-3.8);
 glVertex3f(9.8,-9.8,-9.8);
 glEnd();
 glBegin(GL_POLYGON);
 glColor3f(1.0f,1.0f,1.0f);//blanco
 glVertex3f(9.8,-9.8,-9.8);
 glVertex3f(9.8,-9.8,-3.8);
 glVertex3f(3.8,-9.8,-3.8);
 glVertex3f(3.8,-9.8,-9.8);
 glEnd();
 //--------------------------------------------------------------- Relleno
  glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,9.8,3.8);
 glVertex3f(-3.8,9.8,3.8);
 glVertex3f(-3.8,3.8,3.8);
 glVertex3f(-9.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.8,9.8,3.8);
 glVertex3f(-3.8,9.8,9.8);
 glVertex3f(-3.8,3.8,9.8);
 glVertex3f(-3.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,9.8,2.8);
 glVertex3f(-3.5,9.8,9.8);
 glVertex3f(-3.5,9.8,9.8);
 glVertex3f(-3.5,3.8,2.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.5,9.8,3.8);
 glVertex3f(3.5,9.8,9.8);
 glVertex3f(3.5,3.8,9.8);
 glVertex3f(3.5,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,9.8,3.8);
 glVertex3f(3.8,9.8,9.8);
 glVertex3f(3.8,3.8,9.8);
 glVertex3f(3.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,3.8,3.8);
 glVertex3f(9.8,3.8,9.8);
 glVertex3f(3.8,3.8,9.8);
 glVertex3f(3.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,3.5,3.8);
 glVertex3f(-9.8,3.5,9.8);
 glVertex3f(-3.8,3.5,9.8);
 glVertex3f(-3.8,3.5,3.8);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,3.5,3.8);
 glVertex3f(-3.5,3.5,9.8);
 glVertex3f(-3.5,-3.5,9.8);
 glVertex3f(-3.5,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,3.5,3.8);
 glVertex3f(3.8,3.5,9.8);
 glVertex3f(3.8,-3.5,9.8);
 glVertex3f(3.8,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,-3.5,3.8);
 glVertex3f(9.8,-3.5,9.8);
 glVertex3f(3.8,-3.5,9.8);
 glVertex3f(3.8,-3.5,3.8);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,-3.8,3.8);
 glVertex3f(-9.8,-3.8,9.8);
 glVertex3f(-3.8,-3.8,9.8);
 glVertex3f(-3.8,-3.8,3.8);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,-3.8,3.8);
 glVertex3f(3.5,-3.8,3.8);
 glVertex3f(3.5,-9.8,3.8);
 glVertex3f(-3.5,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,-3.8,3.8);
 glVertex3f(-3.5,-3.8,9.8);
 glVertex3f(-3.5,-9.8,9.8);
 glVertex3f(-3.5,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,-3.8,3.8);
 glVertex3f(9.8,-3.8,3.8);
 glVertex3f(9.8,-9.8,3.8);
 glVertex3f(3.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,-3.8,3.8);
 glVertex3f(3.8,-3.8,9.8);
 glVertex3f(3.8,-9.8,9.8);
 glVertex3f(3.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,9.8,-3.5);
 glVertex3f(-3.8,9.8,-3.5);
 glVertex3f(-3.8,3.8,-3.5);
 glVertex3f(-9.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.8,9.8,-3.5);
 glVertex3f(-3.8,9.8,3.5);
 glVertex3f(-3.8,3.8,3.5);
 glVertex3f(-3.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.5,9.8,-3.5);
 glVertex3f(3.5,9.8,3.5);
 glVertex3f(3.5,3.8,3.5);
 glVertex3f(3.5,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,3.8,-3.5);
 glVertex3f(9.8,3.8,3.5);
 glVertex3f(3.8,3.8,3.5);
 glVertex3f(3.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,3.5,-3.5);
 glVertex3f(-9.8,3.5,3.5);
 glVertex3f(-3.8,3.5,3.5);
 glVertex3f(-3.8,3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,-3.5,-3.5);
 glVertex3f(9.8,-3.5,3.5);
 glVertex3f(3.8,-3.5,3.5);
 glVertex3f(3.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,-3.8,-3.5);
 glVertex3f(-9.8,-3.8,3.5);
 glVertex3f(-3.8,-3.8,3.5);
 glVertex3f(-3.8,-3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,-3.8,-3.5);
 glVertex3f(3.5,-3.8,-3.5);
 glVertex3f(3.5,-9.8,-3.5);
 glVertex3f(-3.5,-9.8,-3.5);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,-3.8,-3.5);
 glVertex3f(9.8,-3.8,-3.5);
 glVertex3f(9.8,-9.8,-3.5);
 glVertex3f(3.8,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,9.8,-3.8);
 glVertex3f(-3.8,9.8,-3.8);
 glVertex3f(-3.8,3.8,-3.8);
 glVertex3f(-9.8,3.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-2.8,7.8,-7.8);
 glVertex3f(-2.8,7.8,-2.8);
 glVertex3f(-2.8,2.8,-2.8);
 glVertex3f(-2.8,2.8,-7.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,9.8,-3.8);
 glVertex3f(3.5,9.8,-3.8);
 glVertex3f(3.5,3.8,-3.8);
 glVertex3f(-3.5,3.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.5,9.8,-9.8);
 glVertex3f(3.5,9.8,-3.8);
 glVertex3f(3.5,3.8,-3.8);
 glVertex3f(3.5,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,9.8,-3.8);
 glVertex3f(9.8,9.8,-3.8);
 glVertex3f(9.8,3.8,-3.8);
 glVertex3f(3.8,3.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,3.8,-9.8);
 glVertex3f(9.8,3.8,-3.8);
 glVertex3f(3.8,3.8,-3.8);
 glVertex3f(3.8,3.8,-9.8);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,3.5,-3.8);
 glVertex3f(-3.8,3.5,-3.8);
 glVertex3f(-3.8,-3.5,-3.8);
 glVertex3f(-9.8,-3.5,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,3.5,-9.8);
 glVertex3f(-9.8,3.5,-3.8);
 glVertex3f(-3.8,3.5,-3.8);
 glVertex3f(-3.8,3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,3.5,-3.8);
 glVertex3f(3.5,3.5,-3.8);
 glVertex3f(3.5,-3.5,-3.8);
 glVertex3f(-3.5,-3.5,-3.8);
 glEnd();

  glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,3.5,-3.8);
 glVertex3f(9.8,3.5,-3.8);
 glVertex3f(9.8,-3.5,-3.8);
 glVertex3f(3.8,-3.5,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(9.8,-3.5,-9.8);
 glVertex3f(9.8,-3.5,-3.8);
 glVertex3f(3.8,-3.5,-3.8);
 glVertex3f(3.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,-3.8,-3.8);
 glVertex3f(-3.8,-3.8,-3.8);
 glVertex3f(-3.8,-9.8,-3.8);
 glVertex3f(-9.8,-9.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-9.8,-3.8,-9.8);
 glVertex3f(-9.8,-3.8,-3.8);
 glVertex3f(-3.8,-3.8,-3.8);
 glVertex3f(-3.8,-3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(-3.5,-3.8,-3.8);
 glVertex3f(3.5,-3.8,-3.8);
 glVertex3f(3.5,-9.8,-3.8);
 glVertex3f(-3.5,-9.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glColor3f(0.0f,0.0f,0.0f);
 glVertex3f(3.8,-3.8,-3.8);
 glVertex3f(9.8,-3.8,-3.8);
 glVertex3f(9.8,-9.8,-3.8);
 glVertex3f(3.8,-9.8,-3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,3.8,3.8);
 glVertex3f(-3.8,3.8,9.8);
 glVertex3f(-9.8,3.8,9.8);
 glVertex3f(-9.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,9.8,3.8);
 glVertex3f(3.5,9.8,3.8);
 glVertex3f(3.5,3.8,3.8);
 glVertex3f(-3.5,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,3.8,3.8);
 glVertex3f(3.5,3.8,9.8);
 glVertex3f(-3.5,3.8,9.8);
 glVertex3f(-3.5,3.8,3.8);
 glEnd();


 glBegin(GL_POLYGON);
 glVertex3f(3.8,9.8,3.8);
 glVertex3f(9.8,9.8,3.8);
 glVertex3f(9.8,3.8,3.8);
 glVertex3f(3.8,3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,3.5,3.8);
 glVertex3f(-3.8,3.5,3.8);
 glVertex3f(-3.8,-3.5,3.8);
 glVertex3f(-9.8,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,3.5,3.8);
 glVertex3f(-3.8,3.5,9.8);
 glVertex3f(-3.8,-3.5,9.8);
 glVertex3f(-3.8,-3.5,3.8);
 glEnd();
 glBegin(GL_POLYGON);
 glVertex3f(-3.8,-3.5,3.8);
 glVertex3f(-3.8,-3.5,9.8);
 glVertex3f(-9.8,-3.5,9.8);
 glVertex3f(-9.8,-3.5,3.8);
 glEnd();


 glBegin(GL_POLYGON);
 glVertex3f(-3.5,3.5,3.8);
 glVertex3f(3.5,3.5,3.8);
 glVertex3f(3.5,-3.5,3.8);
 glVertex3f(-3.5,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,3.5,3.8);
 glVertex3f(-3.5,3.5,9.8);
 glVertex3f(3.5,3.5,9.8);
 glVertex3f(3.5,3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,3.5,3.8);
 glVertex3f(3.5,3.5,9.8);
 glVertex3f(3.5,-3.5,9.8);
 glVertex3f(3.5,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,-3.5,3.8);
 glVertex3f(3.5,-3.5,9.8);
 glVertex3f(-3.5,-3.5,9.8);
 glVertex3f(-3.5,-3.5,3.8);
 glEnd();


 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,3.8);
 glVertex3f(9.8,3.5,3.8);
 glVertex3f(9.8,-3.5,3.8);
 glVertex3f(3.8,-3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,3.8);
 glVertex3f(3.8,3.5,9.8);
 glVertex3f(9.8,3.5,9.8);
 glVertex3f(9.8,3.5,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,-3.8,3.8);
 glVertex3f(-3.8,-3.8,3.8);
 glVertex3f(-3.8,-9.8,3.8);
 glVertex3f(-9.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,-3.8,3.8);
 glVertex3f(-3.8,-3.8,9.8);
 glVertex3f(-3.8,-9.8,9.8);
 glVertex3f(-3.8,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,3.8);
 glVertex3f(-3.5,-3.8,9.8);
 glVertex3f(3.5,-3.8,9.8);
 glVertex3f(3.5,-3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,-3.8,3.8);
 glVertex3f(3.5,-3.8,9.8);
 glVertex3f(3.5,-9.8,9.8);
 glVertex3f(3.5,-9.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,3.8);
 glVertex3f(3.8,-3.8,9.8);
 glVertex3f(9.8,-3.8,9.8);
 glVertex3f(9.8,-3.8,3.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,9.8,3.5);
 glVertex3f(-3.8,9.8,3.5);
 glVertex3f(-3.8,3.8,3.5);
 glVertex3f(-9.8,3.8,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,3.8,-3.5);
 glVertex3f(-3.8,3.8,3.5);
 glVertex3f(-9.8,3.8,3.5);
 glVertex3f(-9.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,9.8,-3.5);
 glVertex3f(3.5,9.8,-3.5);
 glVertex3f(3.5,3.8,-3.5);
 glVertex3f(-3.5,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,9.8,3.5);
 glVertex3f(3.5,9.8,3.5);
 glVertex3f(3.5,3.8,3.5);
 glVertex3f(-3.5,3.8,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,9.8,-3.5);
 glVertex3f(-3.5,9.8,3.5);
 glVertex3f(-3.5,3.8,3.5);
 glVertex3f(-3.5,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,3.8,-3.5);
 glVertex3f(3.5,3.8,3.5);
 glVertex3f(-3.5,3.8,3.5);
 glVertex3f(-3.5,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,9.8,-3.5);
 glVertex3f(9.8,9.8,-3.5);
 glVertex3f(9.8,3.8,-3.5);
 glVertex3f(3.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,9.8,3.5);
 glVertex3f(9.8,9.8,3.5);
 glVertex3f(9.8,3.8,3.5);
 glVertex3f(3.8,3.8,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,9.8,-3.5);
 glVertex3f(3.8,9.8,3.5);
 glVertex3f(3.8,3.8,3.5);
 glVertex3f(3.8,3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,3.5,-3.5);
 glVertex3f(-3.8,3.5,-3.5);
 glVertex3f(-3.8,-3.5,-3.5);
 glVertex3f(-9.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,3.5,3.5);
 glVertex3f(-3.8,3.5,3.5);
 glVertex3f(-3.8,-3.5,3.5);
 glVertex3f(-9.8,-3.5,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,-3.5);
 glVertex3f(9.8,3.5,-3.5);
 glVertex3f(9.8,-3.5,-3.5);
 glVertex3f(3.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,3.5);
 glVertex3f(9.8,3.5,3.5);
 glVertex3f(9.8,-3.5,3.5);
 glVertex3f(2.8,-3.5,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,-3.5);
 glVertex3f(3.8,3.5,3.5);
 glVertex3f(3.8,-3.5,3.5);
 glVertex3f(3.8,-3.5,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,-3.8,-3.5);
 glVertex3f(-3.8,-3.8,-3.5);
 glVertex3f(-3.8,-9.8,-3.5);
 glVertex3f(-9.8,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-9.8,-3.8,3.5);
 glVertex3f(-3.8,-3.8,3.5);
 glVertex3f(-3.8,-9.8,3.5);
 glVertex3f(-9.8,-9.8,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,-3.8,-3.5);
 glVertex3f(-3.8,-3.8,3.5);
 glVertex3f(-3.8,-9.8,3.5);
 glVertex3f(-3.8,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,3.5);
 glVertex3f(3.5,-3.8,3.5);
 glVertex3f(3.5,-9.8,3.5);
 glVertex3f(-3.5,-9.8,3.5);
 glEnd();
    
 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,-3.5);
 glVertex3f(-3.5,-3.8,3.5);
 glVertex3f(-3.5,-9.8,3.5);
 glVertex3f(-3.5,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,-3.5);
 glVertex3f(-3.5,-3.8,3.5);
 glVertex3f(3.5,-3.8,3.5);
 glVertex3f(3.5,-3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,-3.8,-3.5);
 glVertex3f(3.5,-3.8,3.5);
 glVertex3f(3.5,-9.8,3.5);
 glVertex3f(3.5,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,3.5);
 glVertex3f(9.8,-3.8,3.5);
 glVertex3f(9.8,-9.8,3.5);
 glVertex3f(3.8,-9.8,3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,-3.5);
 glVertex3f(3.8,-3.8,3.5);
 glVertex3f(3.8,-9.8,3.5);
 glVertex3f(3.8,-9.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,-3.5);
 glVertex3f(3.8,-3.8,3.5);
 glVertex3f(9.8,-3.8,3.5);
 glVertex3f(9.8,-3.8,-3.5);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,3.8,-9.8);
 glVertex3f(-3.8,3.8,-3.8);
 glVertex3f(-9.8,3.8,-3.8);
 glVertex3f(-9.8,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,9.8,-9.8);
 glVertex3f(-3.5,9.8,-3.8);
 glVertex3f(-3.5,3.8,-3.8);
 glVertex3f(-3.5,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,3.8,-9.8);
 glVertex3f(3.5,3.8,-3.8);
 glVertex3f(-3.5,3.8,-3.8);
 glVertex3f(-3.5,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,9.8,-9.8);
 glVertex3f(3.8,9.8,-3.8);
 glVertex3f(3.8,3.8,-3.8);
 glVertex3f(3.8,3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,3.5,-9.8);
 glVertex3f(-3.8,3.5,-3.8);
 glVertex3f(-3.8,-3.5,-3.8);
 glVertex3f(-3.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.8,-3.5,-9.8);
 glVertex3f(-3.8,-3.5,-3.8);
 glVertex3f(-9.8,-3.5,-3.8);
 glVertex3f(-9.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,3.5,-9.8);
 glVertex3f(-3.5,3.5,-3.8);
 glVertex3f(-3.5,-3.5,-3.8);
 glVertex3f(-3.5,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,3.5,-9.8);
 glVertex3f(-3.5,3.5,-3.8);
 glVertex3f(3.5,3.5,-3.8);
 glVertex3f(3.5,3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,3.5,-9.8);
 glVertex3f(3.5,3.5,-3.8);
 glVertex3f(3.5,-3.5,-3.8);
 glVertex3f(3.5,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,-3.5,-9.8);
 glVertex3f(3.5,-3.5,-3.8);
 glVertex3f(-3.5,-3.5,-3.8);
 glVertex3f(-3.5,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,-9.8);
 glVertex3f(3.8,3.5,-3.8);
 glVertex3f(3.8,-3.5,-3.8);
 glVertex3f(3.8,-3.5,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,3.5,-9.8);
 glVertex3f(3.8,3.5,-3.8);
 glVertex3f(9.8,3.5,-3.8);
 glVertex3f(9.8,3.5,-9.8);
 glEnd();

  glBegin(GL_POLYGON);
 glVertex3f(-3.8,-3.8,-9.8);
 glVertex3f(-3.8,-3.8,-3.8);
 glVertex3f(-3.8,-9.8,-3.8);
 glVertex3f(-3.8,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,-9.8);
 glVertex3f(-3.5,-3.8,-3.8);
 glVertex3f(-3.5,-9.8,-3.8);
 glVertex3f(-3.5,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(-3.5,-3.8,-9.8);
 glVertex3f(-3.5,-3.8,-3.8);
 glVertex3f(3.5,-3.8,-3.8);
 glVertex3f(3.5,-3.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.5,-3.8,-9.8);
 glVertex3f(3.5,-3.8,-3.8);
 glVertex3f(3.5,-9.8,-3.8);
 glVertex3f(3.5,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,-9.8);
 glVertex3f(3.8,-3.8,-3.8);
 glVertex3f(3.8,-9.8,-3.8);
 glVertex3f(3.8,-9.8,-9.8);
 glEnd();

 glBegin(GL_POLYGON);
 glVertex3f(3.8,-3.8,-9.8);
 glVertex3f(3.8,-3.8,-3.8);
 glVertex3f(9.8,-3.8,-3.8);
 glVertex3f(9.8,-3.8,-9.8);
 glEnd();

}

void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glRotatef(arx, 1.0f, 0.0f, 0.0f);
 glRotatef(ary, 0.0f, 1.0f, 0.0f);
 DibujaCaras();
 glFlush();
 glutSwapBuffers();
 }
void init()
{
    glClearColor(0,0,0,0);
    glEnable(GL_DEPTH_TEST);
}

void idle()
{
    display();
}

void Teclado(int key, int x, int y){
switch (key){
case GLUT_KEY_UP:arx-=30.00f;
break;
case GLUT_KEY_DOWN:arx+=30.00f;
break;
case GLUT_KEY_RIGHT:ary+=30.00f;
break;
case GLUT_KEY_LEFT:ary-=30.00f;
break;

}
switch (key) {
case 27:
exit(0);
break;
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(400,200);
glutInitWindowSize(400,250);
glutCreateWindow("Ruben De La Cruz Venegas");
init();glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutSpecialFunc(Teclado);
glutMainLoop();
return 0;}

capturas





lunes, 7 de octubre de 2013

U3 ACTIVIDAD 3 Glosario

GLOSARIO




Análisis numérico (cálculo numérico)- es la rama de las matemáticas que se encarga de diseñar algoritmos para, a través de números y reglas matemáticas simples, simular procesos matemáticos más complejos aplicados a procesos del mundo real.

CAD-Diseño asistido por computadora, más conocido por sus siglas inglesas CAD (computer-aided design), es el uso de un amplio rango de herramientas computacionales que asisten  ingenierosarquitectos y diseñadores . El CAD es también utilizado en el marco de procesos de administración del ciclo de vida de productos (en inglés product lifecycle management).

Cálculo vectorial  (análisis vectorial)- es un campo de las matemáticas referidas al análisis real multivariable de vectores en 2 o más dimensiones. Es un enfoque de la geometría diferencial como conjunto de fórmulas y técnicas para solucionar problemas muy útiles para la ingeniería y la física.

CAM -Fabricación asistida por computadora (en Hispanoamérica) o fabricación asistida por ordenador (en España), también conocida por las siglas en inglés CAM (computer-aided manufacturing), implica el uso de computadores y tecnología de cómputo para ayudar en la fase directa de manufactura de un producto, es un puente entre el Diseño Asistido por Computadora CAD y el lenguaje de programación de las máquinas herramientas con una intervención mínima del operario.

Estructura de datos- es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación. Un dato elemental es la mínima información que se tiene en un sistema. Una estructura de datos define la organización e interrelación de estos y un conjunto de operaciones que se pueden realizar sobre ellos.
Geometría analítica estudia las figuras geométricas mediante técnicas básicas del análisis matemático y del álgebra en un determinado sistema de coordenadas.

Geometría descriptiva es un conjunto de técnicas geométricas que permite representar el espacio tridimensional sobre una superficie bidimensional. Por tanto, mediante «lectura» adecuada posibilita resolver problemas espaciales en dos dimensiones de modo que se garantiza la reversibilidad del proceso.
Método es una subrutina cuyo código es definido en una clase y puede pertenecer tanto a una clase, como es el caso de los métodos de clase o estáticos, como a un objeto, como es el caso de los métodos de instancia.

Método matricial- es un método de cálculo aplicable a estructuras hiperestáticas de barras que se comportan de forma elástica y lineal.
Técnica es un procedimiento o conjunto de reglas, normas o protocolos que tiene como objetivo obtener un resultado determinado, ya sea en el campo de las ciencias, de la tecnología, del arte, del deporte, de la educación o en cualquier otra actividad.
Teoría de conjuntos es una rama de las matemáticas que estudia las propiedades de los conjuntos: colecciones abstractas de objetos, consideradas como objetos en sí mismas. Los conjuntos y sus operaciones más elementales son una herramienta básica en la formulación de cualquier teoría matemática.
Topología es la rama de las matemáticas dedicada al estudio de aquellas propiedades de los cuerpos geométricos que permanecen inalteradas por transformaciones continuas.

U3 ACTIVIDAD 2-vertices de objeto (cpu) y codigo OpenGL aplicacando transformaciones al objeto

CODIGO  openGL(CPU lineas)


#include <GL/glut.h>

GLfloat tx= 1.0f;
GLfloat ty = 1.0f;
GLfloat ax = 0.0f; 
GLfloat ay = 0.0f;
GLfloat escala = 1.0f; 

void reshape(int width, int height){
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION); 
glLoadIdentity();
glOrtho(-15,15,-15,15,-15,15);
glMatrixMode(GL_MODELVIEW);

}

void DibujaCPU(void)
{
glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 0.0);
glVertex3f (5.0, 9.0, 0.0);
glVertex3f (0.0, 9.0, 0.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (5.0, 0.0, 3.0);
glVertex3f (5.0, 9.0, 3.0);
glVertex3f (0.0, 9.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (3.0, 5.0, 0.0);
glVertex3f (4.0, 5.0, 0.0);
glVertex3f (4.0, 6.0, 0.0);
glVertex3f (3.0, 6.0, 0.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (1.0, 7.0, 0.0);
glVertex3f (4.0, 7.0, 0.0);
glVertex3f (4.0, 8.0, 0.0);
glVertex3f (1.0, 8.0, 0.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 9.0, 0.0);
glVertex3f (5.0, 9.0, 0.0);
glVertex3f (5.0, 9.0, 3.0);
glVertex3f (0.0, 9.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_LINE_LOOP);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 9.0, 0.0);
glVertex3f (0.0, 9.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();



}


void display(){

glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(tx,ty,0.0f);
glScalef(escala, escala, escala);
glRotatef(ax, 1.0f, 0.0f, 0.0f);
glRotatef(ay, 0.0f, 1.0f, 0.0f);
DibujaCPU();
glFlush();
glutSwapBuffers();
ax+=0.1f;
ay+=0.1f;
}
void init(){
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
}
void idle()
{
display();
}
void Teclado(unsigned char key, int x, int y){ 
switch (key){
case 'a'://presionar tecla a
if( ty<10.0 ){ty = ty + 1.0;}//se mueve  en y positivo(arriba)
if(ty>0.1 && ty<4){escala = ty;}//y aumenta 
break;
case 'b'://presionar tecla b
if( ty>-10.0 ){ty = ty - 1.0;}//se mueve  en y negatibo(abajo)
if(ty>0.1 && ty<4){escala = ty;}//y disminuye 
break;
case 'd'://presionar tecla d 
if( tx<10.0 ){tx = tx + 1.0;}//se mueve  en x positivo(Derecha) 
break;
case 'i'://presionar tecla i
if( tx>-10.0 ){tx = tx - 1.0;}//se mueve en x negativo(Izquierda)
break;

}
switch (key) {
case 27:
exit(0);
break;
}
}
int main(int argc, char **argv) 
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(400,200);
glutInitWindowSize(800,500);
glutCreateWindow("Ruben De La Cruz Venegas");
init();glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutKeyboardFunc(Teclado);
glutMainLoop();
return 0;}




CODIGO  openGL(CPU solido)



#include <GL/glut.h>

GLfloat tx= 1.0f;
GLfloat ty = 1.0f;
GLfloat ax = 0.0f;
GLfloat ay = 0.0f;
GLfloat escala = 1.0f;

void reshape(int width, int height){
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15,15,-15,15,-15,15);
glMatrixMode(GL_MODELVIEW);

}

void DibujaCPU(void)
{
glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 0.0);
glVertex3f (5.0, 9.0, 0.0);
glVertex3f (0.0, 9.0, 0.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (5.0, 0.0, 3.0);
glVertex3f (5.0, 9.0, 3.0);
glVertex3f (0.0, 9.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (3.0, 5.0, 0.0);
glVertex3f (4.0, 5.0, 0.0);
glVertex3f (4.0, 6.0, 0.0);
glVertex3f (3.0, 6.0, 0.0);
glEnd();

glColor3f (0.0, 0.0, 0.0);
glBegin(GL_POLYGON);
glVertex3f (1.0, 7.0, 0.0);
glVertex3f (4.0, 7.0, 0.0);
glVertex3f (4.0, 8.0, 0.0);
glVertex3f (1.0, 8.0, 0.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (0.0, 9.0, 0.0);
glVertex3f (5.0, 9.0, 0.0);
glVertex3f (5.0, 9.0, 3.0);
glVertex3f (0.0, 9.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 0.0);
glVertex3f (5.0, 0.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();

glColor3f (0.25, 0.25, 0.25);
glBegin(GL_POLYGON);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 9.0, 0.0);
glVertex3f (0.0, 9.0, 3.0);
glVertex3f (0.0, 0.0, 3.0);
glEnd();



}


void display(){

glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(tx,ty,0.0f);
glScalef(escala, escala, escala);
glRotatef(ax, 1.0f, 0.0f, 0.0f);
glRotatef(ay, 0.0f, 1.0f, 0.0f);
DibujaCPU();
glFlush();
glutSwapBuffers();
ax+=0.1f;
ay+=0.1f;
}
void init(){
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
}
void idle()
{
display();
}
void Teclado(unsigned char key, int x, int y){
switch (key){
case 'a'://presionar tecla a
if( ty<10.0 ){ty = ty + 1.0;}//se mueve  en y positivo(arriba)
if(ty>0.1 && ty<4){escala = ty;}//y aumenta
break;
case 'b'://presionar tecla b
if( ty>-10.0 ){ty = ty - 1.0;}//se mueve  en y negatibo(abajo)
if(ty>0.1 && ty<4){escala = ty;}//y disminuye
break;
case 'd'://presionar tecla d
if( tx<10.0 ){tx = tx + 1.0;}//se mueve  en x positivo(Derecha)
break;
case 'i'://presionar tecla i
if( tx>-10.0 ){tx = tx - 1.0;}//se mueve en x negativo(Izquierda)
break;

}
switch (key) {
case 27:
exit(0);
break;
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(400,200);
glutInitWindowSize(800,500);
glutCreateWindow("Ruben De La Cruz Venegas");
init();glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutKeyboardFunc(Teclado);
glutMainLoop();
return 0;}





U3 Actividad 1-Modelos Geometricos

MODELOS GEOMÉTRICOS
Los modelos gráficos también se le conocen como modelos geométricos, debido a que las partes componentes de un sistema se representan con entidades geométricas como líneas, polígonos o circunferencias de modo que el término modelo se refiere a una representación geométrica generada por la computadora.
EJEMPLOS
Formas entre los que se puede representar un modelo geométrico:
  • Distribución espacial y forma de los componentes y otros componentes que afectan a la apariencia de los componentes.
  • Conectividad de los componentes.
  • Los valores de datos específicos para la aplicación. 







MODELADO DE SUPERFICIE
Es la estimación de los valores de una superficie en cualquiera de sus puntos, partiendo de un conjunto de datos de muestreo (x, y, z), denominados puntos de control.
Existen dos enfoques para la presentación de la superficie externa del objeto:  
1  El objeto se representa con una lista de facetas, descritas por los lados y las aristas que la delimitan. La lista de caras puede incluir solamente informaciones geométricas propias de cada faceta (tamaño, posición respecto a un origen, etc.), o puede estar estructurada en un conjunto más complejo, donde los nodos de tipo “cara” se ligan a los nodos arista a través de los nodos “lados”. Estas conexiones pueden presentarse en forma de gráficas o de una estructura de árbol.
2  El objeto se representa empleando superficies de “forma libre”, que el usuario manipula interactivamente a través de puntos llamados de “control”. Se utiliza una superficie representada por ecuaciones paramétricas, que efectúa una aproximación de la envoltura exterior del objeto. Estas ecuaciones paramétricas dan como resultado una malla de elementos finitos de forma específica (generalmente cuadrados o triangulares) y utilizan puntos característicos para cambiar la forma final de la superficie. El modelo algebraico describe un sólido a partir de su frontera. (Conjunto de superficies que separa el sólido de la parte del espacio no ocupada por el).
La frontera se puede ver como la piel del sólido. Obviamente cualquier superficie no determina un sólido. Para que un conjunto de superficies describan un sólido deben satisfacer la siguiente propiedad.
Para que el sólido sea representable se suele imponer una condición adicional de suavidad en su frontera, más concretamente se suele exigir que la frontera sea algebraica (o al menos analítica). Esto es, debe ser representable por un polinomio de grado finito. Este modelo nos permite utilizar representaciones de los sólidos basadas el almacenamiento de la frontera, que es una entidad bidimensional.
El modelado con superficies permite al usuario obtener una mayor precisión geométrica y un gran realismo cuando desean obtenerse diseños de productos basados en geometrías complejas. 
EJEMPLO modelacion solidworks




MODELADO DE SÓLIDO
El Modelado Sólido es una rama relativamente reciente del Modelado Geométrico, que hace hincapié en la aplicabilidad general de los modelos, e insiste en crear solamente modelos "completos" de los sólidos, es decir, modelos que son adecuados para responder algorítmicamente (sin la ayuda externa del usuario) a cualquier pregunta geométrica que se formule.
Métodos de representación:
Instanciación de primitivas. El modelo se representa como un conjunto de primitivas que se instancian en el espacio. Para pode realizar cálculos es necesario que las diferentes instancias no se solapen en el espacio. El dominio depende del repertorio de primitivas.
Barrido (sweep). Se puede ver como una generalización de los métodos de desarrollo de superficies a partir de curvas. El elemento a desplazar es ahora una superficie, que describe un volumen al desplazarse a lo largo de una trayectoria o al rotarse.
Descomposición. El sólido se describe en base a una descomposición del espacio en una colección de elementos simples disjuntos, celdas (por ejemplo tetraedros o cubos). La representación de un sólido es el conjunto de celdas que ocupa.
Fronteras. El sólido se representa mediante un conjunto de caras que describen su frontera. La mayor parte de los sistemas utilizan representaciones de fronteras, con caras poligonales.
EJM