SlideShare uma empresa Scribd logo
1 de 74
Baixar para ler offline
CECyTEM PLANTEL TECÁMAC

Manual de prácticas en OPEN GL “Dev
                C++”

     Alumnos: Belmonte Vargas Baruch Isaí
         Ponce Serrano Carlos Andrés


       Prof.: René Domínguez Escalona


                 Grupo: 303
Introducción.
En este manual se podrá apreciar algunas de las principales
funciones del lenguaje de programación de OPEN GL y así
se podrá aplicar para diseño gráfico, se mostraran
funciones principales o primitivas del programa para la
realización de objetos en el programa se verá desde lo más
básico hasta lo más avanzado como puede ser desde la
elaboración de un cuadro hasta la animación de un objeto
en 2D & 3D.
Índice.



1°- Tablero de Ajedrez

2°-Estrella

3°- Cubo con líneas

4°-Cubo delineado

5°-Muñeco con triángulos

6°-Piramide

7°-Casita

8°- Oso

9°-Cubo con Cubitos

10°-Muñeco con formas

11°-Animación circulo

12°- Nombre 3D

13°-Animación sistema solar

14°-Movimiento en ocho

15°-Semaforo

16°- Cubo 3D con líneas.
1° TABLERO DE AJEDREZ



En esta práctica aremos un tablero de ajedrez con cuadros unos negro y uno blanco de
8*8. La realizaremos con la primitiva GL_POINTS, comenzaremos por definir el color de
cada cuadro con glColor3f(0.0 , 0.0 , 0.0) que sería negro, luego el tamaño del punto
glPointSize(50) y en seguida anotaremos la primitiva ya mencionada
glBegin(GL_POINTS).

Luego de esto se pondrán las coordenadas glVertex2i(100,800); por ejemplo deberán de
ser 4 coordenadas para insertar un cuadro

glVertex2i(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 pantalla

glColor3f(0.0 , 0.0 , 0.0);

glPointSize(50);

glBegin(GL_POINTS);



    glVertex2i(100,500);

    glVertex2i(100,600);
glVertex2i(100,700);

 glVertex2i(100,800);

 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);

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);

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);



 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);



 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);

 glVertex2i(450,650);

 glVertex2i(450,750);

 glVertex2i(450,850);

glEnd();
2° ESTRELLA



En esta práctica haremos una estrella a base de líneas con la primitiva glBegin(GL_LINES),
definiremos en tamaño de la línea y 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

{

glClear(GL_COLOR_BUFFER_BIT);                    //borra pantalla

glBegin(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);

glPointSize(10);

glColor3f(0.0 , 0.0 , 0.0);

glVertex2i(400,150);

glVertex2i(175,300);

glEnd();
3° CUBO CON LÍNEAS



En esta práctica utilizaremos 2 primitivas glBegin(GL_QUADS) para hacer cuadros y
glBegin(GL_LINES); para hacer las líneas igual 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íneas o 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

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);

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();
4°CUBO DELINEADO

Esta 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 la instrucción glLineWidth(3) el tamaño de la línea será colocado dentro
del paréntesis y le modificaremos el color de cada lado para ver así la separación de cada lado.

CODIGO:

void dibuja(void)                             //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT);                    //borra pantalla

glLineWidth(5);



//enfrente

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);

//derecha

glColor3f(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);

//arriba

glColor3f(.0 , 1.0 , 0.0);

glVertex2i(200,200);

glVertex2i(250,250);

glVertex2i(250,250);

glVertex2i(350,250);

glVertex2i(350,250);

glVertex2i(300,200);

glVertex2i(300,200);

glVertex2i(200,200);
glEnd();



//enfrente

glLineWidth(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);

//derecha



glVertex2i(300,200);

glVertex2i(350,250);

glVertex2i(350,250);

glVertex2i(350,150);

glVertex2i(350,150);

glVertex2i(300,100);

glVertex2i(300,100);

glVertex2i(300,200);

//arriba
glVertex2i(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



En esta práctica haremos un muñeco utilizando una nueva primitiva    glBegin(GL_TRIANGLES) y
también primitivas ya utilizadas antes.

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 es necesario 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 solo ponié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 pantalla
glPointSize(10);



//pasto

glBegin(GL_QUADS);

glColor3f(0.0 , 1.0 , 0.0);

glVertex2i(0,60);

glVertex2i(1000,60);

glVertex2i(1000,0);

glVertex2i(0,0);

glEnd();



// pie izquierdo

glBegin(GL_TRIANGLES);

glColor3f(1.0 , 0.0 , 0.0);



glVertex2i(140,40);

glVertex2i(200,40);

glVertex2i(160,60);



//pie derecho

glColor3f(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);



//pierna izquierda

glVertex2i(200,40);

glColor3f(1.0 , 1.0 , 1.0);

glVertex2i(160,160);

glVertex2i(200,200);

glEnd();



//muslo derecho

glBegin(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 izquierdo
glVertex2i(160,320);

glColor3f(1.0 , 0.0 , 1.0);

glVertex2i(100,260);

glVertex2i(120,200);

glEnd();



glBegin(GL_TRIANGLES);

glColor3f(0.0 , 1.0 , 0.0);




//brazo derecho

glVertex2i(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 derecho

glVertex2i(320,160);

glVertex2i(280,140);

glVertex2i(300,100);



//mano izq

glVertex2i(100,260);
glVertex2i(60,240);

glVertex2i(80,280);



//mano derecha

glVertex2i(340,260);

glVertex2i(360,280);

glVertex2i(380,240);




//cabeza

glVertex2i(220,320);

glVertex2i(260,400);

glVertex2i(180,400);

glEnd();




//gorro

glBegin(GL_TRIANGLES);

glColor3f(1.0 , 1.0 , 0.0);

glVertex2i(140,400);

glVertex2i(220,440);

glVertex2i(300,400);

glEnd();



//base trofeo
glBegin(GL_TRIANGLES);

glColor3f(1.0 , 1.0 , 0.0);

glVertex2i(400,200);

glVertex2i(440,180);

glVertex2i(360,180);



//trofeo izq

glVertex2i(400,200);

glVertex2i(340,340);

glVertex2i(360,320);



glVertex2i(360,320);

glVertex2i(380,340);

glVertex2i(340,340);



//trofeo der

glVertex2i(400,200);

glVertex2i(460,340);

glVertex2i(440,320);



glVertex2i(440,320);

glVertex2i(460,340);

glVertex2i(420,340);



//trofeo

glVertex2i(400,200);
glVertex2i(420,340);

glVertex2i(380,340);

glEnd();



glBegin(GL_QUADS);

glColor3f(0.0 , 1.0 , 0.0);



//cuerpo



glVertex2i(160,320);

glVertex2i(280,320);

glVertex2i(280,200);

glVertex2i(160,200);

glEnd();



//cuello

glBegin(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);
//balon

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);



glEnd();
6° PIRAMIDE



Esta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de
ella podemos cambiar los valores, 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 distancia

La instrucción va antes de que empecemos a colocar las coordenadas, y pondremos la variable
dentro de las coordenadas, en este 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 se efectuara el mismo cuadro.

Luego de Esto haremos las líneas diagonales para simular        la pirámide vista desde arriba.

CODIGO:

void dibuja(void)                                //funcion dibuja

{



     int i;

glClear(GL_COLOR_BUFFER_BIT);                        //borra pantalla

glPointSize(10);

glColor3f(0.0 , 0.0 , 0.0);

glBegin(GL_LINES);



for (i=0;i<=10;i++){

//ABAJO
glVertex2i(240-20*i,240-20*i);

glVertex2i(260+20*i,240-20*i);

//derecha

glVertex2i(260+20*i,240-20*i);

glVertex2i(260+20*i,260+20*i);

//izquierda

glVertex2i(240-20*i,240-20*i);

glVertex2i(240-20*i,260+20*i);

//ARRIBA

glVertex2i(240-20*i,260+20*i);

glVertex2i(260+20*i,260+20*i);

}

glVertex2i(240,240);

glVertex2i(220,220);



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);



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);



glVertex2i(340,160);

glVertex2i(360,140);



glVertex2i(380,120);

glVertex2i(400,100);



glVertex2i(420,80);

glVertex2i(440,60);

glEnd();
7° CASITA.



Esta práctica es como un repaso de todas las primitivas e instrucciones vistas anteriormente. Para
lograr dicho dibujo empezaremos 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 la primitiva POLYGON.

De igual forma ocuparemos for para los pinos, pero primero tenemos que hacer el pasto como ya
antes mencionamos haremos 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 figuras que haremos.

CODIGO:

void dibuja(void)

{

        int i,j=0;
/* borra la pantalla */

glClear(GL_COLOR_BUFFER_BIT);



//rejas

for(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);



//pasto

glColor3f (0.0, 0.5, 0.0);

glVertex2i(0,240);

glVertex2i(1000,240);

glVertex2i(1000,120);
glVertex2i(0,120);

//banqueta

glColor3f (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);

//calle

glColor3f (0.3, 0.3, 0.3);

glVertex2i(0,82);

glVertex2i(1000,82);

glVertex2i(1000,0);

glVertex2i(0,0);



//piedras

glColor3f (0.6, 0.6, 0.6);

glVertex2i(105,180);

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);

//entrada

glVertex2i(345,195);

glVertex2i(405,195);

glVertex2i(405,120);

glVertex2i(345,120);



// Casa

glColor3f (0.2, 0.5, 1.0);

glVertex2i(210,450);

glVertex2i(540,450);

glVertex2i(540,195);
glVertex2i(210,195);

// Techo casa

glColor3f (0.7, 0.6, 1.0);

glVertex2i(210,495);

glVertex2i(540,495);

glVertex2i(585,450);

glVertex2i(165,450);

// Techo cochera

glVertex2i(75,345);

glVertex2i(210,345);

glVertex2i(210,315);

glVertex2i(60,315);

//Cortina

glColor3f (0.9, 0.9, 0.9);

glVertex2i(90,315);

glVertex2i(210,315);

glVertex2i(210,195);

glVertex2i(90,195);



//Puerta

glColor3f (1.0, 1.0, 1.0);

glVertex2i(345,300);

glVertex2i(405,300);

glVertex2i(405,195);

glVertex2i(345,195);
//Columnas

glColor3f (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);



//Ventanas izq

glColor3f (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 der

glVertex2i(450,435);

glVertex2i(510,435);

glVertex2i(510,375);

glVertex2i(450,375);



glVertex2i(450,300);

glVertex2i(510,300);

glVertex2i(510,240);

glVertex2i(450,240);

//Ventanas balcon

glVertex2i(345,435);

glVertex2i(405,435);

glVertex2i(405,330);

glVertex2i(345,330);
//Ventanas puerta

glVertex2i(360,285);

glVertex2i(390,285);

glVertex2i(390,210);

glVertex2i(360,210);



//Tallos

glColor3f (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

glColor3f (0.7, 0.3, 1.0);

glVertex2i(375,480);

glVertex2i(435,435);
glVertex2i(315,435);

glEnd();

//arboles

glLineWidth (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 Calle

glLineWidth (4);

glColor3f (1.0, 1.0, 1.0);

glBegin(GL_LINES);



for(i=0;i<50;i++){
glVertex2i(0+120*i,41);

glVertex2i(90+120*i,41);

}



//Barandal

glVertex2i(344,375);

glVertex2i(406,375);

for(i=0;i<7;i++){

glVertex2i(345+10*i,375);

glVertex2i(345+10*i,330);

}

//Divicion Ventana

glVertex2i(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);

glVertex2i(270,375);

glVertex2i(270,262);

glVertex2i(270,240);
glVertex2i(480,397);

glVertex2i(480,375);

glVertex2i(480,262);

glVertex2i(480,240);



glEnd();




//Contorno ventanas

glBegin(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);

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();

//Chapa

glPointSize(4);

glColor3f (0.0, 0.0, 0.0);

glBegin(GL_POINTS);

glVertex2i(352,247);

glVertex2i(352,245);

glEnd();
8°- Oso

Esta 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.

nuestras instrucción se llamara circuloc devido a que solo será la circunferencia

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();

}

y con circulo haremos un circulo con area

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();

}

Y así juntaremos las coordenadas hasta lograr hacer un oso.

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);

       // 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

{

glClear(GL_COLOR_BUFFER_BIT);

//panza

glColor3f(0.6,0.4,0.2);           //borra pantalla

circulo(280,200,100);

glColor3f(0.7,0.5,0.4);

circulo(280,200,60);

//pie izq

glColor3f(0.6,0.4,0.2);

circulo(190,100,40);

glColor3f(0.7,0.5,0.4);

circulo(190,100,20);

//pie der

glColor3f(0.6,0.4,0.2);

circulo(370,100,40);

glColor3f(0.7,0.5,0.4);

circulo(370,100,20);
//mano derecha

glColor3f(0.6,0.4,0.2);

circulo(390,280,40);

glColor3f(0.7,0.5,0.4);

circulo(390,280,20);

//mano izq

glColor3f(0.6,0.4,0.2);

circulo(170,280,40);

glColor3f(0.7,0.5,0.4);

circulo(170,280,20);

//cabeza

glColor3f(0.6,0.4,0.2);

circulo(280,350,60);

//oreja izq

glColor3f(0.6,0.4,0.2);

circulo(220,400,20);

glColor3f(0.7,0.5,0.4);

circulo(220,400,10);

//oreja dere

glColor3f(0.6,0.4,0.2);

circulo(340,400,20);

glColor3f(0.7,0.5,0.4);

circulo(340,400,10);

//ojo izq
glColor3f(1.0,1.0,1.0);

circulo(260,370,20);

glColor3f(0.0,0.5,0.4);

circulo(260,370,5);

//ojo der

glColor3f(1.0,1.0,1.0);

circulo(300,370,10);

glColor3f(0.0,0.5,0.4);

circulo(300,370,5);

//nariz

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();
9°-Cubo con Cubitos

Esta 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 cubos que ya estan hechos para que
no se deformen o salga una linea más grande que otra.



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 y cambiaremos su color.



11°-Animación circulo

Haremos 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);

       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++;

}



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();
12°- Nombre 3D
Este nombre se hará a base se cubitos se ira poniendo uno tras otro, aquí las coordenadas
cambiaran, cada que se haga un cubo ese cubo tendra las coordenadas 0,0 y al ultimo
solo modificaremos los colores.
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;

      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);

      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);

  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.

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 la hubicacion 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();

}

void dibuja(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esta

glColor3f (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);

//Sol

glColor3f (1.0, 1.0, 0.0);

circulo( 1000,1000,100); //funcion circulo

glEnd();

//Mercurio

glColor3f (0.65, 0.93, 0.69);

circulo( 1000+ sin(ang) * 150,1000 + cos(ang) * 150,25);

ang==ang+0.05;
glEnd();

//Venus

glColor3f (0.50, 0.0, 1.0);

circulo( 1000- sin(ang) * 250,1000 - cos(ang) * 250,30);

ang==ang+0.01;

glEnd();

//Tierra

glColor3f (0.0, 0.0, 0.19);

circulo( 1000 + sin(ang) * 350,1000 - cos(ang) * 350,40);

ang==ang+0.01;

glEnd();

//Marte

glColor3f (1.0, 0.30, 0.0);

circulo( 1000+ sin(ang) * 450,1000 + cos(ang) * 450,41);

ang=ang+0.01;

glEnd();

//Jupiter

glColor3f (0.72, 0.19, 0.34);

circulo( 1000- sin(ang) * 570,1000 - cos(ang) * 570,60);

ang=ang+0.01;

glEnd();

//Saturno

glColor3f (1.0, 0.0, 0.0);

circulo( 1000+ sin(ang) * 690,1000 + cos(ang) * 690,50);
ang=ang+0.01;

glEnd();

//Urano

glColor3f (0.0, 1.0, 1.0);

circulo( 1000- sin(ang) * 820,1000 - cos(ang) * 820,40);

ang=ang+0.01;

glEnd();

//Neptuno

glColor3f (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++){}//pausa

if(ang==360){ang=0;}// se repite idefinidamente

glFlush(); //forzar dibujado

glutSwapBuffers(); //y esto

}
14°-Movimiento en ocho

Esta practica la haremos haciendo 4 circulos 2 seran solo la circunferencia y los
pondremos pegados, los otros 2 seran con area y los pondremos encima de modo que se
de la forma de un 8, haremos un circulo más pequeño que 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 y haremso 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();

}

void dibuja(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto



glBegin(GL_QUADS);//Cuadros fondo semaforo

glColor3f(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 Roja

circulo(247,226,34);



glColor3f(0.0,0.0,0.0);//Luces Amarrilla

circulo(247,302,34);



glColor3f(0.0,0.0,0.0);//Luces Verde

circulo(247,381,34);




a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lento

for(int j=1;j<=10000000;j++){}//pausa

if(a>1 && a<20){

glColor3f(1.0,0.0,0.0);//Luces Roja
circulo(247,381,34);

}// se repite idefinidamente

// se repite idefinidamente



if(a>20 && a<40){

glColor3f(0.0,1.0,0.0);//Luces Roja

circulo(247,226,34);

}

if(a>40 && a<45){

glColor3f(0.0,1.0,0.0);//Luces Roja

circulo(247,226,34);

}

if(a>45 && a<50){

glColor3f(0.0,1.0,0.0);//Luces Roja

circulo(247,226,34);

}// se repite idefinidamente



if(a>50 && a<60){

glColor3f(1.0,1.0,0.0);//Luces Roja

circulo(247,302,34);

}// se repite idefinidamente



if(a>60){a=0;}

glFlush(); //forzar dibujado
glutSwapBuffers(); //y esto

}
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. y se podra mover con el teclado.

De igual forma tedra teclas para hacer un zoom.



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();



      }



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);

       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



          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);

        glVertex3i(0,0,-3);

        glVertex3f(0+cos(angulo)*45, 0+sin(angulo)*45,0);

}

glEnd();*/

     // Colocamos una luz

glLightfv(GL_LIGHT0,GL_DIFFUSE,(GLfloat []){0.0f,2.0f,2.0f,1.0f}); // Color de la luz

glLightfv(GL_LIGHT0,GL_AMBIENT,(GLfloat []){1.0, 1.0, 1.0, 4.0}); // Luz ambiente

glLightfv(GL_LIGHT0,GL_POSITION,(GLfloat []){0.0f,12.0f,5.0f,0.0f}); // Posición de la
luz

glLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0});

//glShadeModel (GL_SMOOTH);

// esfera

glPushMatrix();

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);

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;

               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:

                  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();
}
Manual de prácticas en OPEN GL Dev C

Mais conteúdo relacionado

Semelhante a Manual de prácticas en OPEN GL Dev C

Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev csantios11
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev crayder1
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev csantios11
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminadojesicecytem
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminadoKaren_Avilaa
 
Trabajo opengl
Trabajo openglTrabajo opengl
Trabajo openglmakapxndx
 
Manual de practicas de dev c++
Manual de practicas de dev c++Manual de practicas de dev c++
Manual de practicas de dev c++Alincita Simon
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de openglAlincita Simon
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GLAlincita Simon
 
Utilización del software de diseño(C++)
Utilización del software de diseño(C++) Utilización del software de diseño(C++)
Utilización del software de diseño(C++) equipo3-303
 
Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Pablo Solis
 
Practicas OpenglC++
Practicas OpenglC++Practicas OpenglC++
Practicas OpenglC++jesicecytem
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Mery_Angie_Ugalde
 

Semelhante a Manual de prácticas en OPEN GL Dev C (20)

Renee opengl karla
Renee opengl karlaRenee opengl karla
Renee opengl karla
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev c
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev c
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev c
 
Manual de practicas de open gl con dev c
Manual de practicas de open gl con dev cManual de practicas de open gl con dev c
Manual de practicas de open gl con dev c
 
Proyecto de rene
Proyecto de reneProyecto de rene
Proyecto de rene
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminado
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminado
 
Manual open gl
Manual open glManual open gl
Manual open gl
 
Manual open gl
Manual open glManual open gl
Manual open gl
 
Trabajo opengl
Trabajo openglTrabajo opengl
Trabajo opengl
 
Manual de practicas de dev c++
Manual de practicas de dev c++Manual de practicas de dev c++
Manual de practicas de dev c++
 
manual de practicas de opengl
manual de practicas de openglmanual de practicas de opengl
manual de practicas de opengl
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GL
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
 
Utilización del software de diseño(C++)
Utilización del software de diseño(C++) Utilización del software de diseño(C++)
Utilización del software de diseño(C++)
 
Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303
 
Primitivas
PrimitivasPrimitivas
Primitivas
 
Practicas OpenglC++
Practicas OpenglC++Practicas OpenglC++
Practicas OpenglC++
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez
 

Mais de Pachoon Vargas

Manual de practicas Photoshop
Manual de practicas PhotoshopManual de practicas Photoshop
Manual de practicas PhotoshopPachoon Vargas
 
Ventana de photoshop cs4
Ventana de photoshop cs4Ventana de photoshop cs4
Ventana de photoshop cs4Pachoon Vargas
 
Herramientas Photoshop Cs4
Herramientas Photoshop Cs4Herramientas Photoshop Cs4
Herramientas Photoshop Cs4Pachoon Vargas
 
Práctica 3 "Barra de herramientas Photoshop CS4"
Práctica 3 "Barra de herramientas Photoshop CS4"Práctica 3 "Barra de herramientas Photoshop CS4"
Práctica 3 "Barra de herramientas Photoshop CS4"Pachoon Vargas
 

Mais de Pachoon Vargas (8)

Manual de practicas
Manual de practicasManual de practicas
Manual de practicas
 
Manual de practicas Photoshop
Manual de practicas PhotoshopManual de practicas Photoshop
Manual de practicas Photoshop
 
Ventana de photoshop cs4
Ventana de photoshop cs4Ventana de photoshop cs4
Ventana de photoshop cs4
 
Herramientas Photoshop Cs4
Herramientas Photoshop Cs4Herramientas Photoshop Cs4
Herramientas Photoshop Cs4
 
Ventana Photoshop CS4
Ventana Photoshop CS4Ventana Photoshop CS4
Ventana Photoshop CS4
 
Práctica 3 "Barra de herramientas Photoshop CS4"
Práctica 3 "Barra de herramientas Photoshop CS4"Práctica 3 "Barra de herramientas Photoshop CS4"
Práctica 3 "Barra de herramientas Photoshop CS4"
 
Manual de prácticas
Manual de prácticasManual de prácticas
Manual de prácticas
 
Guía visual
Guía visualGuía visual
Guía visual
 

Último

Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 

Último (20)

Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 

Manual de prácticas en OPEN GL Dev C

  • 1. CECyTEM PLANTEL TECÁMAC Manual de prácticas en OPEN GL “Dev C++” Alumnos: Belmonte Vargas Baruch Isaí Ponce Serrano Carlos Andrés Prof.: René Domínguez Escalona Grupo: 303
  • 2. Introducción. En este manual se podrá apreciar algunas de las principales funciones del lenguaje de programación de OPEN GL y así se podrá aplicar para diseño gráfico, se mostraran funciones principales o primitivas del programa para la realización de objetos en el programa se verá desde lo más básico hasta lo más avanzado como puede ser desde la elaboración de un cuadro hasta la animación de un objeto en 2D & 3D.
  • 3. Índice. 1°- Tablero de Ajedrez 2°-Estrella 3°- Cubo con líneas 4°-Cubo delineado 5°-Muñeco con triángulos 6°-Piramide 7°-Casita 8°- Oso 9°-Cubo con Cubitos 10°-Muñeco con formas 11°-Animación circulo 12°- Nombre 3D 13°-Animación sistema solar 14°-Movimiento en ocho 15°-Semaforo 16°- Cubo 3D con líneas.
  • 4. 1° TABLERO DE AJEDREZ En esta práctica aremos un tablero de ajedrez con cuadros unos negro y uno blanco de 8*8. La realizaremos con la primitiva GL_POINTS, comenzaremos por definir el color de cada cuadro con glColor3f(0.0 , 0.0 , 0.0) que sería negro, luego el tamaño del punto glPointSize(50) y en seguida anotaremos la primitiva ya mencionada glBegin(GL_POINTS). Luego de esto se pondrán las coordenadas glVertex2i(100,800); por ejemplo deberán de ser 4 coordenadas para insertar un cuadro glVertex2i(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 pantalla glColor3f(0.0 , 0.0 , 0.0); glPointSize(50); glBegin(GL_POINTS); glVertex2i(100,500); glVertex2i(100,600);
  • 5. glVertex2i(100,700); glVertex2i(100,800); 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);
  • 6. glVertex2i(150,750); glVertex2i(150,850); 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(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);
  • 7. glVertex2i(200,750); glVertex2i(200,850); glColor3f(1.0 , 1.0 , 1.0); glPointSize(50); 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);
  • 8. glVertex2i(300,700); glVertex2i(300,800); glColor3f(1.0 , 1.0 , 1.0); glPointSize(50); glBegin(GL_POINTS); 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);
  • 9. glVertex2i(350,750); glVertex2i(350,850); glColor3f(0.0 , 0.0 , 0.0); glPointSize(50); glBegin(GL_POINTS); 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);
  • 10. glVertex2i(450,700); glVertex2i(450,800); glColor3f(0.0 , 0.0 , 0.0); glPointSize(50); glBegin(GL_POINTS); glVertex2i(450,550); glVertex2i(450,650); glVertex2i(450,750); glVertex2i(450,850); glEnd();
  • 11. 2° ESTRELLA En esta práctica haremos una estrella a base de líneas con la primitiva glBegin(GL_LINES), definiremos en tamaño de la línea y 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 { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glBegin(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);
  • 12. 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); glPointSize(10); glColor3f(0.0 , 0.0 , 0.0); glVertex2i(400,150); glVertex2i(175,300); glEnd();
  • 13. 3° CUBO CON LÍNEAS En esta práctica utilizaremos 2 primitivas glBegin(GL_QUADS) para hacer cuadros y glBegin(GL_LINES); para hacer las líneas igual 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íneas o 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 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);
  • 14. glVertex2i(250, 150); glVertex2i(200, 100); glVertex2i(250, 150); glVertex2i(350, 150); glVertex2i(350, 150); glVertex2i(300, 100); glVertex2i(250, 150); 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. 4°CUBO DELINEADO Esta 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 la instrucción glLineWidth(3) el tamaño de la línea será colocado dentro del paréntesis y le modificaremos el color de cada lado para ver así la separación de cada lado. CODIGO: void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glLineWidth(5); //enfrente glBegin(GL_QUADS); glColor3f(1.0 , 0.0 , 0.0); glVertex2i(200,200); glVertex2i(300,200); glVertex2i(300,200);
  • 16. glVertex2i(300,100); glVertex2i(300,100); glVertex2i(200,100); glVertex2i(200,100); glVertex2i(200,200); //derecha glColor3f(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); //arriba glColor3f(.0 , 1.0 , 0.0); glVertex2i(200,200); glVertex2i(250,250); glVertex2i(250,250); glVertex2i(350,250); glVertex2i(350,250); glVertex2i(300,200); glVertex2i(300,200); glVertex2i(200,200);
  • 17. glEnd(); //enfrente glLineWidth(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); //derecha glVertex2i(300,200); glVertex2i(350,250); glVertex2i(350,250); glVertex2i(350,150); glVertex2i(350,150); glVertex2i(300,100); glVertex2i(300,100); glVertex2i(300,200); //arriba
  • 19. 5°MUÑECO CON TRIÁNGULOS En esta práctica haremos un muñeco utilizando una nueva primitiva glBegin(GL_TRIANGLES) y también primitivas ya utilizadas antes. 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 es necesario 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 solo ponié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 pantalla
  • 20. glPointSize(10); //pasto glBegin(GL_QUADS); glColor3f(0.0 , 1.0 , 0.0); glVertex2i(0,60); glVertex2i(1000,60); glVertex2i(1000,0); glVertex2i(0,0); glEnd(); // pie izquierdo glBegin(GL_TRIANGLES); glColor3f(1.0 , 0.0 , 0.0); glVertex2i(140,40); glVertex2i(200,40); glVertex2i(160,60); //pie derecho glColor3f(1.0 , 0.0 , 0.0); glVertex2i(300,100); glVertex2i(320,120); glVertex2i(360,100); glEnd();
  • 21. glBegin(GL_TRIANGLES); glColor3f(1.0 , 0.0 , 1.0); //pierna izquierda glVertex2i(200,40); glColor3f(1.0 , 1.0 , 1.0); glVertex2i(160,160); glVertex2i(200,200); glEnd(); //muslo derecho glBegin(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 izquierdo
  • 22. glVertex2i(160,320); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(100,260); glVertex2i(120,200); glEnd(); glBegin(GL_TRIANGLES); glColor3f(0.0 , 1.0 , 0.0); //brazo derecho glVertex2i(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 derecho glVertex2i(320,160); glVertex2i(280,140); glVertex2i(300,100); //mano izq glVertex2i(100,260);
  • 24. glBegin(GL_TRIANGLES); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(400,200); glVertex2i(440,180); glVertex2i(360,180); //trofeo izq glVertex2i(400,200); glVertex2i(340,340); glVertex2i(360,320); glVertex2i(360,320); glVertex2i(380,340); glVertex2i(340,340); //trofeo der glVertex2i(400,200); glVertex2i(460,340); glVertex2i(440,320); glVertex2i(440,320); glVertex2i(460,340); glVertex2i(420,340); //trofeo glVertex2i(400,200);
  • 25. glVertex2i(420,340); glVertex2i(380,340); glEnd(); glBegin(GL_QUADS); glColor3f(0.0 , 1.0 , 0.0); //cuerpo glVertex2i(160,320); glVertex2i(280,320); glVertex2i(280,200); glVertex2i(160,200); glEnd(); //cuello glBegin(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);
  • 26. //balon 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); glEnd();
  • 27. 6° PIRAMIDE Esta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de ella podemos cambiar los valores, 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 distancia La instrucción va antes de que empecemos a colocar las coordenadas, y pondremos la variable dentro de las coordenadas, en este 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 se efectuara el mismo cuadro. Luego de Esto haremos las líneas diagonales para simular la pirámide vista desde arriba. CODIGO: void dibuja(void) //funcion dibuja { int i; glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glPointSize(10); glColor3f(0.0 , 0.0 , 0.0); glBegin(GL_LINES); for (i=0;i<=10;i++){ //ABAJO
  • 29. glVertex2i(160, 340); glVertex2i(140, 360); glVertex2i(120, 380); glVertex2i(100, 400); glVertex2i(80, 420); glVertex2i(60, 440); glVertex2i(300, 300); glVertex2i(320, 320); glVertex2i(340, 340); glVertex2i(360, 360); glVertex2i(380, 380); glVertex2i(400, 400); glVertex2i(420, 420); glVertex2i(440, 440); glVertex2i(240, 240); glVertex2i(220, 220);
  • 30. 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); glVertex2i(340,160); glVertex2i(360,140); glVertex2i(380,120); glVertex2i(400,100); glVertex2i(420,80); glVertex2i(440,60); glEnd();
  • 31. 7° CASITA. Esta práctica es como un repaso de todas las primitivas e instrucciones vistas anteriormente. Para lograr dicho dibujo empezaremos 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 la primitiva POLYGON. De igual forma ocuparemos for para los pinos, pero primero tenemos que hacer el pasto como ya antes mencionamos haremos 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 figuras que haremos. CODIGO: void dibuja(void) { int i,j=0;
  • 32. /* borra la pantalla */ glClear(GL_COLOR_BUFFER_BIT); //rejas for(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); //pasto glColor3f (0.0, 0.5, 0.0); glVertex2i(0,240); glVertex2i(1000,240); glVertex2i(1000,120);
  • 33. glVertex2i(0,120); //banqueta glColor3f (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); //calle glColor3f (0.3, 0.3, 0.3); glVertex2i(0,82); glVertex2i(1000,82); glVertex2i(1000,0); glVertex2i(0,0); //piedras glColor3f (0.6, 0.6, 0.6); glVertex2i(105,180); glVertex2i(135,180); glVertex2i(135,165); glVertex2i(105,165);
  • 35. glVertex2i(210,195); // Techo casa glColor3f (0.7, 0.6, 1.0); glVertex2i(210,495); glVertex2i(540,495); glVertex2i(585,450); glVertex2i(165,450); // Techo cochera glVertex2i(75,345); glVertex2i(210,345); glVertex2i(210,315); glVertex2i(60,315); //Cortina glColor3f (0.9, 0.9, 0.9); glVertex2i(90,315); glVertex2i(210,315); glVertex2i(210,195); glVertex2i(90,195); //Puerta glColor3f (1.0, 1.0, 1.0); glVertex2i(345,300); glVertex2i(405,300); glVertex2i(405,195); glVertex2i(345,195);
  • 36. //Columnas glColor3f (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); //Ventanas izq glColor3f (0.8, 0.8, 1.0);
  • 38. //Ventanas puerta glVertex2i(360,285); glVertex2i(390,285); glVertex2i(390,210); glVertex2i(360,210); //Tallos glColor3f (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 glColor3f (0.7, 0.3, 1.0); glVertex2i(375,480); glVertex2i(435,435);
  • 39. glVertex2i(315,435); glEnd(); //arboles glLineWidth (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 Calle glLineWidth (4); glColor3f (1.0, 1.0, 1.0); glBegin(GL_LINES); for(i=0;i<50;i++){
  • 43. 8°- Oso Esta 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. nuestras instrucción se llamara circuloc devido a que solo será la circunferencia 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(); } y con circulo haremos un circulo con area 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);
  • 44. 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: 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);
  • 45. 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 { glClear(GL_COLOR_BUFFER_BIT); //panza glColor3f(0.6,0.4,0.2); //borra pantalla circulo(280,200,100); glColor3f(0.7,0.5,0.4); circulo(280,200,60); //pie izq glColor3f(0.6,0.4,0.2); circulo(190,100,40); glColor3f(0.7,0.5,0.4); circulo(190,100,20); //pie der glColor3f(0.6,0.4,0.2); circulo(370,100,40); glColor3f(0.7,0.5,0.4); circulo(370,100,20);
  • 46. //mano derecha glColor3f(0.6,0.4,0.2); circulo(390,280,40); glColor3f(0.7,0.5,0.4); circulo(390,280,20); //mano izq glColor3f(0.6,0.4,0.2); circulo(170,280,40); glColor3f(0.7,0.5,0.4); circulo(170,280,20); //cabeza glColor3f(0.6,0.4,0.2); circulo(280,350,60); //oreja izq glColor3f(0.6,0.4,0.2); circulo(220,400,20); glColor3f(0.7,0.5,0.4); circulo(220,400,10); //oreja dere glColor3f(0.6,0.4,0.2); circulo(340,400,20); glColor3f(0.7,0.5,0.4); circulo(340,400,10); //ojo izq
  • 48. 9°-Cubo con Cubitos Esta 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 cubos que ya estan hechos para que no se deformen o salga una linea más grande que otra. 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 y cambiaremos su color. 11°-Animación circulo Haremos que un circulo se mueva alrededor de la pantalla con una instruccion nueva. CODIGO: void circulo (int x, int y, int radio) {
  • 49. int angulo=0; glBegin(GL_TRIANGLE_FAN); glColor3f (0.12, 0.48, 0.62); glVertex2f(x,y); 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++;
  • 50. } if(y>=1 && y<600 && x==600){ circulo(700,100+y,40); glFlush(); y++; } 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();
  • 51. 12°- Nombre 3D Este nombre se hará a base se cubitos se ira poniendo uno tras otro, aquí las coordenadas cambiaran, cada que se haga un cubo ese cubo tendra las coordenadas 0,0 y al ultimo solo modificaremos los colores.
  • 52. 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; 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){
  • 53. 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); glVertex3f(-.50,0.0,10.5);
  • 54. 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();
  • 55. 13°-Animación sistema solar. 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 la hubicacion 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);
  • 56. for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void dibuja(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esta glColor3f (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); //Sol glColor3f (1.0, 1.0, 0.0); circulo( 1000,1000,100); //funcion circulo glEnd(); //Mercurio glColor3f (0.65, 0.93, 0.69); circulo( 1000+ sin(ang) * 150,1000 + cos(ang) * 150,25); ang==ang+0.05;
  • 57. glEnd(); //Venus glColor3f (0.50, 0.0, 1.0); circulo( 1000- sin(ang) * 250,1000 - cos(ang) * 250,30); ang==ang+0.01; glEnd(); //Tierra glColor3f (0.0, 0.0, 0.19); circulo( 1000 + sin(ang) * 350,1000 - cos(ang) * 350,40); ang==ang+0.01; glEnd(); //Marte glColor3f (1.0, 0.30, 0.0); circulo( 1000+ sin(ang) * 450,1000 + cos(ang) * 450,41); ang=ang+0.01; glEnd(); //Jupiter glColor3f (0.72, 0.19, 0.34); circulo( 1000- sin(ang) * 570,1000 - cos(ang) * 570,60); ang=ang+0.01; glEnd(); //Saturno glColor3f (1.0, 0.0, 0.0); circulo( 1000+ sin(ang) * 690,1000 + cos(ang) * 690,50);
  • 58. ang=ang+0.01; glEnd(); //Urano glColor3f (0.0, 1.0, 1.0); circulo( 1000- sin(ang) * 820,1000 - cos(ang) * 820,40); ang=ang+0.01; glEnd(); //Neptuno glColor3f (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++){}//pausa if(ang==360){ang=0;}// se repite idefinidamente glFlush(); //forzar dibujado glutSwapBuffers(); //y esto }
  • 59. 14°-Movimiento en ocho Esta practica la haremos haciendo 4 circulos 2 seran solo la circunferencia y los pondremos pegados, los otros 2 seran con area y los pondremos encima de modo que se de la forma de un 8, haremos un circulo más pequeño que 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 y haremso 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);
  • 60. 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) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto glBegin(GL_QUADS);//Cuadros fondo semaforo glColor3f(0.2 , 0.2 , 0.0); glVertex2i(170,437); glVertex2i(320,437);
  • 61. 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 Roja circulo(247,226,34); glColor3f(0.0,0.0,0.0);//Luces Amarrilla circulo(247,302,34); glColor3f(0.0,0.0,0.0);//Luces Verde circulo(247,381,34); a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lento for(int j=1;j<=10000000;j++){}//pausa if(a>1 && a<20){ glColor3f(1.0,0.0,0.0);//Luces Roja
  • 62. circulo(247,381,34); }// se repite idefinidamente // se repite idefinidamente if(a>20 && a<40){ glColor3f(0.0,1.0,0.0);//Luces Roja circulo(247,226,34); } if(a>40 && a<45){ glColor3f(0.0,1.0,0.0);//Luces Roja circulo(247,226,34); } if(a>45 && a<50){ glColor3f(0.0,1.0,0.0);//Luces Roja circulo(247,226,34); }// se repite idefinidamente if(a>50 && a<60){ glColor3f(1.0,1.0,0.0);//Luces Roja circulo(247,302,34); }// se repite idefinidamente if(a>60){a=0;} glFlush(); //forzar dibujado
  • 64.
  • 65. 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. y se podra mover con el teclado. De igual forma tedra teclas para hacer un zoom. 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);
  • 66. }} glEnd(); } 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);
  • 67. 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); 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 )
  • 68. { 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 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;
  • 69. 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); glVertex3i(0,0,-3); glVertex3f(0+cos(angulo)*45, 0+sin(angulo)*45,0); } glEnd();*/ // Colocamos una luz glLightfv(GL_LIGHT0,GL_DIFFUSE,(GLfloat []){0.0f,2.0f,2.0f,1.0f}); // Color de la luz glLightfv(GL_LIGHT0,GL_AMBIENT,(GLfloat []){1.0, 1.0, 1.0, 4.0}); // Luz ambiente glLightfv(GL_LIGHT0,GL_POSITION,(GLfloat []){0.0f,12.0f,5.0f,0.0f}); // Posición de la luz glLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0}); //glShadeModel (GL_SMOOTH); // esfera glPushMatrix(); mover(); if(malla) creaMalla(); if(ejes) creaEjes(); //glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);
  • 70. glPopMatrix (); glFlush(); glutSwapBuffers (); //anguloEsfera+=2.0f; } void reshape(int w, int h){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); 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){
  • 71. switch(key){ case 27: exit(0); case '+': zoom++; break; case '-': zoom--; break; 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;
  • 72. case 'e': ejes= !ejes; default: break; } glutPostRedisplay(); } void flechas(int key,int x ,int y){ switch(key){ case GLUT_KEY_LEFT: 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();
  • 73. }