Manual de actividades

480 views

Published on

Manual de actividades del segundo parcial .

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
480
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Manual de actividades

  1. 1. Cecytem Plantel Tecámac Alejandra Martínez Valero Sandy Moreno Rosas Manual de prácticas Grupo: 303 René Domínguez Escalona
  2. 2. IntroducciónOpenGL es una interface de software para el hardware grafico, esta interface consiste deuna larga serie de comandos para manipulacion de objetos y operaciones sobre estos loscuales permiten controlar la implentacion realizada en la forma de una maquina deestados finitos, donde cada una de las variables que determinan el estado se aplican apartir de ese punto hasta que se indique explicitmanete el cambio, asi las variables deestado de OpenGL que vamos a utilizar mas comunmente son:• Color (de dibujo y de borrado).• Matrices de Transformacion (GL_MODELVIEW, GL_PROYECTION).• Patrones (de lineas y de relleno).• Modo de dibujo de poligonos.• Buffers de dibujo.• Buffer de Stencil.• Buffer de profundidad (z-Buffer).• Buffer de acumulacion.Funcionamiento de OpenGL:Para poder trabajar con OpenGL, primero se debe crear un contexto de trabajo, estecontexto contiene el estado actual de maquina finita, asi como las referencias a losdiferentes buffers de trabajo, estos buffers se pueden ver como zonas de memoriacorrespondiendo a la pantalla en las cuales OpenGL va a dibujar, en general a parte delbuffer de color (GL_COLOR_BUFFER) que es el buffer en el cual se van a dibujar lasprimitivas, existen otro tipo de buffers mas especializados. La configuracion en memoriade estos buffers (cuantos bits representan un pixel, etc) depende de la manera como fuecreado el contexto OpenGL y de las limitaciones del hardware, por esto no se puedeacceder directamente sino solo a traves de las primitivas OpenGL.OpenGL puede funcionar adicionalmente de dos maneras, de modo directo o indirecto:• Modo directo: las primitivas se van dibujando a medida que se van definiendo.Instruccion -> Buffer de Color = Pantalla
  3. 3. • Modo indirecto: las primitivas se guardan en una lista y solo se dibujan cuando elusuario decida o lalista este llena, esto permite optimizar la fase de dibujo.Instruccion-> Pila de instrucciones-> flush -> Buffer de Color = PantallaEn este modo cuando se desea que OpenGL pinte lo que esta en la lista se utiliza lainstruccion glFlush(): esta instruccion obliga a pintar y no espera a que el hardawretermine para continuar con el programa, analogamente la glFinish() obliga a pintar peroespera a que el hw termine antes de continuar con el programa.En el modo indirecto, OpenGL permite definir dos buffers de colores (doublebuffer), asi unbuffer corresponde a lo que se ve en pantalla y otro a el buffer donde se esta pintando, deesta manera una vez que se ha pintado todo lo deseado y se quiere que esto aparezca enpantalla se intercambian los buffers, esta instruccion depende del sistema operativo paraesto se utilizara la instruccion de la libreria portable glut:glutSwapBuffers() (esta ejecuta implicitamente glFlush o glFinish), en este modo glFlush yglFinishobligan a pintar en el buffer de dibujo pero esto NO sera visible hasta intercambiar buffers.Primitivas de dibujo :En OpenGL solo se pueden dibujar primitivas muy simples, tales como puntos lineas,cuadrados, triangulos y polygonos, a partir de estas primitivas es posible construirprimitivas mas complejas como arcos y circulos aproximandolos por poligonos.Toda primitiva de dibujo se construye con un par: glBegin(tipo_de_primitiva); glVertex2f();... glEnd();donde tipo_de_primitiva puede ser cualquiera de las siguientes:GL_POINTS: Cada vertice es un puntoGL_LINES: Cada par de vertices sucesivos es una lineaGL_LINE_STRIP: lineas conectadas.GL_LINE_LOOP: lineas conectadas donde el ultimo y el primer vertice indican una lineacerrando el poligono.GL_POLYGON: poligono (relleno o no) donde los vertices sucesivos componiendolo sedan el sentido contrario de las manecillas del reloj.GL_QUADS: cuadrilateros separados, cada 4 vertices hacen un quad.
  4. 4. GL_QUAD_STRIP: tira de cuadrados unidos, cada par de vertices sucesivos forman uncuadrado con el par anterior.GL_TRIANGLES: Triangulos separados, cada 3 vertices hacen un triangulo.GL_TRIANGLE_STRIP: tira de triangulos unidos (similara quad_strip).GL_TRIANGLE_FAN: Grupo de triangulos con un unico vertice comun a todos.
  5. 5. INDICE1. Tablero de Ajedrez2. Estrella3. Cubo con Líneas4. Cubo Delineado5. Muñeco con Triángulos6. Casita7. Oso8. Cubo con Cubitos9. Muñeco con formas10.Animación de Circulo rotando11.Sistema Solar12.Movimiento en Ocho13.Semáforo14.Cubo 3D con Líneas15.Pirámide16.Nombre 3D
  6. 6. 1. Tablero de AjedrezEn esta práctica aprendimos a colocar cuadros con coordenadas un cuadrosobre otro y le cambiamos el color a modo de que pareciera un tablero deajedrez.CODIGO://mi primer ventana#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(1.0,1.0,0.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(100,100);glVertex2i(347,100);glVertex2i(597,100);glVertex2i(848,100);glVertex2i(220,220);glVertex2i(473,220);glVertex2i(723,220);glVertex2i(970,220);glVertex2i(100,340);glVertex2i(347,340);glVertex2i(597,340);glVertex2i(848,340);glVertex2i(220,460);glVertex2i(473,460);glVertex2i(723,460);glVertex2i(970,460);glVertex2i(100,580);glVertex2i(347,580);glVertex2i(597,580);
  7. 7. glVertex2i(848,580);glVertex2i(220,700);glVertex2i(473,700);glVertex2i(723,700);glVertex2i(970,700);glVertex2i(100,820);glVertex2i(347,820);glVertex2i(597,820);glVertex2i(848,820);glEnd();glColor3f(1.0 , 1.0 , 1.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(220,100);glVertex2i(473,100);glVertex2i(723,100);glVertex2i(970,100);glVertex2i(100,220);glVertex2i(347,220);glVertex2i(597,220);glVertex2i(848,220);glVertex2i(220,340);glVertex2i(473,340);glVertex2i(723,340);glVertex2i(970,340);glVertex2i(100,460);glVertex2i(347,460);glVertex2i(597,460);glVertex2i(848,460);glVertex2i(220,580);glVertex2i(473,580);glVertex2i(723,580);glVertex2i(970,580);glVertex2i(100,700);glVertex2i(347,700);glVertex2i(597,700);glVertex2i(848,700);glVertex2i(220,820);glVertex2i(473,820);glVertex2i(723,820);glVertex2i(970,820);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  8. 8. 2. EstrellaEn esta practica vimos como juntar puntos para realizar una figura en estecaso una estrella.CODIGO://mi primer ventana#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(1.0,0.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glBegin(GL_LINES);glVertex2i(400,700);glVertex2i(700,100);glVertex2i(700,100);glVertex2i(100,500);glVertex2i(100,500);glVertex2i(800,500);glVertex2i(800,500);glVertex2i(200,100);glVertex2i(200,100);glVertex2i(400,700);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero
  9. 9. 3. Cubo con líneasEn esta practica veremos como realizar un cubo con líneas de tal modo de que se vean todas las líneas sin delineado ni clores que obstruyan la vista de todas las líneas que componen el cubo.CODIGO: //CUBO CON LINEAS #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor(0.0,0.0,1.0,0.0); //color de fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0 ,0.0 ,1.0 ); glBegin(GL_LINES); glVertex2i(100,100); glVertex2i(100,400); glVertex2i(100,100); glVertex2i(400,100); glVertex2i(400,100); glVertex2i(400,400); glVertex2i(400,400); glVertex2i(100,400); glVertex2i(100,100); glVertex2i(300,300); glVertex2i(100,400); glVertex2i(300,600); glVertex2i(300,300); glVertex2i(300,600); glVertex2i(300,300); glVertex2i(600,300); glVertex2i(600,600); glVertex2i(600,300); glVertex2i(600,600); glVertex2i(300,600); glVertex2i(600,600); glVertex2i(400,400); glVertex2i(600,300); glVertex2i(400,100);
  10. 10. glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  11. 11. 4. Cubo DelineadoEn esta practica aprendimos a hacer un cubo con colores es decir que solo se ventres partes del cubo y bien marcadas sus líneas.CODIGO: //cubo delineado #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor(0.0,0.0,1.0,0.0); //color de fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion
  12. 12. glLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_QUADS);glColor3f(0.0,1.0,1.0);glVertex2i(100,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(200,100);glColor3f(0.0,1.0,0.0);glVertex2i(200,100);glVertex2i(200,200);glVertex2i(250,250);glVertex2i(250,150);glColor3f(1.0,0.0,0.0);glVertex2i(250,250);glVertex2i(150,250);glVertex2i(100,200);glVertex2i(200,200);glEnd();glLineWidth(3);glBegin(GL_LINES);glColor3f(0.0,0.0,0.0);glVertex2i(100,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(200,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(100,100);glVertex2i(200,100);glVertex2i(200,200);glVertex2i(200,100);glVertex2i(100,200);glVertex2i(150,250);glVertex2i(200,200);glVertex2i(250,250);glVertex2i(200,100);glVertex2i(250,150);glVertex2i(150,250);glVertex2i(250,250);glVertex2i(250,250);glVertex2i(250,150);glEnd();
  13. 13. glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  14. 14. 5. Muñeco con triángulosEn esta practica utilizamos varias figuras geométricas como lo que son triángulos, círculos, cuadrados, rectángulos para crear un muñeco utilizando dichas figuras.CODIGO:#include <GL/glut.h>
  15. 15. #include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(1.0,1.0,1.0,1.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0,500.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 ,0.0,1.0);glBegin(GL_QUADS);glVertex2i(0,500);glVertex2i(500,500);glVertex2i(500,114);glVertex2i(0,114);glColor3f(0.1 , 1.0 , 0.1);glVertex2i(0,115);glVertex2i(0,0);glVertex2i(500,0);glVertex2i(500,115);glEnd();glColor3f(2.0 , 1.0 , 2.0);glLineWidth(4);glBegin(GL_TRIANGLES);glVertex2i(184,405);glVertex2i(314,405);
  16. 16. glVertex2i(250,468);glColor3f(0.9 , 0.0 , 1.0);glVertex2i(215,405);glVertex2i(287,405);glVertex2i(250,335);glColor3f(1.9 , 1.7 , 3.0);glVertex2i(239,335);glVertex2i(261,335);glVertex2i(250,314);glEnd();glBegin(GL_QUADS);glColor3f(0.0 , 1.0 , 1.0);glVertex2i(208,335);glVertex2i(292,335);glVertex2i(293,241);glVertex2i(208,241);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.0 , 0.7 , 0.5);glVertex2i(239,335);glVertex2i(261,335);glVertex2i(250,314);glColor3f(1.0 , 0.2 , 0.0);glVertex2i(208,335);glColor3f(1.0 , 1.0 , 3.0);glVertex2i(170,241);glColor3f(5.0 , 1.0 , 5.0);glVertex2i(160,279);
  17. 17. glColor3f(1.0 , 0.7 , 1.0);glVertex2i(160,279);glColor3f(0.0 , 1.0 , 0.9);glVertex2i(151,298);glColor3f(0.0 , 0.3 , 1.0);glVertex2i(142,260);glColor3f(0.9 , 0.2 , 0.4);glVertex2i(329,240);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(339,279);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(293,335);glColor3f(0.1 , 0.8 , 0.4);glVertex2i(348,297);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(357,259);glVertex2i(339,279);glColor3f(1.0 , 0.9 , 0.6);glVertex2i(333,326);glVertex2i(391,326);glVertex2i(362,247);glColor3f(0.7 , 0.7 , 0.9);glVertex2i(362,250);glVertex2i(348,326);glVertex2i(341,322);glColor3f(0.4 , 0.6 , 0.8);
  18. 18. glVertex2i(377,326);glVertex2i(384,322);glVertex2i(364,250);glColor3f(0.4 , 0.6 , 0.4);glVertex2i(239,241);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(239,96);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(214,210);glColor3f(1.0 , 0.0 , 0.0);glVertex2i(238,95);glVertex2i(195,96);glVertex2i(213,117);glColor3f(0.9 , 0.7 , 0.5);glVertex2i(256,241);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(256,210);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(299,210);glColor3f(0.9 , 0.7 , 0.5);glVertex2i(299,210);glVertex2i(282,189);glVertex2i(290,158);glColor3f(1.0 , 0.0 , 0.3);
  19. 19. glVertex2i(292,158);glVertex2i(316,178);glVertex2i(333,158);glColor3f(0.9 , 1.0 , 0.0);glVertex2i(308,158);glVertex2i(308,143);glVertex2i(293,143);glVertex2i(322,158);glVertex2i(322,143);glVertex2i(337,143);glVertex2i(337,128);glVertex2i(322,128);glVertex2i(322,113);glVertex2i(308,128);glVertex2i(308,113);glVertex2i(293,128);glColor3f(1.0 , 0.9 , 1.0);glVertex2i(362,246);glVertex2i(383,239);glVertex2i(341,239);glEnd();glBegin(GL_QUADS);glColor3f(1.0 , 2.0 , 1.0);glVertex2i(308,128);glVertex2i(322,128);glVertex2i(322,113);glVertex2i(308,113);glVertex2i(308,128);
  20. 20. glColor3f(1.0 , 4.0 , 1.0);glVertex2i(308,143);glVertex2i(322,143);glVertex2i(322,128);glVertex2i(322,143);glVertex2i(322,128);glVertex2i(337,128);glVertex2i(337,143);glVertex2i(322,143);glVertex2i(322,157);glVertex2i(308,157);glVertex2i(308,143);glVertex2i(308,143);glVertex2i(308,128);glVertex2i(293,128);glVertex2i(293,143);glEnd();glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUT
  21. 21. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(900,900); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("Muñeco con triangulos"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  22. 22. 6. OsoEn esta practica realizamos un oso con círculos y una línea es muy fácil sabiendoacomodar correctamente los círculos.CODIGO:
  23. 23. #include <GL/glut.h>#include <GL/gl.h>#include <math.h>void inicializa(void){glClearColor(1.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal}void circuloc(int x, int y, int t, int radio){ int angulo=0; glPointSize(t); glBegin(GL_POINTS);//glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN);// glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}
  24. 24. glEnd();}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.6,0.4,0.2);//Oso //borra pantallacirculo(250,250,200);//piescirculo(100,100,50);circulo(400,100,50);// Manoscirculo(50,300,50);circulo(450,300,50);//Cabezacirculo(250,350,150);//orejascirculo(400,450,50);circulo(100,450,50);//ojosglColor3f(0.0,.0,0.0);circulo(200,450,20);circulo(300,450,20);//narizcirculo(260,370,25);glEnd();glLineWidth(50);glBegin(GL_LINES);
  25. 25. glColor3f(0.0,0.0,0.0);glVertex2i(200,325);glVertex2i(350,325);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(50,50); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  26. 26. 7. Cubo con cubitos Para esta practica se necesita el cubo delineado de la practica anterior ya que lotienes en necesario saber acomodar bien los demás cubos ya que en esta practicaya es necesaria la combinación de formulas para poder hacer el cubo. También es necesario definir las instrucciones al principio del programa de lo contrario no compilara.
  27. 27. CODIGO:#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.5,0.0,.6,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 4000.0, 0.0,4000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{int i,a=100;glClear(GL_COLOR_BUFFER_BIT);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);
  28. 28. //izquierdaglVertex2i(700,600+a*i);glVertex2i(700,700+a*i);//arrivaglVertex2i(750,750+a*i);//derechaglVertex2i(750,650+a*i);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,600+a*i);glVertex2i(600,700+a*i);//arrivaglVertex2i(700,700+a*i);//derechaglVertex2i(700,600+a*i);//abajoglEnd();glColor3f(.0 ,.0 ,.0 );
  29. 29. glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,700+a*i);glVertex2i(650,750+a*i);//arrivaglVertex2i(750,750+a*i);//derechaglVertex2i(700,700+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(600,600+a*i);glVertex2i(600,700+a*i);//arrivaglVertex2i(600,700+a*i);glVertex2i(700,700+a*i);//derechaglVertex2i(700,700+a*i);glVertex2i(700,600+a*i);//abajoglVertex2i(700,600+a*i);
  30. 30. glVertex2i(600,600+a*i);//diagonal derecha esquina arrivaglVertex2i(650,750+a*i);glVertex2i(600,700+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(650,750+a*i);glVertex2i(750,750+a*i);//linea derecha atrasglVertex2i(750,750+a*i);glVertex2i(750,650+a*i);//linea abajo derecha diagonalglVertex2i(700,600+a*i);glVertex2i(750,650+a*i);//linea arriva derecha diagonalglVertex2i(700,700+a*i);glVertex2i(750,750+a*i);glEnd();}////////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){
  31. 31. glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,1600);glVertex2i(1700,1700);//arrivaglVertex2i(1750,1750);//derechaglVertex2i(1750,1650);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,1600);glVertex2i(1600-a*i,1700);//arrivaglVertex2i(1700-a*i,1700);//derechaglVertex2i(1700-a*i,1600);//abajo
  32. 32. glEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,1700);glVertex2i(1650-a*i,1750);//arrivaglVertex2i(1750-a*i,1750);//derechaglVertex2i(1700-a*i,1700);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1600-a*i,1600);glVertex2i(1600-a*i,1700);//arrivaglVertex2i(1600-a*i,1700);glVertex2i(1700-a*i,1700);//derecha
  33. 33. glVertex2i(1700-a*i,1700);glVertex2i(1700-a*i,1600);//abajoglVertex2i(1700-a*i,1600);glVertex2i(1600-a*i,1600);//diagonal derecha esquina arrivaglVertex2i(1650-a*i,1750);glVertex2i(1600-a*i,1700);//linea cuadro atras//linea cuadro atrasglVertex2i(1650-a*i,1750);glVertex2i(1750-a*i,1750);//linea derecha atrasglVertex2i(1750,1750);glVertex2i(1750,1650);//linea abajo derecha diagonalglVertex2i(1700,1600);glVertex2i(1750,1650);//linea arriva derecha diagonalglVertex2i(1700-a*i,1700);glVertex2i(1750-a*i,1750);glEnd();}
  34. 34. ///////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,600);glVertex2i(1700,700);//arrivaglVertex2i(1750,750);//derechaglVertex2i(1750,650);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,600);glVertex2i(1600-a*i,700);//arriva
  35. 35. glVertex2i(1700-a*i,700);//derechaglVertex2i(1700-a*i,600);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,700);glVertex2i(1650-a*i,750);//arrivaglVertex2i(1750-a*i,750);//derechaglVertex2i(1700-a*i,700);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1600-a*i,600);
  36. 36. glVertex2i(1600-a*i,700);//arrivaglVertex2i(1600-a*i,700);glVertex2i(1700-a*i,700);//derechaglVertex2i(1700-a*i,700);glVertex2i(1700-a*i,600);//abajoglVertex2i(1700-a*i,600);glVertex2i(1600-a*i,600);//diagonal derecha esquina arrivaglVertex2i(1650-a*i,750);glVertex2i(1600-a*i,700);//linea cuadro atras//linea cuadro atrasglVertex2i(1650-a*i,750);glVertex2i(1750-a*i,750);//linea derecha atrasglVertex2i(1750,750);glVertex2i(1750,650);//linea abajo derecha diagonalglVertex2i(1700,600);glVertex2i(1750,650);//linea arriva derecha diagonalglVertex2i(1700-a*i,700);glVertex2i(1750-a*i,750);
  37. 37. glEnd();}//////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,600+a*i);glVertex2i(1700,700+a*i);//arrivaglVertex2i(1750,750+a*i);//derechaglVertex2i(1750,650+a*i);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);
  38. 38. //cuadro//izquierdaglVertex2i(1600,600+a*i);glVertex2i(1600,700+a*i);//arrivaglVertex2i(1700,700+a*i);//derechaglVertex2i(1700,600+a*i);//abajoglEnd();glColor3f(0.0 ,6.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600,700+a*i);glVertex2i(1650,750+a*i);//arrivaglVertex2i(1750,750+a*i);//derechaglVertex2i(1700,700+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);
  39. 39. glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1600,600+a*i);glVertex2i(1600,700+a*i);//arrivaglVertex2i(1600,700+a*i);glVertex2i(1700,700+a*i);//derechaglVertex2i(1700,700+a*i);glVertex2i(1700,600+a*i);//abajoglVertex2i(1700,600+a*i);glVertex2i(1600,600+a*i);//diagonal derecha esquina arrivaglVertex2i(1650,750+a*i);glVertex2i(1600,700+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(1650,750+a*i);glVertex2i(1750,750+a*i);//linea derecha atrasglVertex2i(1750,750+a*i);glVertex2i(1750,650+a*i);//linea abajo derecha diagonalglVertex2i(1700,600+a*i);glVertex2i(1750,650+a*i);//linea arriva derecha diagonal
  40. 40. glVertex2i(1700,700+a*i);glVertex2i(1750,750+a*i);glEnd();}//////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200+(50*i),100+(50*i));glVertex2i(200+(50*i),200+(50*i));//arrivaglVertex2i(250+(50*i),250+(50*i));//derechaglVertex2i(250+(50*i),150+(50*i));glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);
  41. 41. glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,100);glVertex2i(100,200);//arrivaglVertex2i(200,200);//derechaglVertex2i(200,100);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100+(50*i),200+(50*i));glVertex2i(150+(50*i),250+(50*i));//arrivaglVertex2i(250+(50*i),250+(50*i));//derechaglVertex2i(200+(50*i),200+(50*i));//abajoglEnd();//cuadro
  42. 42. glColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,100);glVertex2i(100,200);//arrivaglVertex2i(100+(50*i),200+(50*i));glVertex2i(200+(50*i),200+(50*i));//derechaglVertex2i(200+(50*i),200+(50*i));glVertex2i(200+(50*i),100+(50*i));//abajoglVertex2i(200,100);glVertex2i(100,100);//diagonal derecha esquina arrivaglVertex2i(150+(50*i),250+(50*i));glVertex2i(100+(50*i),200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(150+(50*i),250+(50*i));glVertex2i(250+(50*i),250+(50*i));//linea derecha atrasglVertex2i(250+(50*i),250+(50*i));glVertex2i(250+(50*i),150+(50*i));//linea abajo derecha diagonalglVertex2i(200+(50*i),100+(50*i));
  43. 43. glVertex2i(250+(50*i),150+(50*i));//linea arriva derecha diagonalglVertex2i(200+(50*i),200+(50*i));glVertex2i(250+(50*i),250+(50*i));glEnd();}///////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200+(50*i),100+(50*i));glVertex2i(1200+(50*i),200+(50*i));//arrivaglVertex2i(1250+(50*i),250+(50*i));//derechaglVertex2i(1250+(50*i),150+(50*i));glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);
  44. 44. glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,100);glVertex2i(1100,200);//arrivaglVertex2i(1200,200);//derechaglVertex2i(1200,100);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100+(50*i),200+(50*i));glVertex2i(1150+(50*i),250+(50*i));//arrivaglVertex2i(1250+(50*i),250+(50*i));//derechaglVertex2i(1200+(50*i),200+(50*i));//abajoglEnd();//cuadro
  45. 45. glColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,100);glVertex2i(1100,200);//arrivaglVertex2i(1100+(50*i),200+(50*i));glVertex2i(1200+(50*i),200+(50*i));//derechaglVertex2i(1200+(50*i),200+(50*i));glVertex2i(1200+(50*i),100+(50*i));//abajoglVertex2i(1200,100);glVertex2i(1100,100);//diagonal derecha esquina arrivaglVertex2i(1150+(50*i),250+(50*i));glVertex2i(1100+(50*i),200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(1150+(50*i),250+(50*i));glVertex2i(1250+(50*i),250+(50*i));//linea derecha atrasglVertex2i(1250+(50*i),250+(50*i));glVertex2i(1250+(50*i),150+(50*i));//linea abajo derecha diagonalglVertex2i(1200+(50*i),100+(50*i));
  46. 46. glVertex2i(1250+(50*i),150+(50*i));//linea arriva derecha diagonalglVertex2i(1200+(50*i),200+(50*i));glVertex2i(1250+(50*i),250+(50*i));glEnd();}////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200+(50*i),1100+(50*i));glVertex2i(200+(50*i),1200+(50*i));//arrivaglVertex2i(250+(50*i),1250+(50*i));//derechaglVertex2i(250+(50*i),1150+(50*i));glEnd();glColor3f(1.0 ,0.0 ,1.0 );
  47. 47. glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,1100);glVertex2i(100,1200);//arrivaglVertex2i(200,1200);//derechaglVertex2i(200,1100);//abajoglEnd();glColor3f(0.0 ,11.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100+(50*i),1200+(50*i));glVertex2i(150+(50*i),1250+(50*i));//arrivaglVertex2i(250+(50*i),1250+(50*i));//derechaglVertex2i(200+(50*i),1200+(50*i));//abajoglEnd();
  48. 48. //cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,1100);glVertex2i(100,1200);//arrivaglVertex2i(100+(50*i),1200+(50*i));glVertex2i(200+(50*i),1200+(50*i));//derechaglVertex2i(200+(50*i),1200+(50*i));glVertex2i(200+(50*i),1100+(50*i));//abajoglVertex2i(200,1100);glVertex2i(100,1100);//diagonal derecha esquina arrivaglVertex2i(150+(50*i),1250+(50*i));glVertex2i(100+(50*i),1200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(150+(50*i),1250+(50*i));glVertex2i(250+(50*i),1250+(50*i));//linea derecha atrasglVertex2i(250+(50*i),1250+(50*i));glVertex2i(250+(50*i),1150+(50*i));//linea abajo derecha diagonal
  49. 49. glVertex2i(200+(50*i),1100+(50*i));glVertex2i(250+(50*i),1150+(50*i));//linea arriva derecha diagonalglVertex2i(200+(50*i),1200+(50*i));glVertex2i(250+(50*i),1250+(50*i));glEnd();}////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200+(50*i),1100+(50*i));glVertex2i(1200+(50*i),1200+(50*i));//arrivaglVertex2i(1250+(50*i),1250+(50*i));//derechaglVertex2i(1250+(50*i),1150+(50*i));glEnd();glColor3f(1.0 ,0.0 ,1.0 );
  50. 50. glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,1100);glVertex2i(1100,1200);//arrivaglVertex2i(1200,1200);//derechaglVertex2i(1200,1100);//abajoglEnd();glColor3f(0.0 ,11.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100+(50*i),1200+(50*i));glVertex2i(1150+(50*i),1250+(50*i));//arrivaglVertex2i(1250+(50*i),1250+(50*i));//derechaglVertex2i(1200+(50*i),1200+(50*i));//abajoglEnd();
  51. 51. //cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,1100);glVertex2i(1100,1200);//arrivaglVertex2i(1100+(50*i),1200+(50*i));glVertex2i(1200+(50*i),1200+(50*i));//derechaglVertex2i(1200+(50*i),1200+(50*i));glVertex2i(1200+(50*i),1100+(50*i));//abajoglVertex2i(1200,1100);glVertex2i(1100,1100);//diagonal derecha esquina arrivaglVertex2i(1150+(50*i),1250+(50*i));glVertex2i(1100+(50*i),1200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(1150+(50*i),1250+(50*i));glVertex2i(1250+(50*i),1250+(50*i));//linea derecha atrasglVertex2i(1250+(50*i),1250+(50*i));glVertex2i(1250+(50*i),1150+(50*i));//linea abajo derecha diagonal
  52. 52. glVertex2i(1200+(50*i),1100+(50*i));glVertex2i(1250+(50*i),1150+(50*i));//linea arriva derecha diagonalglVertex2i(1200+(50*i),1200+(50*i));glVertex2i(1250+(50*i),1250+(50*i));glEnd();}//////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200,100+a*i);glVertex2i(200,200+a*i);//arrivaglVertex2i(250,250+a*i);//derechaglVertex2i(250,150+a*i);
  53. 53. glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,100+a*i);glVertex2i(100,200+a*i);//arrivaglVertex2i(200,200+a*i);//derechaglVertex2i(200,100+a*i);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,200+a*i);glVertex2i(150,250+a*i);//arrivaglVertex2i(250,250+a*i);
  54. 54. //derechaglVertex2i(200,200+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,100+a*i);glVertex2i(100,200+a*i);//arrivaglVertex2i(100,200+a*i);glVertex2i(200,200+a*i);//derechaglVertex2i(200,200+a*i);glVertex2i(200,100+a*i);//abajoglVertex2i(200,100+a*i);glVertex2i(100,100+a*i);//diagonal derecha esquina arrivaglVertex2i(150,250+a*i);glVertex2i(100,200+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(150,250+a*i);glVertex2i(250,250+a*i);//linea derecha atras
  55. 55. glVertex2i(250,250+a*i);glVertex2i(250,150+a*i);//linea abajo derecha diagonalglVertex2i(200,100+a*i);glVertex2i(250,150+a*i);//linea arriva derecha diagonalglVertex2i(200,200+a*i);glVertex2i(250,250+a*i);glEnd();}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,1100);glVertex2i(1200,1200);//arrivaglVertex2i(1250,1250);
  56. 56. //derechaglVertex2i(1250,1150);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,1100);glVertex2i(1100-a*i,1200);//arrivaglVertex2i(1200-a*i,1200);//derechaglVertex2i(1200-a*i,1100);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,1200);
  57. 57. glVertex2i(1150-a*i,1250);//arrivaglVertex2i(1250-a*i,1250);//derechaglVertex2i(1200-a*i,1200);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100-a*i,1100);glVertex2i(1100-a*i,1200);//arrivaglVertex2i(1100-a*i,1200);glVertex2i(1200-a*i,1200);//derechaglVertex2i(1200-a*i,1200);glVertex2i(1200-a*i,1100);//abajoglVertex2i(1200-a*i,1100);glVertex2i(1100-a*i,1100);//diagonal derecha esquina arrivaglVertex2i(1150-a*i,1250);glVertex2i(1100-a*i,1200);//linea cuadro atras//linea cuadro atras
  58. 58. glVertex2i(1150-a*i,1250);glVertex2i(1250-a*i,1250);//linea derecha atrasglVertex2i(1250,1250);glVertex2i(1250,1150);//linea abajo derecha diagonalglVertex2i(1200,1100);glVertex2i(1250,1150);//linea arriva derecha diagonalglVertex2i(1200-a*i,1200);glVertex2i(1250-a*i,1250);glEnd();}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,1.0 ,0.0 );
  59. 59. glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,100);glVertex2i(1200,200);//arrivaglVertex2i(1250,250);//derechaglVertex2i(1250,150);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,100);glVertex2i(1100-a*i,200);//arrivaglVertex2i(1200-a*i,200);//derechaglVertex2i(1200-a*i,100);//abajo
  60. 60. glEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,200);glVertex2i(1150-a*i,250);//arrivaglVertex2i(1250-a*i,250);//derechaglVertex2i(1200-a*i,200);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100-a*i,100);glVertex2i(1100-a*i,200);//arrivaglVertex2i(1100-a*i,200);glVertex2i(1200-a*i,200);//derechaglVertex2i(1200-a*i,200);
  61. 61. glVertex2i(1200-a*i,100);//abajoglVertex2i(1200-a*i,100);glVertex2i(1100-a*i,100);//diagonal derecha esquina arrivaglVertex2i(1150-a*i,250);glVertex2i(1100-a*i,200);//linea cuadro atras//linea cuadro atrasglVertex2i(1150-a*i,250);glVertex2i(1250-a*i,250);//linea derecha atrasglVertex2i(1250,250);glVertex2i(1250,150);//linea abajo derecha diagonalglVertex2i(1200,100);glVertex2i(1250,150);//linea arriva derecha diagonalglVertex2i(1200-a*i,200);glVertex2i(1250-a*i,250);glEnd();}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  62. 62. for(i=0;i<=10;i++){glColor3f(1.0 ,1.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,100+a*i);glVertex2i(1200,200+a*i);//arrivaglVertex2i(1250,250+a*i);//derechaglVertex2i(1250,150+a*i);glEnd();glColor3f(1.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,100+a*i);glVertex2i(1100,200+a*i);//arrivaglVertex2i(1200,200+a*i);//derechaglVertex2i(1200,100+a*i);
  63. 63. //abajoglEnd();glColor3f(0.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,200+a*i);glVertex2i(1150,250+a*i);//arrivaglVertex2i(1250,250+a*i);//derechaglVertex2i(1200,200+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,100+a*i);glVertex2i(1100,200+a*i);//arrivaglVertex2i(1100,200+a*i);
  64. 64. glVertex2i(1200,200+a*i);//derechaglVertex2i(1200,200+a*i);glVertex2i(1200,100+a*i);//abajoglVertex2i(1200,100+a*i);glVertex2i(1100,100+a*i);//diagonal derecha esquina arrivaglVertex2i(1150,250+a*i);glVertex2i(1100,200+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(1150,250+a*i);glVertex2i(1250,250+a*i);//linea derecha atrasglVertex2i(1250,250+a*i);glVertex2i(1250,150+a*i);//linea abajo derecha diagonalglVertex2i(1200,100+a*i);glVertex2i(1250,150+a*i);//linea arriva derecha diagonalglVertex2i(1200,200+a*i);glVertex2i(1250,250+a*i);
  65. 65. glEnd();}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("cubo3d"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  66. 66. 8. Animación circuloEn esta practica aprendimos a que una pelota se mueva y pase por las 4 partes de la ventana. También es importante que no se olvide definir nueva instrucción al principio ya que de lo contrario el programa no compilara.CODIGO:#include <unistd.h>#include <GL/glut.h>#include <GL/gl.h>#include <math.h>int x=1,z=1,w=1, y=1;void inicializa(void){glClearColor(1.0,0.2,1.0,0.5);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 1200.0, 0.0, 800.0);// el ancho y largo de nuestra pantalla}void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glColor3f (2.0, 0.1, 3.0); glVertex2f(x,y);
  67. 67. glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=6){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);if(x>=1 && x<1000){circulo(2+1*x,700,40);glFlush();x++;}if(y>=1 && y<600 && x==1000){circulo(1000,700-y,40);glFlush();y++;}if(w>=1 && w<1000 && y==600 && x==1000){circulo(1000-w,100,40);glFlush();w++;}if(z>=1 && z<1000 && y==600 && x==1000 && w==1000){circulo(5,100+z,40);glFlush();z++;if(z==600) {z=1;x=1;y=1;w=1;}}glutSwapBuffers();}
  68. 68. int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);glutInitWindowSize(1200,800);glutInitWindowPosition(10,10);glutCreateWindow("Ventana");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);glutMainLoop();return 0;}
  69. 69. 9. Animación sistema solarEn esta practica del sistema solar hicimos una representación de dicho sistemahaciendo que los planetas de movieran alrededor del sol. Es importante definirnuevas instrucciones al inicio.CODIGO:#include <unistd.h>#include <GL/glut.h>#include <GL/gl.h>#include <math.h>int rad=100;double ang=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;
  70. 70. void inicializa(void){glClearColor(0.0,0.0,0.0,0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 1000.0, 0.0, 1000.0);// el ancho y largo de nuestra pantalla}void circuloc(int x, int y, int t, int radio){ int angulo=0; glPointSize(t); glBegin(GL_POINTS);//glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void dibuja(void){
  71. 71. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estocirculo( 500+ sin(ang) * rad,500 + cos(ang) * rad,10); //funcion circulo//solglColor3f(1.0,1.0,0.0);circulo( 500,500,50);//mercuriocirculoc(500,500,2,50);glColor3f(1.6,0.0,0.5);circulo( 500 + sin(a) * 100,500 + cos(a) * 100,5);//venuscirculoc(500,500,2,100);glColor3f(1.0,1.9,0.5);circulo( 500+ sin(b) * 150,500 + cos(b) * 150,20);//tierracirculoc(500,500,2,150);glColor3f(0.0,1.3,0.5);circulo( 500+ sin(c) * 200,500 + cos(c) * 200,10);//martecirculoc(500,500,2,200);glColor3f(1.0,1.0,0.5);circulo( 500 + sin(d) * 250,500 + cos(d) * 250,15);//jupitercirculoc(500,500,2,250);glColor3f(0.0,0.0,0.5);
  72. 72. circulo( 500 + sin(e) * 300,500 + cos(e) * 300,30);//saturnocirculoc(500,500,2,300);glColor3f(1.0,0.3,0.5);circulo( 500+ sin(f) * 350,500 + cos(f) * 350,25);//uranocirculoc(500,500,2,350);glColor3f(1.0,0.9,0.0);circulo( 500+ sin(g) * 400,500 + cos(g) * 400,13);//neptunocirculoc(500,500,2,400);glColor3f(1.5,0.0,0.5);circulo( 500 + sin(h) * 450,500 + cos(h) * 450,7);circuloc(500,500,2,450);a=a+0.01;b=b+0.02;c=c+0.08;d=d+0.07;e=e+0.04;f=f+0.06;g=g+0.03;h=h+0.05;ang=ang+0.01; //velocidad entre mas grande mas rapido y entre menos mas lentofor(int j=1;j<=10000000;j++){}//pausaif(ang==360){ang=0;}// se repite idefinidamenteglFlush(); //forzar dibujado
  73. 73. glutSwapBuffers(); //y esto}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambienglutInitWindowSize(1000,1000);glutInitWindowPosition(10,10);glutCreateWindow("Ventana");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);//esto es lo que cambiaglutMainLoop();return 0;}
  74. 74. 10. Movimiento en ocho En esta práctica veremos como podemos hacer que un circulo se mueva alrededor de otros dos haciendo un movimiento circular en forma de un ocho.CODIGO:#include <unistd.h>#include <GL/glut.h>
  75. 75. #include <GL/gl.h>#include <math.h>int x=1, x2=1,y=1;double a=6.15, b=6.15;void inicializa(void){glClearColor(0.0,0.0,0.0,0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 700.0, 0.0, 700.0);// el ancho y largo de nuestra pantalla}void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo+=6){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();} void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glColor3f(1.0, 0.5, 1.0);circulo(300, 300, 70);circulo(300,180,70);glColor3f(0.1,2.0,0.5);circulo(300,300,50);circulo(300,180,50);glColor3f(0.0,1.0,3.0);if(a>=6.15 && a<=12.41){circulo(300+ sin (a)*60,300- cos(a)*60,10);a=a+0.01;
  76. 76. }else{circulo(300 + sin (b) *60,180-cos(b)*-60,10);b=b + 0.25;if(b>12.4){a=6.15;b=6.15;}for(int j=0; j<=10000000; j++) {}}glFlush();glutSwapBuffers();}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);glutInitWindowSize(700,700);glutInitWindowPosition(10,10);glutCreateWindow("Ventana");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);glutMainLoop();return 0;}
  77. 77. 15. Piramide En esta practica realizamos una pirámide que vista desde arriba se ve en 3D Se realiza con puras líneas.CODIGO:#include <GL/glut.h>
  78. 78. #include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,0.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{int i,a=20;glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 1.0 , 0.6);glLineWidth(2);glBegin(GL_LINES);//valor inicial----valor finalfor(i=1;i<=10;i++){//abajoglVertex2i(240-20*i,240-20*i);glVertex2i(260+20*i,240-20*i);//derechaglVertex2i(260+20*i,240-20*i);glVertex2i(260+20*i,260+20*i);//IzquierdaglVertex2i(240-20*i,240-20*i);glVertex2i(240-20*i,260+20*i);//arriba
  79. 79. glVertex2i(240-20*i,260+20*i);glVertex2i(260+20*i,260+20*i);}int c,s=40;glColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);for(c=0;c<=4;c++){glVertex2i(280+s*c,280+s*c);glVertex2i(300+s*c,300+s*c);glVertex2i(200-s*c,200-s*c);glVertex2i(220-s*c,220-s*c);glVertex2i(220-s*c,280+s*c);glVertex2i(200-s*c,300+s*c);glVertex2i(280+s*c,220-s*c);glVertex2i(300+s*c,200-s*c);}glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualizaciónglutInitWindowSize(500,500); //tamaño de la ventana
  80. 80. glutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}

×