Your SlideShare is downloading. ×
CECyTEM PLANTEL TECÁMACManual de prácticas en OPEN GL “Dev C++”         Alumnos: Rivera Sánchez Gabriela                 R...
Introducción.En este manual se podrá apreciar algunas de las principales funciones del lenguaje de programación de OPEN GL...
Índice.1°- Tablero de Ajedrez2°-Estrella3°- Cubo con líneas4°-Cubo delineado5°-Muñeco con triángulos6°-Piramide7°-Casita8°...
1° TABLERO DE AJEDREZEn esta práctica aremos un tablero de ajedrez con cuadros unos negro y uno blanco de 8*8. La realizar...
glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(150,500); glVertex2i(150,600); glVertex2i(150,70...
glPointSize(50);glBegin(GL_POINTS); glVertex2i(200,500); glVertex2i(200,600); glVertex2i(200,700); glVertex2i(200,800); gl...
glBegin(GL_POINTS); glVertex2i(250,500); glVertex2i(250,600); glVertex2i(250,700); glVertex2i(250,800);  glColor3f(0.0 , 0...
glVertex2i(300,550); glVertex2i(300,650); glVertex2i(300,750); glVertex2i(300,850); glColor3f(1.0 , 1.0 , 1.0);glPointSize...
glVertex2i(400,500); glVertex2i(400,600); glVertex2i(400,700); glVertex2i(400,800);  glColor3f(1.0 , 1.0 , 1.0);glPointSiz...
glVertex2i(450,650);    glVertex2i(450,750);    glVertex2i(450,850);glEnd();2° ESTRELLAEn esta práctica haremos una estrel...
glClear(GL_COLOR_BUFFER_BIT);   //borra pantallaglBegin(GL_LINES);glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(17...
glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(400,150);glVertex2i(175,300);glEnd();3° CUBO CON LÍNEASEn esta práct...
glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_LINES);glVertex2i(200, 100);glVertex2i(300, 100);glVertex2i(200, 100...
glVertex2i(250, 250);glVertex2i(250, 250);glVertex2i(200, 200);glVertex2i(250, 250);glVertex2i(350, 250);glVertex2i(350, 2...
4°CUBO DELINEADOEsta práctica la haremos como la práctica de CUBO CON LÍNEAS lo único que modificaremos será el grosor de ...
glBegin(GL_QUADS);glColor3f(1.0 , 0.0 , 0.0);glVertex2i(200,200);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(300,10...
glVertex2i(350,250);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(200,200);glEnd();//enfrenteglLineWidth(5);glBegin(G...
glVertex2i(300,100);glVertex2i(300,100);glVertex2i(300,200);//arribaglVertex2i(200,200);glVertex2i(250,250);glVertex2i(250...
En esta práctica haremos un muñeco utilizando una nueva primitiva glBegin(GL_TRIANGLES) y también primitivas ya utilizadas...
glBegin(GL_QUADS);glColor3f(0.0 , 1.0 , 0.0);glVertex2i(0,60);glVertex2i(1000,60);glVertex2i(1000,0);glVertex2i(0,0);glEnd...
//pierna izquierdaglVertex2i(200,40);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(160,160);glVertex2i(200,200);glEnd();//muslo de...
glVertex2i(120,200);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.0 , 1.0 , 0.0);//brazo derechoglVertex2i(280,320);glColor3f(...
//mano derechaglVertex2i(340,260);glVertex2i(360,280);glVertex2i(380,240);//cabezaglVertex2i(220,320);glVertex2i(260,400);...
glVertex2i(440,180);glVertex2i(360,180);//trofeo izqglVertex2i(400,200);glVertex2i(340,340);glVertex2i(360,320);glVertex2i...
glBegin(GL_QUADS);glColor3f(0.0 , 1.0 , 0.0);//cuerpoglVertex2i(160,320);glVertex2i(280,320);glVertex2i(280,200);glVertex2...
glColor3f(1.0 , 1.0 , 1.0);glVertex2i(360,80);glVertex2i(360,60);glVertex2i(340,40);glVertex2i(320,40);glColor3f(1.0 , 1.0...
6° PIRAMIDEEsta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de ella podemos cam...
CODIGO:void dibuja(void)                //funcion dibuja{    int i;glClear(GL_COLOR_BUFFER_BIT);       //borra pantallaglP...
glVertex2i(260,240);glVertex2i(280,220);glVertex2i(220,280);glVertex2i(240,260);glVertex2i(280,280);glVertex2i(260,260);gl...
glVertex2i(340, 340);glVertex2i(360, 360);glVertex2i(380, 380);glVertex2i(400, 400);glVertex2i(420, 420);glVertex2i(440, 4...
glVertex2i(340,160);glVertex2i(360,140);glVertex2i(380,120);glVertex2i(400,100);glVertex2i(420,80);glVertex2i(440,60);glEn...
7° CASITA.Esta práctica es como un repaso de todas las primitivas e instrucciones vistas anteriormente. Para lograr dicho ...
{           int i,j=0;/* borra la pantalla */glClear(GL_COLOR_BUFFER_BIT);//rejasfor(i=0;i<50;i++){glBegin(GL_POLYGON);glC...
glVertex2i(0,240);glVertex2i(1000,240);glVertex2i(1000,120);glVertex2i(0,120);//banquetaglColor3f (0.6, 0.6, 0.6);glVertex...
glVertex2i(135,180);glVertex2i(135,165);glVertex2i(105,165);glVertex2i(165,180);glVertex2i(195,180);glVertex2i(195,165);gl...
glVertex2i(210,450);glVertex2i(540,450);glVertex2i(540,195);glVertex2i(210,195);// Techo casaglColor3f (0.7, 0.6, 1.0);glV...
glVertex2i(405,195);glVertex2i(345,195);//ColumnasglColor3f (0.0, 1.0, 1.0);glVertex2i(75,315);glVertex2i(90,315);glVertex...
//Ventanas izqglColor3f (0.8, 0.8, 1.0);glVertex2i(240,435);glVertex2i(300,435);glVertex2i(300,375);glVertex2i(240,375);gl...
glVertex2i(405,330);glVertex2i(345,330);//Ventanas puertaglVertex2i(360,285);glVertex2i(390,285);glVertex2i(390,210);glVer...
glColor3f (0.7, 0.3, 1.0);glVertex2i(375,480);glVertex2i(435,435);glVertex2i(315,435);glEnd();//arbolesglLineWidth (4);glB...
glBegin(GL_LINES);for(i=0;i<50;i++){glVertex2i(0+120*i,41);glVertex2i(90+120*i,41);}//BarandalglVertex2i(344,375);glVertex...
glVertex2i(270,375);glVertex2i(270,262);glVertex2i(270,240);glVertex2i(480,397);glVertex2i(480,375);glVertex2i(480,262);gl...
glVertex2i(450,435);glVertex2i(510,435);glVertex2i(510,375);glVertex2i(450,375);glEnd();glBegin(GL_LINE_LOOP);glVertex2i(4...
8°- OsoEsta practica la logramos hacer por medio de una nueva instruccion, la instruccion la llamaremos circulo.Para logra...
nuestras instrucción se llamara circuloc devido a que solo será la circunferenciavoid circuloc(int x, int y, int t, int ra...
void circuloc(int x, int y, int t, int radio){           int angulo=0;           glPointSize(t);           glBegin(GL_POIN...
glClear(GL_COLOR_BUFFER_BIT);//panzaglColor3f(0.6,0.4,0.2);     //borra pantallacirculo(280,200,100);glColor3f(0.7,0.5,0.4...
circulo(170,280,20);//cabezaglColor3f(0.6,0.4,0.2);circulo(280,350,60);//oreja izqglColor3f(0.6,0.4,0.2);circulo(220,400,2...
glColor3f(0.0,0.0,0.0);circulo(280,340,10);glEnd();glBegin(GL_LINES);glColor3f(0.0,0.0,0.0);glVertex2i(280,330);glVertex2i...
9°-Cubo con CubitosEsta practica esta un poco complicada devido a que utilizaremos una funcion for pero multiplicaremos to...
10°-Muñeco con formas.Este muñeco es facil de hacer ya que utilizaremos todas las primitivas he instruciones ya vistas per...
11°-Animación circuloHaremos que un circulo se mueva alrededor de la pantalla con una instruccion nueva.CODIGO:void circul...
glColor3f(0.20,0.84,0.23);             for (angulo=0;angulo<=360; angulo+=6){glVertex2f(x + sin(angulo) * radio, y + cos(a...
}if(z>=1 && z<600 && x==600 && y==600 ){circulo(700-z,700,40);glFlush();z++;}if(i>=1 && i<600 && x==600 && y==600 && z==60...
12°- Nombre 3DEste nombre se hará a base se cubitos se ira poniendo uno tras otro, aquí las coordenadas cambiaran, cada qu...
void mover(void){    glTranslated(0,0,zoom);    glRotated(girax,1.0,0.0,0.0);    glRotated(giray,0.0,1.0,0.0);     }void c...
glColor3f(0.0,0.0,1.0);   glVertex3f(-11.0,0.0,0.0);   glVertex3f(11.0,0.0,0.0);glColor3f(1.0,0.0,0.0);   glVertex3f(0.0,-...
glVertex3f(-11.0,0.0,0.0);    glVertex3f(-10.5,0.0,.50);    glVertex3f(-10.5,0.0,-.50);      glColor3f(1.0,0.0,0.0);    gl...
Esta animacion se podra hacer por medio de un movimiento del circulo pero circular.comenzaremos por definir el sol, y aspi...
void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estaglColor3f (1.0,1.0,1.0);circuloc(1000,1000,1,15...
ang==ang+0.01;glEnd();//TierraglColor3f (0.0, 0.0, 0.19);circulo( 1000 + sin(ang) * 350,1000 - cos(ang) * 350,40);ang==ang...
ang=ang+0.01;glEnd();//NeptunoglColor3f (0.08, 0.67, 0.83);circulo( 1000- sin(ang) * 930,1000 + cos(ang) * 930,20);ang=ang...
recorrera la circunferencia de los primeros 2 circulos. Y así su recorrido será continuo.CODIGO:15°-Semaforo.El objetivo d...
}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estoglBegin(GL_QUADS);//Cuadros fondo semaforoglCo...
circulo(247,381,34);a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lentofor(int j=1;j<=10000000;j++){}//...
if(a>50 && a<60){glColor3f(1.0,1.0,0.0);//Luces Rojacirculo(247,302,34);}// se repite idefinidamenteif(a>60){a=0;}glFlush(...
16°- Cubo 3D con líneas.Este cubo se lograra hacer con una malla, y con la intervencion del teclado la malla se multiplica...
CODIGO:void mover(void){    glTranslated(0,0,zoom);    glRotated(girax,1.0,0.0,0.0);    glRotated(giray,0.0,1.0,0.0);     ...
void creaEjes(void){    glColor3f(0.0,0.0,0.0);    glBegin(GL_LINES);      glColor3f(0.0,0.0,1.0);    glVertex3f(-11.0,0.0...
glVertex3f(-.50,0.0,10.5);      glVertex3f(.50,0.0,10.5);      //puntas otras    glColor3f(0.0,0.0,1.0);      glVertex3f(-...
glMatrixMode(GL_PROJECTION); // set the view volume shape          glLoadIdentity(); glOrtho(-15,15,-15,15,-30,30);       ...
glVertex3i(0,0,-3);      glVertex3f(0+cos(angulo)*45, 0+sin(angulo)*45,0);}glEnd();*/    // Colocamos una luzglLightfv(GL_...
glLoadIdentity();glOrtho(-15,15,-15,15,-30,30);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glClear(GL_DEPTH_TEST);} void a...
case p:                        glMatrixMode(GL_PROJECTION);                        glLoadIdentity();                      ...
giray+=3;       break;       case GLUT_KEY_RIGHT:       giray-=3;       break;       case GLUT_KEY_UP:       girax-=3;    ...
Manual
Upcoming SlideShare
Loading in...5
×

Manual

212

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
212
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Manual"

  1. 1. CECyTEM PLANTEL TECÁMACManual de prácticas en OPEN GL “Dev C++” Alumnos: Rivera Sánchez Gabriela Ruiz Cortes German David Prof.: René Domínguez Escalona Grupo: 303
  2. 2. Introducción.En este manual se podrá apreciar algunas de las principales funciones del lenguaje de programación de OPEN GL yasí se podrá aplicar para diseño gráfico, se mostraran funciones principales o primitivas del programa para larealización de objetos en el programa se verá desde lo más básico hasta lo más avanzado como puede ser desde laelaboración de un cuadro hasta la animación de un objeto en 2D & 3D.
  3. 3. Índice.1°- Tablero de Ajedrez2°-Estrella3°- Cubo con líneas4°-Cubo delineado5°-Muñeco con triángulos6°-Piramide7°-Casita8°- Oso9°-Cubo con Cubitos10°-Muñeco con formas11°-Animación circulo12°- Nombre 3D13°-Animación sistema solar14°-Movimiento en ocho15°-Semaforo16°- Cubo 3D con líneas.
  4. 4. 1° TABLERO DE AJEDREZEn esta práctica aremos un tablero de ajedrez con cuadros unos negro y uno blanco de 8*8. La realizaremos con laprimitiva GL_POINTS, comenzaremos por definir el color de cada cuadro con glColor3f(0.0 , 0.0 , 0.0) que seríanegro, luego el tamaño del punto glPointSize(50) y en seguida anotaremos la primitiva ya mencionadaglBegin(GL_POINTS).Luego de esto se pondrán las coordenadas glVertex2i(100,800); por ejemplo deberán de ser 4 coordenadas parainsertar un cuadroglVertex2i(100,500); glVertex2i(100,600); glVertex2i(100,700); glVertex2i(100,800);y así lo haremos consecutivamente hasta lograr hacer el tablero indicado.CODIGO:void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(100,500); glVertex2i(100,600); glVertex2i(100,700); glVertex2i(100,800);
  5. 5. glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(150,500); glVertex2i(150,600); glVertex2i(150,700); glVertex2i(150,800); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(100,550); glVertex2i(100,650); glVertex2i(100,750); glVertex2i(100,850); glColor3f(0.0 , 0.0 , 0.0); glPointSize(50);glBegin(GL_POINTS); glVertex2i(150,550); glVertex2i(150,650); glVertex2i(150,750); glVertex2i(150,850); glColor3f(0.0 , 0.0 , 0.0);
  6. 6. glPointSize(50);glBegin(GL_POINTS); glVertex2i(200,500); glVertex2i(200,600); glVertex2i(200,700); glVertex2i(200,800); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(200,500); glVertex2i(200,600); glVertex2i(200,700); glVertex2i(200,800); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(200,550); glVertex2i(200,650); glVertex2i(200,750); glVertex2i(200,850); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);
  7. 7. glBegin(GL_POINTS); glVertex2i(250,500); glVertex2i(250,600); glVertex2i(250,700); glVertex2i(250,800); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(250,550); glVertex2i(250,650); glVertex2i(250,750); glVertex2i(250,850); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(300,500); glVertex2i(300,600); glVertex2i(300,700); glVertex2i(300,800); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS);
  8. 8. glVertex2i(300,550); glVertex2i(300,650); glVertex2i(300,750); glVertex2i(300,850); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(350,500); glVertex2i(350,600); glVertex2i(350,700); glVertex2i(350,800); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(350,550); glVertex2i(350,650); glVertex2i(350,750); glVertex2i(350,850); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS);
  9. 9. glVertex2i(400,500); glVertex2i(400,600); glVertex2i(400,700); glVertex2i(400,800); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(400,550); glVertex2i(400,650); glVertex2i(400,750); glVertex2i(400,850); glColor3f(1.0 , 1.0 , 1.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(450,500); glVertex2i(450,600); glVertex2i(450,700); glVertex2i(450,800); glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_POINTS); glVertex2i(450,550);
  10. 10. glVertex2i(450,650); glVertex2i(450,750); glVertex2i(450,850);glEnd();2° ESTRELLAEn esta práctica haremos una estrella a base de líneas con la primitiva glBegin(GL_LINES), definiremos en tamaño de la líneay el color con:glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);y comenzaremos a anotar cada una de las coordenadas para así llegar a la forma de la estrella.CODIGO:void dibuja(void) //funcion dibuja{
  11. 11. glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglBegin(GL_LINES);glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(174,300);glVertex2i(425,300);glBegin(GL_LINES);glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(200,150);glVertex2i(425,300);glBegin(GL_LINES);glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(200,150);glVertex2i(300,400);glBegin(GL_LINES);glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(300,400);glVertex2i(400,150);glBegin(GL_LINES);
  12. 12. glPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(400,150);glVertex2i(175,300);glEnd();3° CUBO CON LÍNEASEn esta práctica utilizaremos 2 primitivas glBegin(GL_QUADS) para hacer cuadros y glBegin(GL_LINES); para hacer las líneasigual que practicas anteriores definiremos el color de la línea o cuadro con glColor3f(1.0 , 0.0 , 0.0);.Primero haremos la parte trasera del cubo para que se noten las líneas de enfrente y no estén cubiertas por las demás líneaso cuadros.Y de igual forma definiremos cada coordenada hasta lograr el cubo con líneas.CODIGO:void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
  13. 13. glColor3f(0.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_LINES);glVertex2i(200, 100);glVertex2i(300, 100);glVertex2i(200, 100 );glVertex2i(200, 200);glVertex2i(200, 200);glVertex2i(300, 200);glVertex2i(300, 200);glVertex2i(300, 100);glVertex2i(250, 150);glVertex2i(200, 100);glVertex2i(250, 150);glVertex2i(350, 150);glVertex2i(350, 150);glVertex2i(300, 100);glVertex2i(250, 150);
  14. 14. glVertex2i(250, 250);glVertex2i(250, 250);glVertex2i(200, 200);glVertex2i(250, 250);glVertex2i(350, 250);glVertex2i(350, 250);glVertex2i(300, 200);glVertex2i(350, 250);glVertex2i(350, 150);glEnd();
  15. 15. 4°CUBO DELINEADOEsta práctica la haremos como la práctica de CUBO CON LÍNEAS lo único que modificaremos será el grosor de la línea con lainstrucción glLineWidth(3) el tamaño de la línea será colocado dentro del paréntesis y le modificaremos el color de cada ladopara ver así la separación de cada lado.CODIGO:void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglLineWidth(5);//enfrente
  16. 16. glBegin(GL_QUADS);glColor3f(1.0 , 0.0 , 0.0);glVertex2i(200,200);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(300,100);glVertex2i(300,100);glVertex2i(200,100);glVertex2i(200,100);glVertex2i(200,200);//derechaglColor3f(0.0 , 0.0 , 1.0);glVertex2i(300,200);glVertex2i(350,250);glVertex2i(350,250);glVertex2i(350,150);glVertex2i(350,150);glVertex2i(300,100);glVertex2i(300,100);glVertex2i(300,200);//arribaglColor3f(.0 , 1.0 , 0.0);glVertex2i(200,200);glVertex2i(250,250);glVertex2i(250,250);glVertex2i(350,250);
  17. 17. glVertex2i(350,250);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(200,200);glEnd();//enfrenteglLineWidth(5);glBegin(GL_LINES);glColor3f(0.0 , 0.0 , 0.0);glVertex2i(200,200);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(300,100);glVertex2i(300,100);glVertex2i(200,100);glVertex2i(200,100);glVertex2i(200,200);//derechaglVertex2i(300,200);glVertex2i(350,250);glVertex2i(350,250);glVertex2i(350,150);glVertex2i(350,150);
  18. 18. glVertex2i(300,100);glVertex2i(300,100);glVertex2i(300,200);//arribaglVertex2i(200,200);glVertex2i(250,250);glVertex2i(250,250);glVertex2i(350,250);glVertex2i(350,250);glVertex2i(300,200);glVertex2i(300,200);glVertex2i(200,200);glEnd();5°MUÑECO CON TRIÁNGULOS
  19. 19. En esta práctica haremos un muñeco utilizando una nueva primitiva glBegin(GL_TRIANGLES) y también primitivas ya utilizadasantes.Para esta instrucción se necesitan 3 coordenadas ya no 2 como en las instrucciones glBegin(GL_QUADS) o glBegin(GL_LINES)De igual forma trataremos de encontrar cada una de las coordenadas para lograr el dibujo a base de triángulos y si esnecesario ocuparemos otras primitivas.Como en el caso del balón también se utiliza una nueva primitiva glBegin(GL_POLYGON) a base de 8 coordenadas.También utilizamos colores degradados. Estos se logran colocando la instrucción de color entre las coordenadas y no soloponiéndole hasta arriba de cada grupo de coordenadas por ejemplo:glColor3f(1.0 , 1.0 , 0.0);glVertex2i(320,100);glVertex2i(340,100);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(360,80);glVertex2i(360,60);glVertex2i(340,40);glVertex2i(320,40);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(300,60);glVertex2i(300,80);CODIGO:void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglPointSize(10);//pasto
  20. 20. glBegin(GL_QUADS);glColor3f(0.0 , 1.0 , 0.0);glVertex2i(0,60);glVertex2i(1000,60);glVertex2i(1000,0);glVertex2i(0,0);glEnd();// pie izquierdoglBegin(GL_TRIANGLES);glColor3f(1.0 , 0.0 , 0.0);glVertex2i(140,40);glVertex2i(200,40);glVertex2i(160,60);//pie derechoglColor3f(1.0 , 0.0 , 0.0);glVertex2i(300,100);glVertex2i(320,120);glVertex2i(360,100);glEnd();glBegin(GL_TRIANGLES);glColor3f(1.0 , 0.0 , 1.0);
  21. 21. //pierna izquierdaglVertex2i(200,40);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(160,160);glVertex2i(200,200);glEnd();//muslo derechoglBegin(GL_TRIANGLES);glColor3f(1.0 , 1.0 , 1.0);glVertex2i(240,200);glVertex2i(240,160);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(320,160);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.0 , 1.0 , 0.0);//brazo izquierdoglVertex2i(160,320);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(100,260);
  22. 22. glVertex2i(120,200);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.0 , 1.0 , 0.0);//brazo derechoglVertex2i(280,320);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(340,260);glVertex2i(320,200);glEnd();glBegin(GL_TRIANGLES);glColor3f(1.0 , 0.0 , 1.0);//chamorro derechoglVertex2i(320,160);glVertex2i(280,140);glVertex2i(300,100);//mano izqglVertex2i(100,260);glVertex2i(60,240);glVertex2i(80,280);
  23. 23. //mano derechaglVertex2i(340,260);glVertex2i(360,280);glVertex2i(380,240);//cabezaglVertex2i(220,320);glVertex2i(260,400);glVertex2i(180,400);glEnd();//gorroglBegin(GL_TRIANGLES);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(140,400);glVertex2i(220,440);glVertex2i(300,400);glEnd();//base trofeoglBegin(GL_TRIANGLES);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(400,200);
  24. 24. glVertex2i(440,180);glVertex2i(360,180);//trofeo izqglVertex2i(400,200);glVertex2i(340,340);glVertex2i(360,320);glVertex2i(360,320);glVertex2i(380,340);glVertex2i(340,340);//trofeo derglVertex2i(400,200);glVertex2i(460,340);glVertex2i(440,320);glVertex2i(440,320);glVertex2i(460,340);glVertex2i(420,340);//trofeoglVertex2i(400,200);glVertex2i(420,340);glVertex2i(380,340);glEnd();
  25. 25. glBegin(GL_QUADS);glColor3f(0.0 , 1.0 , 0.0);//cuerpoglVertex2i(160,320);glVertex2i(280,320);glVertex2i(280,200);glVertex2i(160,200);glEnd();//cuelloglBegin(GL_TRIANGLES);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(200,320);glVertex2i(240,320);glVertex2i(220,300);glEnd();glBegin(GL_POLYGON);glColor3f(1.0 , 1.0 , 0.0);//balonglVertex2i(320,100);glVertex2i(340,100);
  26. 26. glColor3f(1.0 , 1.0 , 1.0);glVertex2i(360,80);glVertex2i(360,60);glVertex2i(340,40);glVertex2i(320,40);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(300,60);glVertex2i(300,80);glEnd();
  27. 27. 6° PIRAMIDEEsta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de ella podemos cambiar losvalores, esta instrucción funciona para repetir alguna primitiva, ya sea cuadros, líneas etc….En esta ocasión la utilizaremos para repetir un cuadro pero que vaya aumentando su tamaño a cierta distanciaLa instrucción va antes de que empecemos a colocar las coordenadas, y pondremos la variable dentro de las coordenadas, eneste caso la variable es i y colocando esta variable hará la instrucción for.Por ejemplo:glVertex2i(240-20*i,240-20*i);glVertex2i(260+20*i,240-20*i);El 240 en el valor de x, el -20 es la separación entre el cuadro y se multiplicara por i que es la variable con la cual seefectuara el mismo cuadro.Luego de Esto haremos las líneas diagonales para simular la pirámide vista desde arriba.
  28. 28. CODIGO:void dibuja(void) //funcion dibuja{ int i;glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglPointSize(10);glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_LINES);for (i=0;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);//ARRIBAglVertex2i(240-20*i,260+20*i);glVertex2i(260+20*i,260+20*i);}glVertex2i(240,240);glVertex2i(220,220);
  29. 29. glVertex2i(260,240);glVertex2i(280,220);glVertex2i(220,280);glVertex2i(240,260);glVertex2i(280,280);glVertex2i(260,260);glVertex2i(200, 300);glVertex2i(180, 320);glVertex2i(160, 340);glVertex2i(140, 360);glVertex2i(120, 380);glVertex2i(100, 400);glVertex2i(80, 420);glVertex2i(60, 440);glVertex2i(300, 300);glVertex2i(320, 320);
  30. 30. glVertex2i(340, 340);glVertex2i(360, 360);glVertex2i(380, 380);glVertex2i(400, 400);glVertex2i(420, 420);glVertex2i(440, 440);glVertex2i(240, 240);glVertex2i(220, 220);glVertex2i(200, 200);glVertex2i(180, 180);glVertex2i(160, 160);glVertex2i(140, 140);glVertex2i(120, 120);glVertex2i(100, 100);glVertex2i(80, 80);glVertex2i(60, 60);glVertex2i(300,200);glVertex2i(320,180);
  31. 31. glVertex2i(340,160);glVertex2i(360,140);glVertex2i(380,120);glVertex2i(400,100);glVertex2i(420,80);glVertex2i(440,60);glEnd();
  32. 32. 7° CASITA.Esta práctica es como un repaso de todas las primitivas e instrucciones vistas anteriormente. Para lograr dicho dibujoempezaremos por hacer los objetos de atrás para delante para que se puedan notar todas las figuras.Por ejemplo primero haremos la cerca con la instrucción for y se haga repetitiva la figura y esta figura será hecha con laprimitiva POLYGON.De igual forma ocuparemos for para los pinos, pero primero tenemos que hacer el pasto como ya antes mencionamosharemos primero lo que se encuentra atrás.Rejas, pasto, banqueta, calle, piedras y así sucesivamente, hasta llegar a los detalles de la casa que serían las ultimas figurasque haremos.CODIGO:void dibuja(void)
  33. 33. { int i,j=0;/* borra la pantalla */glClear(GL_COLOR_BUFFER_BIT);//rejasfor(i=0;i<50;i++){glBegin(GL_POLYGON);glColor3f (2.0, 0.3, 0.0);glVertex2f(0+20*i,292);glVertex2f(5+20*i,300);glVertex2f(10+20*i,292);glVertex2f(10+20*i,240);glVertex2f(0+20*i,240);glEnd();}glBegin(GL_QUADS);glVertex2i(0,289);glVertex2i(1000,289);glVertex2i(1000,280);glVertex2i(0,280);//pastoglColor3f (0.0, 0.5, 0.0);
  34. 34. glVertex2i(0,240);glVertex2i(1000,240);glVertex2i(1000,120);glVertex2i(0,120);//banquetaglColor3f (0.6, 0.6, 0.6);glVertex2i(0,120);glVertex2i(1000,120);glVertex2i(1000,90);glVertex2i(0,90);glColor3f (1.0, 1.0, 0.0);glVertex2i(0,90);glVertex2i(1000,90);glVertex2i(1000,82);glVertex2i(0,82);//calleglColor3f (0.3, 0.3, 0.3);glVertex2i(0,82);glVertex2i(1000,82);glVertex2i(1000,0);glVertex2i(0,0);//piedrasglColor3f (0.6, 0.6, 0.6);glVertex2i(105,180);
  35. 35. glVertex2i(135,180);glVertex2i(135,165);glVertex2i(105,165);glVertex2i(165,180);glVertex2i(195,180);glVertex2i(195,165);glVertex2i(165,165);glVertex2i(105,150);glVertex2i(135,150);glVertex2i(135,135);glVertex2i(105,135);glVertex2i(165,150);glVertex2i(195,150);glVertex2i(195,135);glVertex2i(165,135);//entradaglVertex2i(345,195);glVertex2i(405,195);glVertex2i(405,120);glVertex2i(345,120);// CasaglColor3f (0.2, 0.5, 1.0);
  36. 36. glVertex2i(210,450);glVertex2i(540,450);glVertex2i(540,195);glVertex2i(210,195);// Techo casaglColor3f (0.7, 0.6, 1.0);glVertex2i(210,495);glVertex2i(540,495);glVertex2i(585,450);glVertex2i(165,450);// Techo cocheraglVertex2i(75,345);glVertex2i(210,345);glVertex2i(210,315);glVertex2i(60,315);//CortinaglColor3f (0.9, 0.9, 0.9);glVertex2i(90,315);glVertex2i(210,315);glVertex2i(210,195);glVertex2i(90,195);//PuertaglColor3f (1.0, 1.0, 1.0);glVertex2i(345,300);glVertex2i(405,300);
  37. 37. glVertex2i(405,195);glVertex2i(345,195);//ColumnasglColor3f (0.0, 1.0, 1.0);glVertex2i(75,315);glVertex2i(90,315);glVertex2i(90,195);glVertex2i(75,195);glVertex2i(210,330);glVertex2i(540,330);glVertex2i(540,315);glVertex2i(210,315);glVertex2i(330,435);glVertex2i(345,435);glVertex2i(345,195);glVertex2i(330,195);glVertex2i(405,435);glVertex2i(420,435);glVertex2i(420,195);glVertex2i(405,195);
  38. 38. //Ventanas izqglColor3f (0.8, 0.8, 1.0);glVertex2i(240,435);glVertex2i(300,435);glVertex2i(300,375);glVertex2i(240,375);glVertex2i(240,300);glVertex2i(300,300);glVertex2i(300,240);glVertex2i(240,240);//Ventanas derglVertex2i(450,435);glVertex2i(510,435);glVertex2i(510,375);glVertex2i(450,375);glVertex2i(450,300);glVertex2i(510,300);glVertex2i(510,240);glVertex2i(450,240);//Ventanas balconglVertex2i(345,435);glVertex2i(405,435);
  39. 39. glVertex2i(405,330);glVertex2i(345,330);//Ventanas puertaglVertex2i(360,285);glVertex2i(390,285);glVertex2i(390,210);glVertex2i(360,210);//TallosglColor3f (0.6, 0.4, 0.2);glVertex2i(670,225);glVertex2i(700,225);glVertex2i(700,150);glVertex2i(670,150);glVertex2i(875,225);glVertex2i(905,225);glVertex2i(905,150);glVertex2i(875,150);glEnd();glBegin(GL_TRIANGLES);// Techo balcon
  40. 40. glColor3f (0.7, 0.3, 1.0);glVertex2i(375,480);glVertex2i(435,435);glVertex2i(315,435);glEnd();//arbolesglLineWidth (4);glBegin(GL_LINES);glColor3f (0.0, 0.7, 0.0);for(i=0;i<32;i++){glVertex2i(680-3*i,540-10*j);glVertex2i(690+3*i,540-10*j);glVertex2i(685-3*i,535-10*j);glVertex2i(695+3*i,535-10*j);glVertex2i(885-3*i,540-10*j);glVertex2i(895+3*i,540-10*j);glVertex2i(890-3*i,535-10*j);glVertex2i(900+3*i,535-10*j);j=j+1;}glEnd();//Linea CalleglLineWidth (4);glColor3f (1.0, 1.0, 1.0);
  41. 41. glBegin(GL_LINES);for(i=0;i<50;i++){glVertex2i(0+120*i,41);glVertex2i(90+120*i,41);}//BarandalglVertex2i(344,375);glVertex2i(406,375);for(i=0;i<7;i++){glVertex2i(345+10*i,375);glVertex2i(345+10*i,330);}//Divicion VentanaglVertex2i(240,262);glVertex2i(300,262);glVertex2i(240,397);glVertex2i(300,397);glVertex2i(450,397);glVertex2i(510,397);glVertex2i(450,262);glVertex2i(510,262);glVertex2i(375,434);glVertex2i(375,375);glVertex2i(270,397);
  42. 42. glVertex2i(270,375);glVertex2i(270,262);glVertex2i(270,240);glVertex2i(480,397);glVertex2i(480,375);glVertex2i(480,262);glVertex2i(480,240);glEnd();//Contorno ventanasglBegin(GL_LINE_LOOP);glVertex2i(240,435);glVertex2i(300,435);glVertex2i(300,375);glVertex2i(240,375);glEnd();glBegin(GL_LINE_LOOP);glVertex2i(240,300);glVertex2i(300,300);glVertex2i(300,240);glVertex2i(240,240);glEnd();glBegin(GL_LINE_LOOP);
  43. 43. glVertex2i(450,435);glVertex2i(510,435);glVertex2i(510,375);glVertex2i(450,375);glEnd();glBegin(GL_LINE_LOOP);glVertex2i(450,300);glVertex2i(510,300);glVertex2i(510,240);glVertex2i(450,240);glEnd();//ChapaglPointSize(4);glColor3f (0.0, 0.0, 0.0);glBegin(GL_POINTS);glVertex2i(352,247);glVertex2i(352,245);glEnd();
  44. 44. 8°- OsoEsta practica la logramos hacer por medio de una nueva instruccion, la instruccion la llamaremos circulo.Para lograr esto incluiremos la paqueteria #include <math.h> para que formule nuestras operaciones matematicas.
  45. 45. nuestras instrucción se llamara circuloc devido a que solo será la circunferenciavoid 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();}y con circulo haremos un circulo con areavoid 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);} glEnd();}Y así juntaremos las coordenadas hasta lograr hacer un oso.CODIGO:
  46. 46. 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);} glEnd();}void dibuja(void) //funcion dibuja{
  47. 47. glClear(GL_COLOR_BUFFER_BIT);//panzaglColor3f(0.6,0.4,0.2); //borra pantallacirculo(280,200,100);glColor3f(0.7,0.5,0.4);circulo(280,200,60);//pie izqglColor3f(0.6,0.4,0.2);circulo(190,100,40);glColor3f(0.7,0.5,0.4);circulo(190,100,20);//pie derglColor3f(0.6,0.4,0.2);circulo(370,100,40);glColor3f(0.7,0.5,0.4);circulo(370,100,20);//mano derechaglColor3f(0.6,0.4,0.2);circulo(390,280,40);glColor3f(0.7,0.5,0.4);circulo(390,280,20);//mano izqglColor3f(0.6,0.4,0.2);circulo(170,280,40);glColor3f(0.7,0.5,0.4);
  48. 48. circulo(170,280,20);//cabezaglColor3f(0.6,0.4,0.2);circulo(280,350,60);//oreja izqglColor3f(0.6,0.4,0.2);circulo(220,400,20);glColor3f(0.7,0.5,0.4);circulo(220,400,10);//oreja dereglColor3f(0.6,0.4,0.2);circulo(340,400,20);glColor3f(0.7,0.5,0.4);circulo(340,400,10);//ojo izqglColor3f(1.0,1.0,1.0);circulo(260,370,20);glColor3f(0.0,0.5,0.4);circulo(260,370,5);//ojo derglColor3f(1.0,1.0,1.0);circulo(300,370,10);glColor3f(0.0,0.5,0.4);circulo(300,370,5);//nariz
  49. 49. glColor3f(0.0,0.0,0.0);circulo(280,340,10);glEnd();glBegin(GL_LINES);glColor3f(0.0,0.0,0.0);glVertex2i(280,330);glVertex2i(280,310);glVertex2i(250,310);glVertex2i(310,310);glEnd();
  50. 50. 9°-Cubo con CubitosEsta practica esta un poco complicada devido a que utilizaremos una funcion for pero multiplicaremos todo un cubo.para arriba a los lados creando solo el prerimetro de uno más grande pero tenemos que tomar en cuenta los cubosque ya estan hechos para que no se deformen o salga una linea más grande que otra.
  51. 51. 10°-Muñeco con formas.Este muñeco es facil de hacer ya que utilizaremos todas las primitivas he instruciones ya vistas pero las uniremos ycambiaremos su color.
  52. 52. 11°-Animación circuloHaremos que un circulo se mueva alrededor de la pantalla con una instruccion nueva.CODIGO:void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glColor3f (0.12, 0.48, 0.62); glVertex2f(x,y);
  53. 53. glColor3f(0.20,0.84,0.23); 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<600){circulo(100+x,100,40);glFlush();x++;}if(y>=1 && y<600 && x==600){circulo(700,100+y,40);glFlush();y++;
  54. 54. }if(z>=1 && z<600 && x==600 && y==600 ){circulo(700-z,700,40);glFlush();z++;}if(i>=1 && i<600 && x==600 && y==600 && z==600){circulo(100,700-i,40);glFlush();i++;if(i==600){i=1;z=1;x=1; y=1;}}glutSwapBuffers();
  55. 55. 12°- Nombre 3DEste nombre se hará a base se cubitos se ira poniendo uno tras otro, aquí las coordenadas cambiaran, cada que sehaga un cubo ese cubo tendra las coordenadas 0,0 y al ultimo solo modificaremos los colores.CODIGO:
  56. 56. void mover(void){ glTranslated(0,0,zoom); glRotated(girax,1.0,0.0,0.0); glRotated(giray,0.0,1.0,0.0); }void creaMalla(void){ int i, long_eje=10; glColor3f(1.0,1.0,0.0); glBegin(GL_LINES); for(i=-long_eje;i<=long_eje;i++){ glVertex3f(i,-long_eje,0); glVertex3f(i,long_eje,0); glVertex3f(-long_eje,i,0); glVertex3f(long_eje,i,0); glVertex3f(i,0,-long_eje); glVertex3f(i,0,long_eje); glVertex3f(-long_eje,0,i); glVertex3f(long_eje,0,i); } glEnd(); }void creaEjes(void){ glColor3f(0.0,0.0,0.0); glBegin(GL_LINES);
  57. 57. glColor3f(0.0,0.0,1.0); glVertex3f(-11.0,0.0,0.0); glVertex3f(11.0,0.0,0.0);glColor3f(1.0,0.0,0.0); glVertex3f(0.0,-11.0,0.0); glVertex3f(0.0,11.0,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,-11.0); glVertex3f(0.0,0.0,11.0); glEnd(); glBegin(GL_TRIANGLES); glColor3f(0.0,0.0,1.0); glVertex3f(11.0,0.0,0.0); glVertex3f(10.5,0.0,-.50); glVertex3f(10.5,0.0,.50); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,11.0,0.0); glVertex3f(-.50,10.5,0.0); glVertex3f(.50,10.5,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,11.0); glVertex3f(-.50,0.0,10.5); glVertex3f(.50,0.0,10.5); //puntas otras glColor3f(0.0,0.0,1.0);
  58. 58. glVertex3f(-11.0,0.0,0.0); glVertex3f(-10.5,0.0,.50); glVertex3f(-10.5,0.0,-.50); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,-11.0,0.0); glVertex3f(.50,-10.5,0.0); glVertex3f(-.50,-10.5,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,-11.0); glVertex3f(.50,0.0,-10.5); glVertex3f(-.50,0.0,-10.5); glEnd();13°-Animación sistema solar.
  59. 59. Esta animacion se podra hacer por medio de un movimiento del circulo pero circular.comenzaremos por definir el sol, y aspi susecivamente hasta hacer todos los planetas le modificaremos el color y lahubicacion de hacia donde dará la vuelta.CODIGO:void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); //glColor3f (0.5, 0.5, 0.5); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void circuloc(int x, int y, int t, int radio){ int angulo=0; glPointSize(t); glBegin(GL_POINTS); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}
  60. 60. void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estaglColor3f (1.0,1.0,1.0);circuloc(1000,1000,1,150);circuloc(1000,1000,1,250);circuloc(1000,1000,1,350);circuloc(1000,1000,1,450);circuloc(1000,1000,1,570);circuloc(1000,1000,1,690);circuloc(1000,1000,1,820);circuloc(1000,1000,1,930);//SolglColor3f (1.0, 1.0, 0.0);circulo( 1000,1000,100); //funcion circuloglEnd();//MercurioglColor3f (0.65, 0.93, 0.69);circulo( 1000+ sin(ang) * 150,1000 + cos(ang) * 150,25);ang==ang+0.05;glEnd();//VenusglColor3f (0.50, 0.0, 1.0);circulo( 1000- sin(ang) * 250,1000 - cos(ang) * 250,30);
  61. 61. ang==ang+0.01;glEnd();//TierraglColor3f (0.0, 0.0, 0.19);circulo( 1000 + sin(ang) * 350,1000 - cos(ang) * 350,40);ang==ang+0.01;glEnd();//MarteglColor3f (1.0, 0.30, 0.0);circulo( 1000+ sin(ang) * 450,1000 + cos(ang) * 450,41);ang=ang+0.01;glEnd();//JupiterglColor3f (0.72, 0.19, 0.34);circulo( 1000- sin(ang) * 570,1000 - cos(ang) * 570,60);ang=ang+0.01;glEnd();//SaturnoglColor3f (1.0, 0.0, 0.0);circulo( 1000+ sin(ang) * 690,1000 + cos(ang) * 690,50);ang=ang+0.01;glEnd();//UranoglColor3f (0.0, 1.0, 1.0);circulo( 1000- sin(ang) * 820,1000 - cos(ang) * 820,40);
  62. 62. ang=ang+0.01;glEnd();//NeptunoglColor3f (0.08, 0.67, 0.83);circulo( 1000- sin(ang) * 930,1000 + cos(ang) * 930,20);ang=ang+0.003;glEnd();for(int j=1;j<=10000000;j++){}//pausaif(ang==360){ang=0;}// se repite idefinidamenteglFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}14°-Movimiento en ochoEsta practica la haremos haciendo 4 circulos 2 seran solo la circunferencia y los pondremos pegados, los otros 2seran con area y los pondremos encima de modo que se de la forma de un 8, haremos un circulo más pequeño que
  63. 63. recorrera la circunferencia de los primeros 2 circulos. Y así su recorrido será continuo.CODIGO:15°-Semaforo.El objetivo de este será hacer la simulacion de un semaforo, dibujremos la estructura de un semaforo normal yharemso que prenda de rojo a verde de verde a amarillo y a rojo, y así sucesivamente.CODIGO: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();
  64. 64. }void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estoglBegin(GL_QUADS);//Cuadros fondo semaforoglColor3f(0.2 , 0.2 , 0.0);glVertex2i(170,437);glVertex2i(320,437);glVertex2i(320,182);glVertex2i(170,182);glVertex2i(229,183);glVertex2i(278,183);glVertex2i(278,3);glVertex2i(229,3);glEnd();glColor3f(0.0,0.0,0.0);//Luces Rojacirculo(247,226,34);glColor3f(0.0,0.0,0.0);//Luces Amarrillacirculo(247,302,34);glColor3f(0.0,0.0,0.0);//Luces Verde
  65. 65. circulo(247,381,34);a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lentofor(int j=1;j<=10000000;j++){}//pausaif(a>1 && a<20){glColor3f(1.0,0.0,0.0);//Luces Rojacirculo(247,381,34);}// se repite idefinidamente// se repite idefinidamenteif(a>20 && a<40){glColor3f(0.0,1.0,0.0);//Luces Rojacirculo(247,226,34);}if(a>40 && a<45){glColor3f(0.0,1.0,0.0);//Luces Rojacirculo(247,226,34);}if(a>45 && a<50){glColor3f(0.0,1.0,0.0);//Luces Rojacirculo(247,226,34);}// se repite idefinidamente
  66. 66. if(a>50 && a<60){glColor3f(1.0,1.0,0.0);//Luces Rojacirculo(247,302,34);}// se repite idefinidamenteif(a>60){a=0;}glFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}
  67. 67. 16°- Cubo 3D con líneas.Este cubo se lograra hacer con una malla, y con la intervencion del teclado la malla se multiplicara y hará un cubo. yse podra mover con el teclado.De igual forma tedra teclas para hacer un zoom.
  68. 68. CODIGO:void mover(void){ glTranslated(0,0,zoom); glRotated(girax,1.0,0.0,0.0); glRotated(giray,0.0,1.0,0.0); }void creaMalla(void){ int i, long_eje=10,j; glColor3f(1.0,1.0,0.0); glBegin(GL_LINES); for(i=-long_eje;i<=long_eje;i++){ for(j=-long_eje;j<=long_eje;j++){ glVertex3f(j,-long_eje,i); glVertex3f(j,long_eje,i); glVertex3f(-long_eje,j,i); glVertex3f(long_eje,j,i); glVertex3f(j,i,-long_eje); glVertex3f(j,i,long_eje); glVertex3f(-long_eje,j,i); glVertex3f(long_eje,j,i); }} glEnd(); }
  69. 69. void creaEjes(void){ glColor3f(0.0,0.0,0.0); glBegin(GL_LINES); glColor3f(0.0,0.0,1.0); glVertex3f(-11.0,0.0,0.0); glVertex3f(11.0,0.0,0.0); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,-11.0,0.0); glVertex3f(0.0,11.0,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,-11.0); glVertex3f(0.0,0.0,11.0); glEnd(); glBegin(GL_TRIANGLES); glColor3f(0.0,0.0,1.0); glVertex3f(11.0,0.0,0.0); glVertex3f(10.5,0.0,-.50); glVertex3f(10.5,0.0,.50); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,11.0,0.0); glVertex3f(-.50,10.5,0.0); glVertex3f(.50,10.5,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,11.0);
  70. 70. glVertex3f(-.50,0.0,10.5); glVertex3f(.50,0.0,10.5); //puntas otras glColor3f(0.0,0.0,1.0); glVertex3f(-11.0,0.0,0.0); glVertex3f(-10.5,0.0,.50); glVertex3f(-10.5,0.0,-.50); glColor3f(1.0,0.0,0.0); glVertex3f(0.0,-11.0,0.0); glVertex3f(.50,-10.5,0.0); glVertex3f(-.50,-10.5,0.0); glColor3f(0.0,1.0,0.0); glVertex3f(0.0,0.0,-11.0); glVertex3f(.50,0.0,-10.5); glVertex3f(-.50,0.0,-10.5); glEnd(); }void init ( void ){ glClearColor(1.0,1.0,1.0,0.0) ;// Definimos el negro como color de fondo glEnable(GL_DEPTH_TEST); // Activamos el z-Buffer glEnable(GL_LIGHTING); // Activamos la iluminación glEnable(GL_LIGHT0); // Activamos la luz 0
  71. 71. glMatrixMode(GL_PROJECTION); // set the view volume shape glLoadIdentity(); glOrtho(-15,15,-15,15,-30,30); glMatrixMode(GL_MODELVIEW); // position and aim the camera glLoadIdentity(); gluLookAt(5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0);}void dibuja( void ){glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glEnable(GL_DEPTH_TEST); // Activamos el z-Buffer glEnable(GL_LIGHTING); // Activamos la iluminación glEnable(GL_LIGHT0); // Activamos la luz 0 //glShadeModel(GL_FLAT);glShadeModel (GL_SMOOTH); // Cargamos la matriz identidad para reiniciar las transformaciones/* float angulo; int i;glLineWidth(20);glBegin(GL_LINES); glColor3d(1,1,1);for (i=0; i<360; i+=10) { angulo = (GLfloat)i*3.14159f/180.0f; // grados a radianes glColor3d(1,1,1);
  72. 72. glVertex3i(0,0,-3); glVertex3f(0+cos(angulo)*45, 0+sin(angulo)*45,0);}glEnd();*/ // Colocamos una luzglLightfv(GL_LIGHT0,GL_DIFFUSE,(GLfloat []){0.0f,2.0f,2.0f,1.0f}); // Color de la luzglLightfv(GL_LIGHT0,GL_AMBIENT,(GLfloat []){1.0, 1.0, 1.0, 4.0}); // Luz ambienteglLightfv(GL_LIGHT0,GL_POSITION,(GLfloat []){0.0f,12.0f,5.0f,0.0f}); // Posición de la luzglLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0});//glShadeModel (GL_SMOOTH);// esferaglPushMatrix();mover();if(malla) creaMalla();if(ejes) creaEjes();//glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);glPopMatrix ();glFlush();glutSwapBuffers ();//anguloEsfera+=2.0f;}void reshape(int w, int h){glClearColor(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);
  73. 73. glLoadIdentity();glOrtho(-15,15,-15,15,-30,30);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glClear(GL_DEPTH_TEST);} void activo(int x,int y){ // x= e; //y= f;girax=y;giray=700-x; glutPostRedisplay(); }void teclado(unsigned char key, int x, int y){ switch(key){ case 27: exit(0); case +: zoom++; break; case -: zoom--; break;
  74. 74. case p: glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,1,10,100); zoom=-40; break; case o: glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-15,15,-15,15,-30,30); zoom=0; break; case m: malla= !malla; break; case e: ejes= !ejes; default: break; } glutPostRedisplay(); }void flechas(int key,int x ,int y){ switch(key){ case GLUT_KEY_LEFT:
  75. 75. giray+=3; break; case GLUT_KEY_RIGHT: giray-=3; break; case GLUT_KEY_UP: girax-=3; break; case GLUT_KEY_DOWN: girax+=3; break; default: break; }glutPostRedisplay();}

×