Estela y naye

120
COLEGIO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS DEL ESTADO DE MEXICO Nombre del profesor: Rene Domínguez Escalona Nombre de los integrantes: Estela Elizabeth Mendoza González Nayely Sugey Mejía García Trabajo: Manual de practicas Grado: 3° Semestre Grupo: 303 Materia: Utilización de software de diseño para el manejo de gráficos. 1

Transcript of Estela y naye

Page 1: Estela y naye

COLEGIO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS DEL ESTADO DE MEXICO

Nombre del profesor: Rene Domínguez Escalona

Nombre de los integrantes:

Estela Elizabeth Mendoza González Nayely Sugey Mejía García

Trabajo: Manual de practicas

Grado: 3° Semestre

Grupo: 303

Materia: Utilización de software de diseño para el manejo de gráficos.

1

INDICE:

Page 2: Estela y naye

Introduccion sobre Open_GL……………………..3

Código del movimiento circular…………………..8

Tablero de ajedrez……………………………………9

Estrella…………………………………………………..17

Cubo con lineas……………………………………20

Cubo delineado…………………………………24

Muñeco con triángulos……………………………29

Casita…………………………………………………..37

Oso……………………………………………………..55

Cubo con cubitos…………………………………..58

Muñeco con formas………………………………..62

Animación circulo rotando……………………….68

Animación sistema solar……………………………71

Movimiento ocho…………………………………...74

Piramide………………………………………77

Semáforo……………………………………………..80

Nombre en 3D………………………………………85

Cubo en 3D………………………………………….91

2

INVESTIGACION SOBRE Open_GL:

Page 3: Estela y naye

¿Qué es Open_GL?

R= Es una especificación estándar que define una API Multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos en 2D y 3D.

¿Cuáles son las primitivas geométricas?

R=Formas geométricas por su básica constitución en las partes que la conforman se conoces también con el nombre de primitivas geométricas cuyas formas son:

GL_POINTS Dibuja puntos.

GL_LINES Dibuja líneas no conectadas.

GL_TRIANGLES Dibuja una serie de triángulos.

GL_QUADS Dibuja una serie de cuadriláteros.

GL_TRIANGLE_FAN Dibuja triángulos pegados unos con otros en forma de abanico.

¿Cómo se crea una ventana en Open:GL?

R=Los paso necesarios para crear una ventana en Open:GL, los podemos clasificar como sigue:

Creamos una ventana Establecemos de manera de visión y la perspectiva Inicializamos la variable del estado de Open_GL

Crea Ventana GL: Se puede considerar como la función principal. Crea una ventana de Windows, selecciona el Formato de pixel, crea su RC y DC y posteriormente llama a las funciones siguientes para asignarle propiedades de OpenGL.

3

Page 4: Estela y naye

Elimina Ventana GL: Libera todos los recursos usados por la ventana.

Inicializa Escena GL: Establece el marco de visión (Viewport) de la escena, así como la perspectiva que vamos a Utilizar.

¿Qué es el GLVector?

R= En OpenGL los objetos los definimos como un conjunto ordenado de vértices. Para especificar un vértice disponemos del comando glVertex*(); void glVertex{234}{sifd} (TYPE coords);

Especifica un vértice para el uso en la descripción de un objeto geométrico. El número de coordenadas puede ser de 2 (x,y), 3 (x,y,z) y 4 (x,y,z,w). Si se usa una versión en la que no se especifica z o w, será entendido que a z se le asigna el valor 0 y a w el valor 1.

¿Aplicaciones de Open_GL?

Codificación del Color en modos RGBA (Rojo-Verde-Azul-Alfa) o de color indexado.

Visualización y Modelado que permite disponer objetos en una escena tridimensional, mover nuestra cámara por el espacio y seleccionar la posición ventajosa deseada para visualizar la escena de composición.

Mapeado de texturas que ayuda a traer realismo a nuestros modelos por medio del dibujo de superficies realistas en las caras de nuestros modelos poligonales

4

Page 5: Estela y naye

La iluminación de materiales es una parte indispensable de cualquier gráfico 3D. OpenGL provee de comandos para calcular el color de cualquier punto dadas las propiedades del material y las fuentes de luz en la habitación.

El sombreado Gouraud es una técnica usada para aplicar sombreados suaves a un objeto 3D y producir una sutil diferencia de color por sus superficies.

Efectos atmosféricos como la niebla, el humo y las neblinas hacen que las imágenes producidas por ordenador sean más realistas. Sin efectos atmosféricos las imágenes aparecen a veces irrealmente nítidas y bien definidas. Niebla es un término que en realidad describe un algoritmo que simula neblinas, brumas, humo o polución o simplemente el efecto del aire, añadiendo profundidad a nuestras imágenes.

¿Cuáles son las tres librerías?

R=

Glut.h Math-h Stdlib.h

¿Qué funciones tienen las librerías?

R= Las librerías disponen de utilidades o funciones para entrada o salida implementadas en el propio lenguaje, son utilizados para el programador.

¿Cómo configurar Opengl en Dev c++?

R= OpenGL (Open Graphics Library): Es una API estándar para el manejo de gráficos en 2 y 3 dimensiones independiente de la plataforma. Es estructurado y está escrito en C. OpenGL

5

Page 6: Estela y naye

tiene funciones para renderizado en 2 y 3 dimensiones, rotación, traslación, pintado, etc. Pero OpenGL NO provee métodos para creación de ventanas manejo de dispositivos como teclado, ratón, etc. OpeGL está definido en los archivos de cabecera y , los cuales están incluidos en la mayoría de compiladores.

* GLUT: (OpenGL Utility Toolkit): Ante la incapacidad de OpenGL para crear controles gráficos como ventanas y manejar dispositivos Mark Kilgard's desarrolló GLUT la cual es una librería auxiliar a OpenGL que permite crear ventanas y manejar dispositivos como el teclado y ratón y está diseñada para integrarse completamente con OpenGL. Esta librería es multiplataforma y tiene versiones para Windows, Linux y otros.

Así que para empezar a trabajar tenemos que bajar Dev-C++ de Aquí e instalarlo, este trae a OpenGL por defecto, pero para además trabajar con GLUT necesitamos bajar el siguiente Dev-Package de (elegimos glut.3.7.6+.DevPak), abrimos Dev-C++ vamos a Herramientas -> Package Manager, nos saldrá una nueva ventana y daremos click en el botón Install, seleccionamos el paquete y lo instalamos. Luego de esto ya podremos ir a Nuevo Proyecto -> Multimedia -> glut y creamos un nuevo proyecto. Este nos creará un demo del uso de glut con OpenGL. Si lo compilamos y ejecutamos tendremos el siguiente resultado:

6CODIGO DEL MOVIMIENTO CIRCULAR:

Page 7: Estela y naye

Primero haces un GLPlushMatrix, para guardar la matriz de rotatraslacion.

Luego haces un GLTranslate con las coordenadas de tu zeppelín a continuación un GLRotate con sus ángulos.

Luego lo dibujas. Por ultimo restauras la matriz.

GLPlushMatrix();

GLTranslate( posición del circulo);

GLRotate(rotación del circulo);

Circulo();

GLpopMatriz();

7

TABLERO DE AJEDREZ

Page 8: Estela y naye

Descripción: Lo que tenemos que hacer es un tablero de ajedrez no importa los colores, este tablero debe de ser de 8x8.

Borrador:

Código:

void inicializa(void)

{

8

Page 9: Estela y naye

glClearColor(0.0,1.0,1.0,0.0); //color de fondo

glMatrixMode(GL_PROJECTION); //Modo de proyección

glLoadIdentity(); //Establece los parámetros de proyección

gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal

}

void dibuja(void) //función dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,100);

glVertex2i(300,100);

glVertex2i(500,100);

glVertex2i(700,100);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,100);

glVertex2i(400,100);

glVertex2i(600,100);

9

Page 10: Estela y naye

glVertex2i(800,100);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,200);

glVertex2i(400,200);

glVertex2i(600,200);

glVertex2i(800,200);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,200);

glVertex2i(300,200);

glVertex2i(500,200);

glVertex2i(700,200);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,300);

10

Page 11: Estela y naye

glVertex2i(300,300);

glVertex2i(500,300);

glVertex2i(700,300);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,300);

glVertex2i(400,300);

glVertex2i(600,300);

glVertex2i(800,300);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,400);

glVertex2i(400,400);

glVertex2i(600,400);

glVertex2i(800,400);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

11

Page 12: Estela y naye

glBegin (GL_POINTS);

glVertex2i(100,400);

glVertex2i(300,400);

glVertex2i(500,400);

glVertex2i(700,400);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,500);

glVertex2i(300,500);

glVertex2i(500,500);

glVertex2i(700,500);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,500);

glVertex2i(400,500);

glVertex2i(600,500);

glVertex2i(800,500);

12

Page 13: Estela y naye

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,600);

glVertex2i(400,600);

glVertex2i(600,600);

glVertex2i(800,600);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,600);

glVertex2i(300,600);

glVertex2i(500,600);

glVertex2i(700,600);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,700);

glVertex2i(300,700);

glVertex2i(500,700);

13

Page 14: Estela y naye

glVertex2i(700,700);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,700);

glVertex2i(400,700);

glVertex2i(600,700);

glVertex2i(800,700);

glColor3f(0.0 ,0.0 ,0.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(100,800);

glVertex2i(300,800);

glVertex2i(500,800);

glVertex2i(700,800);

glColor3f(0.0 ,0.0 ,1.0);

glPointSize(50);

glBegin (GL_POINTS);

glVertex2i(200,800);

glVertex2i(400,800);

glVertex2i(600,800);

14

Page 15: Estela y naye

glVertex2i(800,800);

glEnd();

glFlush(); //forza dibujo

Como quedo al final

15

Estrella

Page 16: Estela y naye

Descripción: Lo que tenemos que hacer es una estrella con líneas no importa el tamaño de la estrella.

Borrador

Código:

void dibuja(void) //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glColor3f(0.0 , 0.0 , 1.0);

16

Page 17: Estela y naye

glBegin(GL_LINES);

glVertex2i(400,700);

glVertex2i(700,100);

glVertex2i(700,100);

glVertex2i(100,500);

glVertex2i(100,500);

glVertex2i(800,500);

glVertex2i(800,500);

glVertex2i(200,100);

glVertex2i(200,100);

glVertex2i(400,700);

glEnd();

glFlush(); //forza dibujo

}

Como quedo

17

Page 18: Estela y naye

Descripción: Tenemos que realizar un cubo echo de líneas de manera que se pueda visualizar todo completo.

18

Cubo con líneas

Page 19: Estela y naye

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glColor3f(0.0 , 0.0 , 0.0);

glLineWidth(4);

19

Page 20: Estela y naye

glBegin(GL_LINES);

glVertex2i(300,300);

glVertex2i(400,300);

glVertex2i(370,370);

glVertex2i(470,370);

glVertex2i(300,300);

glVertex2i(370,370);

glVertex2i(400,300);

glVertex2i(470,370);

glVertex2i(370,370);

glVertex2i(370,470);

glVertex2i(470,370);

glVertex2i(470,470);

glVertex2i(370,470);

glVertex2i(470,470);

glVertex2i(300,300);

glVertex2i(300,400);

glVertex2i(300,400);

glVertex2i(370,470);

20

Page 21: Estela y naye

glVertex2i(470,470);

glVertex2i(400,400);

glVertex2i(400,400);

glVertex2i(300,400);

glVertex2i(400,400);

glVertex2i(400,300);

glEnd();

glFlush(); //forza dibujo

}

Como quedo

21

Page 22: Estela y naye

22

CUBO DELINEADO

Page 23: Estela y naye

Descripción: Tenemos que realizar un cubo per que el contorno se vea y debe de estar relleno de manera que se pueda visualizar tres caras.

Borrador:

Código:

void dibuja(void) //función dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glBegin(GL_QUADS);

// parte de frente

23

Page 24: Estela y naye

glColor3f(1.0,0.0,0.0);

glVertex2i(200,200);

glColor3f(1.0,0.0,0.0);

glVertex2i(400,200);

glColor3f(1.0,0.0,0.0);

glVertex2i(400,400);

glColor3f(1.0,0.0,0.0);

glVertex2i(200,400);

// parte de lado

glColor3f(0.0,1.0,0.0);

glVertex2i(400,200);

glColor3f(0.0,1.0,0.0);

glVertex2i(500,300);

glColor3f(0.0,1.0,0.0);

glVertex2i(500,500);

glColor3f(0.0,1.0,0.0);

glVertex2i(400,400);

// parte de arriba

glColor3f(0.0,0.0,1.0);

glVertex2i(200,400);

glColor3f(0.0,0.0,1.0);

glVertex2i(400,400);

24

Page 25: Estela y naye

glColor3f(0.0,0.0,1.0);

glVertex2i(500,500);

glColor3f(0.0,0.0,1.0);

glVertex2i(300,500);

glEnd();

glLineWidth(5);

glBegin(GL_LINES);

glColor3f(0.0,0.0,0.0);

glVertex2i(200,200);

glVertex2i(400,200);

glVertex2i(400,200);

glVertex2i(400,400);

glVertex2i(400,400);

glVertex2i(200,400);

glVertex2i(200,400);

glVertex2i(200,200);

glVertex2i(400,200);

glVertex2i(500,300);

glVertex2i(500,300);

glVertex2i(500,500);

glVertex2i(500,500);

25

Page 26: Estela y naye

glVertex2i(400,400);

glVertex2i(400,400);

glVertex2i(400,200);

glVertex2i(200,400);

glVertex2i(400,400);

glVertex2i(400,400);

glVertex2i(500,500);

glVertex2i(500,500);

glVertex2i(300,500);

glVertex2i(300,500);

glVertex2i(200,400);

glEnd();

glFlush(); //forza dibujo

}

Resultado:

26

Page 27: Estela y naye

27Muñeco con triangulos

Page 28: Estela y naye

Descripción: Tenemos que realizar un muñeco echo por puros triángulos de manera que se vea la forma del dibujo.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

28

Page 29: Estela y naye

glColor3f(1.0 , 0.0 , 0.0);

// triangulo de la cabeza

glBegin(GL_TRIANGLES);

glColor3f(0.0,0.0,1.0);

glVertex2i(250,750);

glColor3f(0.0,0.0,1.0);

glVertex2i(550,750);

glColor3f(0.0,0.0,1.0);

glVertex2i(400,850);

//triangulo de la cabeza 2

glColor3f(0.0,1.0,0.0);

glVertex2i(300,750);

glColor3f(0.0,1.0,0.0);

glVertex2i(500,750);

glColor3f(0.0,1.0,0.0);

glVertex2i(400,600);

//triangulo pequeño del cuerpo

glColor3f(0.0,0.0,0.0);

glVertex2i(400,550);

glColor3f(0.0,0.0,0.0);

glVertex2i(425,600);

glColor3f(0.0,0.0,0.0);

29

Page 30: Estela y naye

glVertex2i(374,600);

// triangulos de la mano izquierda

glColor3f(1.0,0.0,0.0);

glVertex2i(300,600);

glColor3f(1.0,0.0,0.0);

glVertex2i(100,300);

glColor3f(1.0,.0,0.0);

glVertex2i(50,400);

glColor3f(0.0,1.0,0.0);

glVertex2i(50,400);

glColor3f(0.0,1.0,1.0);

glVertex2i(0,450);

glColor3f(1.0,1.0,0.0);

glVertex2i(0,350);

// triangulos de la mano derecha

glColor3f(0.0,0.0,1.0);

glVertex2i(500,600);

glColor3f(0.0,0.0,1.0);

glVertex2i(650,300);

glColor3f(0.0,0.0,1.0);

glVertex2i(700,350);

30

Page 31: Estela y naye

glColor3f(1.0,0.0,0.0);

glVertex2i(700,350);

glColor3f(1.0,0.0,0.0);

glVertex2i(750,300);

glColor3f(1.0,0.0,0.0);

glVertex2i(750,400);

// triangulos de la pierna y pie izquierdo

glColor3f(1.0,0.0,1.0);

glVertex2i(350,100);

glColor3f(1.0,0.0,0.0);

glVertex2i(350,350);

glColor3f(0.0,1.0,1.0);

glVertex2i(300,300);

glColor3f(1.0,1.0,0.0);

glVertex2i(350,100);

glColor3f(1.0,0.0,1.0);

glVertex2i(250,150);

glColor3f(1.0,1.0,1.0);

glVertex2i(200,100);

// triangulos de la pierna y pie derecho

31

Page 32: Estela y naye

glColor3f(1.0,1.0,0.0);

glVertex2i(450,250);

glColor3f(1.0,0.0,1.0);

glVertex2i(600,250);

glColor3f(0.0,1.0,1.0);

glVertex2i(450,350);

glColor3f(0.0,0.0,1.0);

glVertex2i(600,150);

glColor3f(0.0,1.0,0.0);

glVertex2i(750,150);

glColor3f(0.0,0.0,0.0);

glVertex2i(675,200);

glColor3f(1.0,1.0,0.0);

glVertex2i(600,150);

glColor3f(1.0,0.0,1.0);

glVertex2i(600,250);

glColor3f(0.0,1.0,1.0);

glVertex2i(550,200);

glEnd();

// cuerpo del muñeco

32

Page 33: Estela y naye

glBegin(GL_QUADS);

glColor3f(1.0,1.0,0.0);

glVertex2i(300,350);

glColor3f(1.0,0.0,1.0);

glVertex2i(500,350);

glColor3f(0.0,1.0,1.0);

glVertex2i(500,600);

glColor3f(0.0,1.0,1.0);

glVertex2i(300,600);

// balon

glBegin(GL_QUADS);

glColor3f(1.0,1.0,0.0);

glVertex2i(600,100);

glColor3f(1.0,0.0,1.0);

glVertex2i(650,150);

glColor3f(0.0,1.0,1.0);

glVertex2i(700,150);

glColor3f(0.0,1.0,1.0);

glVertex2i(750,100);

// balon 2

glBegin(GL_QUADS);

glColor3f(1.0,0.0,0.0);

33

Page 34: Estela y naye

glVertex2i(600,100);

glColor3f(.0,0.0,1.0);

glVertex2i(650,50);

glColor3f(0.0,1.0,0.0);

glVertex2i(700,50);

glColor3f(1.0,0.0,0.0);

glVertex2i(750,100);

glEnd();

glFlush(); //forza dibujo

}

Resultado:

34

Page 35: Estela y naye

35

Page 36: Estela y naye

Descripción: Tenemos que realizar una casa con todas las figuras geométricas.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

36

Casita

Page 37: Estela y naye

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glBegin(GL_QUADS);

// calle

glColor3f(0.0,0.0,0.0);

glVertex2i(0,0);

glVertex2i(1000,0);

glVertex2i(1000,100);

glVertex2i(0,100);

//guarnicion

glColor3f(1.0,1.0,0.0);

glVertex2i(0,100);

glVertex2i(1000,100);

glVertex2i(1000,150);

glVertex2i(0,150);

// gris

glColor3f(1.0,0.0,1.0);

glVertex2i(0,150);

glVertex2i(1000,150);

glVertex2i(1000,200);

glVertex2i(0,200);

// pasto

glColor3f(0.0,1.0,0.0);

37

Page 38: Estela y naye

glVertex2i(0,200);

glVertex2i(1000,200);

glVertex2i(1000,450);

glVertex2i(0,450);

// parte de la casa (anaranjado)

glColor3f(1.0,0.0,0.0);

glVertex2i(150,300);

glVertex2i(200,300);

glColor3f(1.0,1.0,0.0);

glVertex2i(200,600);

glVertex2i(150,600);

// parte de la casa (gris)

glColor3f(1.0,1.0,1.0);

glVertex2i(200,300);

glVertex2i(450,300);

glColor3f(1.0,1.0,1.0);

glVertex2i(450,600);

glVertex2i(200,600);

// parte de la casa (roja)

glColor3f(1.0,0.0,0.0);

glVertex2i(50,600);

glVertex2i(450,600);

38

Page 39: Estela y naye

glVertex2i(450,700);

glVertex2i(100,700);

// parte de la casa (anaranjada)

glColor3f(1.0,0.0,0.0);

glVertex2i(450,300);

glVertex2i(850,300);

glColor3f(1.0,1.0,0.0);

glVertex2i(850,800);

glVertex2i(450,800);

// parte de la casa1 (rosa)

glColor3f(1.0,0.0,1.0);

glVertex2i(550,300);

glVertex2i(600,300);

glVertex2i(600,800);

glVertex2i(550,800);

// parte de la casa2 (rosa)

glColor3f(1.0,0.0,1.0);

glVertex2i(700,300);

glVertex2i(750,300);

glVertex2i(750,800);

glVertex2i(700,800);

// parte de la casa3 (rosa)

39

Page 40: Estela y naye

glColor3f(1.0,0.0,0.0);

glVertex2i(450,600);

glVertex2i(850,600);

glVertex2i(850,650);

glVertex2i(450,650);

// parte de la casa (roja)

glColor3f(1.0,0.0,0.0);

glVertex2i(300,800);

glVertex2i(1000,800);

glVertex2i(900,900);

glVertex2i(400,900);

// parte de la casa (rosa)

glColor3f(1.0,0.0,1.0);

glVertex2i(550,150);

glVertex2i(750,150);

glVertex2i(750,300);

glVertex2i(550,300);

// puerta (blanca)

glColor3f(1.0,1.0,1.0);

glVertex2i(600,300);

glVertex2i(700,300);

glVertex2i(700,550);

40

Page 41: Estela y naye

glVertex2i(600,550);

// puesta pequeña (azul)

glColor3f(0.0,0.0,1.0);

glVertex2i(625,325);

glVertex2i(675,325);

glVertex2i(675,500);

glVertex2i(625,500);

// chapa

glColor3f(0.0,0.0,0.0);

glVertex2i(600,380);

glVertex2i(620,380);

glVertex2i(620,400);

glVertex2i(600,400);

// ventasnas 1 y 2

glColor3f(0.0,0.0,0.0);

glVertex2i(450,350);

glVertex2i(550,350);

glVertex2i(550,450);

glVertex2i(450,450);

glColor3f(0.0,0.0,0.0);

glVertex2i(450,450);

41

Page 42: Estela y naye

glVertex2i(550,450);

glVertex2i(550,550);

glVertex2i(450,550);

//ventanas 3 y 4

glColor3f(0.0,0.0,0.0);

glVertex2i(750,350);

glVertex2i(850,350);

glVertex2i(850,450);

glVertex2i(750,450);

glColor3f(0.0,0.0,0.0);

glVertex2i(750,450);

glVertex2i(850,450);

glVertex2i(850,550);

glVertex2i(750,550);

// ventanas 5 y 6

glColor3f(0.0,0.0,0.0);

glVertex2i(450,660);

glVertex2i(525,660);

glVertex2i(525,775);

glVertex2i(450,775);

// ventana 7 y 8

42

Page 43: Estela y naye

glColor3f(0.0,0.0,0.0);

glVertex2i(775,660);

glVertex2i(850,660);

glVertex2i(850,775);

glVertex2i(775,775);

// ventanas 9 y 10

glColor3f(0.0,0.0,0.0);

glVertex2i(600,750);

glVertex2i(700,750);

glVertex2i(700,800);

glVertex2i(600,800);

// linea de las ventanas 9 y 10

glColor3f(1.0,1.0,1.0);

glVertex2i(600,725);

glVertex2i(700,725);

glVertex2i(700,750);

glVertex2i(600,750);

glEnd();

glLineWidth(5);

glBegin(GL_LINES);

glColor3f(1.0,1.0,1.0);

// lineas de la calle

43

Page 44: Estela y naye

glColor3f(1.0,1.0,1.0);

glVertex2i(0,50);

glVertex2i(50,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(100,50);

glVertex2i(200,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(250,50);

glVertex2i(350,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(400,50);

glVertex2i(500,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(550,50);

glVertex2i(650,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(700,50);

44

Page 45: Estela y naye

glVertex2i(800,50);

glColor3f(1.0,1.0,1.0);

glVertex2i(850,50);

glVertex2i(950,50);

// lineas de la ventana 1

glLineWidth(7);

glColor3f(1.0,1.0,1.0);

glVertex2i(450,350);

glVertex2i(550,350);

glVertex2i(550,350);

glVertex2i(550,450);

glVertex2i(550,450);

glVertex2i(450,450);

glVertex2i(450,450);

glVertex2i(450,350);

// lineas de la ventana 2

glLineWidth(7);

glColor3f(1.0,1.0,1.0);

glVertex2i(450,450);

glVertex2i(550,450);

glVertex2i(550,450);

45

Page 46: Estela y naye

glVertex2i(550,550);

glVertex2i(550,550);

glVertex2i(450,550);

glVertex2i(450,550);

glVertex2i(450,450);

// lineas de la ventana 3

glLineWidth(7);

glColor3f(1.0,1.0,1.0);

glVertex2i(750,350);

glVertex2i(850,350);

glVertex2i(850,350);

glVertex2i(850,450);

glVertex2i(850,450);

glVertex2i(750,450);

glVertex2i(750,450);

glVertex2i(750,350);

// lineas de la ventana 4

glLineWidth(7);

glColor3f(1.0,1.0,1.0);

glVertex2i(750,450);

glVertex2i(850,450);

glVertex2i(850,450);

46

Page 47: Estela y naye

glVertex2i(850,550);

glVertex2i(850,550);

glVertex2i(750,550);

glVertex2i(750,550);

glVertex2i(750,450);

// lineas de la ventana 5 y 6

glLineWidth(7);

glColor3f(1.0,1.0,1.0);

glVertex2i(450,660);

glVertex2i(525,660);

glVertex2i(525,660);

glVertex2i(525,775);

glVertex2i(525,775);

glVertex2i(450,775);

glVertex2i(450,775);

glVertex2i(450,660);

glVertex2i(450,725);

glVertex2i(525,725);

// lineas de la ventana 7 y 8

glVertex2i(775,660);

glVertex2i(850,660);

47

Page 48: Estela y naye

glVertex2i(850,660);

glVertex2i(850,775);

glVertex2i(850,775);

glVertex2i(775,775);

glVertex2i(775,775);

glVertex2i(775,660);

glVertex2i(775,725);

glVertex2i(850,725);

glEnd();

glBegin(GL_QUADS);

glColor3f(0.6,0.5,0.4);

glVertex2i(900,350);

glVertex2i(950,350);

glVertex2i(950,500);

glVertex2i(900,500);

glEnd();

glLineWidth(3);

glBegin(GL_LINES);

glColor3f(0.0,0.5,0.1);

glVertex2i(850,500);

glVertex2i(1000,500);

48

Page 49: Estela y naye

glVertex2i(860,510);

glVertex2i(990,510);

glVertex2i(870,520);

glVertex2i(980,520);

glVertex2i(880,530);

glVertex2i(970,530);

glVertex2i(890,540);

glVertex2i(960,540);

glVertex2i(900,550);

glVertex2i(950,550);

glEnd();

glBegin(GL_QUADS);

glColor3f(0.7,0.1,0.5);

glVertex2i(100,50);

glVertex2i(300,50);

glVertex2i(300,100);

glVertex2i(100,100);

49

Page 50: Estela y naye

glVertex2i(150,100);

glVertex2i(250,100);

glVertex2i(250,150);

glVertex2i(150,150);

glColor3f(0.0,0.0,0.0);

glVertex2i(200,100);

glVertex2i(250,100);

glVertex2i(250,150);

glVertex2i(200,150);

glEnd();

glBegin(GL_QUADS);

glColor3f(0.0,0.2,0.4);

glVertex2i(700,50);

glVertex2i(700,150);

glVertex2i(1000,150);

glVertex2i(1000,50);

glVertex2i(850,150);

glVertex2i(850,200);

glVertex2i(950,200);

glVertex2i(950,150);

50

Page 51: Estela y naye

glEnd();

glFlush(); //forza dibujo

}

Resultado:

51

Page 52: Estela y naye

Descripción: Tenemos que realizar un oso con círculos de diferentes tamaños.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

52

Oso

Page 53: Estela y naye

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0.0,0.0,0.0); //borra pantalla

//cuerpo

circulo(250,250,100);

//patitas

circulo(160,175,60);

circulo(340,175,60);

//bracito

circulo(160,325,50);

circulo(340,325,50);

//cabeza

circulo(250,400,70);

//orejas

circulo(215,470,20);

circulo(280,470,20);

glColor3f(1.0,1.0,1.0);

//ojos

circulo(220,430,10);

circulo(275,430,10);

//panza

circulo(250,250,50);

//boca

53

Page 54: Estela y naye

circulo(250,380,20);

glFlush();

Resultado:

54

Cubitos con cubos

Page 55: Estela y naye

Descripción: Tenemos que realizar un cubo echo por cubitos en 3D de manera que los cubitos sean el delineado para formar un cubo mas grande.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glColor3f(0.4 , 0.1 , 0.4);

55

Page 56: Estela y naye

//columna izquierda atras

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

cubo(260,220+20*i,20,5);

}

//abajo atras

for(int j=0;j<=9;j++){

cubo(280+20*j,220,20,5);

}

//arriba de atras

for(int j=0;j<=10;j++){

cubo(260+20*j,420,20,5);

}

//columna derecha atras

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

cubo(480,220+20*i,20,5);

}

//los de enfrente

//diagonales izquierca

for(int k=0;k<=8;k++){

cubo(245-20*k*.8,407-20*k*.6,20,5);

cubo(245-20*k*.8,207-20*k*.6,20,5);

56

Page 57: Estela y naye

}

//columna izquierda frente

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

cubo(100,100+20*i,20,5);

}

//abajo frente

for(int j=0;j<=10;j++){

cubo(120+20*j,100,20,5);

//arriba frente

cubo(120+20*j,300,20,5);

}

//diagonales derecha

for(int k=0;k<=8;k++){

cubo(466-20*k*.8,408-20*k*.6,20,5);

cubo(466-20*k*.8,208-20*k*.6,20,5);

}

//columna derecha frente

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

cubo(320,100+20*i,20,5);

}

glFlush();

Resultado:

57

Page 58: Estela y naye

58

Muñeco con formas

Page 59: Estela y naye

Descripción: Tenemos que realizar un muñeco del cecytem con todas las primitivas que hemos visto.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

glColor3f(1.0 , 0.0 , 0.0);

59

Page 60: Estela y naye

// triangulo de la cabeza

glBegin(GL_TRIANGLES);

glColor3f(0.0,0.0,1.0);

glVertex2i(250,750);

glColor3f(0.0,0.0,1.0);

glVertex2i(550,750);

glColor3f(0.0,0.0,1.0);

glVertex2i(400,850);

//triangulo de la cabeza 2

glColor3f(0.0,1.0,0.0);

glVertex2i(300,750);

glColor3f(0.0,1.0,0.0);

glVertex2i(500,750);

glColor3f(0.0,1.0,0.0);

glVertex2i(400,600);

//triangulo pequeño del cuerpo

glColor3f(0.0,0.0,0.0);

glVertex2i(400,550);

glColor3f(0.0,0.0,0.0);

glVertex2i(425,600);

glColor3f(0.0,0.0,0.0);

glVertex2i(374,600);

60

Page 61: Estela y naye

// triangulos de la mano izquierda

glColor3f(1.0,0.0,0.0);

glVertex2i(300,600);

glColor3f(1.0,0.0,0.0);

glVertex2i(100,300);

glColor3f(1.0,.0,0.0);

glVertex2i(50,400);

glColor3f(0.0,1.0,0.0);

glVertex2i(50,400);

glColor3f(0.0,1.0,1.0);

glVertex2i(0,450);

glColor3f(1.0,1.0,0.0);

glVertex2i(0,350);

// triangulos de la mano derecha

glColor3f(0.0,0.0,1.0);

glVertex2i(500,600);

glColor3f(0.0,0.0,1.0);

glVertex2i(650,300);

glColor3f(0.0,0.0,1.0);

glVertex2i(700,350);

61

Page 62: Estela y naye

glColor3f(1.0,0.0,0.0);

glVertex2i(700,350);

glColor3f(1.0,0.0,0.0);

glVertex2i(750,300);

glColor3f(1.0,0.0,0.0);

glVertex2i(750,400);

// triangulos de la pierna y pie izquierdo

glColor3f(1.0,0.0,1.0);

glVertex2i(350,100);

glColor3f(1.0,0.0,0.0);

glVertex2i(350,350);

glColor3f(0.0,1.0,1.0);

glVertex2i(300,300);

glColor3f(1.0,1.0,0.0);

glVertex2i(350,100);

glColor3f(1.0,0.0,1.0);

glVertex2i(250,150);

glColor3f(1.0,1.0,1.0);

glVertex2i(200,100);

// triangulos de la pierna y pie derecho

glColor3f(1.0,1.0,0.0);

62

Page 63: Estela y naye

glVertex2i(450,250);

glColor3f(1.0,0.0,1.0);

glVertex2i(600,250);

glColor3f(0.0,1.0,1.0);

glVertex2i(450,350);

Resultado:

Descripción: Tenemos que realizar una animación de un circulo que valla recorriendo la pantalla.

63

Animación circulo

Page 64: Estela y naye

Borrador:

Código:

void dibuja(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

if(x>=1 && x<500){

circulo(100+x,100,40);

64

Page 65: Estela y naye

glFlush();

x++;

}

if(y>=1 && y<500 && x==500){

circulo(600,100+y,40);

glFlush();

y++;

}

if(z>=1 && z<500 && y==500 && x==500){

circulo(600-z,600,40);

glFlush();

z++;

}

if(k>=1 && k<500 && z==500 && y==500 && x==500){

circulo(100,600-k,40);

glFlush();

k++;

if(k==500){ x=1, y=1, k=1, z=1; }

}

glutSwapBuffers();

}

Resultado:

65

Page 66: Estela y naye

66

Page 67: Estela y naye

Descripción: Tenemos que realizar el sistema solar de manera que los planetas vallan girando.

Borrador:

Código:

67

Animacion sistema solar

Page 68: Estela y naye

void dibuja(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto

glColor3f(1.0,0.9,0.0);

circulo( 500,500,20);

glColor3f(1.0,0.0,0.0);

circuloc(500,500,2,50);

circulo( 500+ sin(ang) * rad,500 + cos(ang) * rad,15); //funcion circulo

glColor3f(0.0,0.0,1.0);

circuloc(500,500,2,150);

circulo( 500+ sin(c) * 50,500 + cos(c) * 50,10);

glColor3f(0.0,1.0,0.0);

circuloc( 500,500,2,100);

circulo( 500+ sin(d) * 100,500 + cos(d) * 100,20);

glColor3f(0.0,1.0,1.0);

circuloc( 500,500,2,150);

circulo( 500+ sin(e) * 150,500 + cos(e) * 150,15);

glColor3f(0.9,0.0,0.4);

circuloc( 500,500,2,200);

circulo( 500+ sin(f) * 200,500 + cos(f) * 200,10);

68

Page 69: Estela y naye

glColor3f(0.4,0.7,0.5);

circuloc( 500,500,2,250);

circulo( 500+ sin(g) * 250,500 + cos(g) * 250,13);

glColor3f(0.7,0.7,0.4);

circuloc( 500,500,2,300);

circulo( 500+ sin(h) * 300,500 + cos(h) * 300,10);

glColor3f(0.2,0.1,4.0);

circuloc( 500,500,2,300);

circulo( 500+ sin(a) * 300,500 + cos(a) * 300,25);

glColor3f(0.0,0.6,0.4);

circuloc( 500,500,2,350);

circulo( 500+ sin(n) * 350,500 + cos(n) * 350,20);

glColor3f(0.4,0.1,0.2);

circuloc( 500,500,2,400);

circulo( 500+ sin(r) * 400,500 + cos(r) * 400,20);

c+=0.02;

d+=0.03;

e+=0.04;

f+=0.07;

g+=0.09;

h+=0.02;

a+=0.05;

69

Page 70: Estela y naye

n+=0.08;

r+=0.04;

ang=ang+0.1; //velocidad entre mas grande mas rapido y entre menos mas lento

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

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

glFlush(); //forzar dibujado

glutSwapBuffers(); //y esto

}

Resultado:

70Movimiento ocho

Page 71: Estela y naye

Descripción: Tenemos que realizar un acho pero que alrededor valla girando un círculo.

Borrador

71

Page 72: Estela y naye

Código:

void dibuja(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto

glColor3f (1.0, 1.0, 0.0);//primer circulo

circulo(500,500,150);

glColor3f (0.0, 0.0, 0.0);

circulo(500,500,100);

glColor3f (1.0, 1.0, 0.0);// segundo circulo

circulo(500,750,150);

glColor3f (0.0, 0.0, 0.0);

circulo(500,750,100);

//bolitas

glColor3f (1.0, 0.0, 0.0);

if(a>=6.15 && a<12.40){

circulo(500 -sin(a) * 125,500 +cos(a) * 125,20);

a=a+0.09;

}

else{

circulo(500 -sin(b)* 125,750 +cos(b)* -125,20);

b=b+0.09;

if(b>12.40) (a=6.15, b=6.15);

72

Page 73: Estela y naye

}

glFlush(); //forzar dibujado

Resultado:

73

Piramide

Page 74: Estela y naye

Descripción: Tenemos que realizar un pirámide y ponerle sus escalones debe ser echo por cuadrados.

Borrador:

Código:

void dibuja(void) //funcion dibuja

int i,a=25;

glClear(GL_COLOR_BUFFER_BIT); //borra pantalla

74

Page 75: Estela y naye

glColor3f(1.0 , 0.0 , 0.0);

glLineWidth(2);

glBegin(GL_LINES);

//Valor incial --- Valor final o condicion --- incremento

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

}

glEnd();

glFlush(); //forza dibujo

Resultado:

75

Page 76: Estela y naye

76

Semaforo

Page 77: Estela y naye

Descripción: Tenemos que realizar un semáforo que valla cambiando las luces el verde que parpadeé tres veces el Amarillo y el rojo solo una vez.

Borrador:

Código:

void dibuja(void) //funcion dibuja

{

77

Page 78: Estela y naye

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //borra pantalla

glColor3f(0.1 , 0.0 , 0.4);

// semaforo parte grande

glColor3f(0.2,0.3,0.7);

glBegin(GL_QUADS);

glVertex2i(250,50);

glVertex2i(250,275);

glVertex2i(300,275);

glVertex2i(300,50);

glVertex2i(200,275);

glVertex2i(200,575);

glVertex2i(350,575);

glVertex2i(350,275);

glEnd();

glColor3f(0.0,0.0,0.0);

glColor3f(0.0,0.0,0.0);

glColor3f(0.0,0.0,0.0);

circulo(275,325,30);

78

Page 79: Estela y naye

circulo(275,425,30);

circulo(275,525,30);

a=a+1;

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

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

glColor3f(0.0,0.5,0.2);

circulo(275,325,30);

}

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

glColor3f(0.0,0.5,0.2);

circulo(275,325,30);

}

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

glColor3f(0.0,0.5,0.2);

circulo(275,325,30);

}

if(a>70 && a<95){

glColor3f(1.0,1.0,0.0);

circulo(275,425,30);

79

Page 80: Estela y naye

}

if(a>100 && a<125){

glColor3f(1.0,0.0,0.0);

circulo(275,525,30);

}

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

glEnd();

glFlush();

Resultado:

80

Page 81: Estela y naye

81

Nombre en 3D

Page 82: Estela y naye

Descripción: Tenemos que realizar con cubos nuestro nombre pero va hacer en 3D.

Borrador:

Código:

void dibuja( void )

if(ejes) creaEjes();

82

Page 83: Estela y naye

//glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);

glColor3f(1.0,1.0,0.0);

//R

glTranslatef(-8.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

83

Page 84: Estela y naye

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-3.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

84

Page 85: Estela y naye

glutSolidCube(1);

glTranslatef(-1.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(3.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,-1.0, 0.0);

glutSolidCube(1);

glTranslatef(1.0,0.0, 0.0);

85

Page 86: Estela y naye

glutSolidCube(1);

glTranslatef(1.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(-1.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(-1.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,0.0, 0.0);

glutSolidCube(1);

// AQUI PONES TU NOMBRE

//AQUI

//AQUI

//AQUI//AQUI

//AQUI//AQUI//AQUI

//AQUI

glPopMatrix ();

glFlush();

Resultado:

86

Page 87: Estela y naye

87

Cubo en 3D

Page 88: Estela y naye

Descripción: Tenemos que realizar un cubo echo por otros cubos en 3D.

Borrador:

Código:

}

void creaMalla(void){

int i, long_eje=10;

88

Page 89: Estela y naye

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

89

Page 90: Estela y naye

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

90

Page 91: Estela y naye

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

91

Page 92: Estela y naye

/* 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 []){1.0f,1.0f,1.0f,0.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();

92

Page 93: Estela y naye

mover();

if(malla) creaMalla();

if(ejes) creaEjes();

//glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);

glColor3f(1.0,1.0,0.0);

//R

glTranslatef(-8.0,0.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

93

Page 94: Estela y naye

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(-6.0,-6.0, 2.0);

glutSolidCube(1);

94

Page 95: Estela y naye

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

95

Page 96: Estela y naye

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(-6.0,-6.0, 2.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

96

Page 97: Estela y naye

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

97

Page 98: Estela y naye

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(-6.0,-6.0, 2.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

98

Page 99: Estela y naye

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(2.0,-6.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

glTranslatef(0.0,2.0, 0.0);

glutSolidCube(1);

// AQUI PONES TU NOMBRE

//AQUI

//AQUI

//AQUI//AQUI

99

Page 100: Estela y naye

//AQUI//AQUI//AQUI

//AQUI

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;

100

Page 101: Estela y naye

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

101

Page 102: Estela y naye

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-=15;

break;

case GLUT_KEY_RIGHT:

giray+=15;

break;

case GLUT_KEY_UP:

102

Page 103: Estela y naye

girax-=15;

break;

case GLUT_KEY_DOWN:

girax+=15;

break;

default: break;

}

glutPostRedisplay();

}

int main ( int argc, char** argv )

{

glutInit (&argc, argv);

glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

glutInitWindowSize (600,600);

glutInitWindowPosition (100,100);

glutCreateWindow ("Objetos 3D");

//init ( );

glutDisplayFunc (dibuja);

//glutIdleFunc(dibuja);

glutReshapeFunc ( reshape );

103

Page 104: Estela y naye

glutKeyboardFunc(teclado);

glutSpecialFunc(flechas);

glutMotionFunc(activo);

glutMainLoop( );

return 0;

}

Resultado:

104

Page 105: Estela y naye

105