estela y naye
TRANSCRIPT
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:
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:
¿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
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
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
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:
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
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
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
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
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
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
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
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
glVertex2i(800,800);
glEnd();
glFlush(); //forza dibujo
Como quedo al final
15
Estrella
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
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
Descripción: Tenemos que realizar un cubo echo de líneas de manera que se pueda visualizar todo completo.
18
Cubo con líneas
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
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
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
22
CUBO DELINEADO
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
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
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
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
27Muñeco con triangulos
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
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
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
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
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
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
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
35
Descripción: Tenemos que realizar una casa con todas las figuras geométricas.
Borrador:
Código:
void dibuja(void) //funcion dibuja
{
36
Casita
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
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
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
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
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
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
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
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
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
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
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
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
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
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
glEnd();
glFlush(); //forza dibujo
}
Resultado:
51
Descripción: Tenemos que realizar un oso con círculos de diferentes tamaños.
Borrador:
Código:
void dibuja(void) //funcion dibuja
{
52
Oso
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
circulo(250,380,20);
glFlush();
Resultado:
54
Cubitos con cubos
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
//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
}
//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
58
Muñeco con formas
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
// 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
// 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
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
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
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
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
66
Descripción: Tenemos que realizar el sistema solar de manera que los planetas vallan girando.
Borrador:
Código:
67
Animacion sistema solar
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
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
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
Descripción: Tenemos que realizar un acho pero que alrededor valla girando un círculo.
Borrador
71
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
}
glFlush(); //forzar dibujado
Resultado:
73
Piramide
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
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
76
Semaforo
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
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
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
}
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
81
Nombre en 3D
Descripción: Tenemos que realizar con cubos nuestro nombre pero va hacer en 3D.
Borrador:
Código:
void dibuja( void )
if(ejes) creaEjes();
82
//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
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
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
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
87
Cubo en 3D
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
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
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
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
/* 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
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
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
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
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
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
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
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
//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
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
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
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
glutKeyboardFunc(teclado);
glutSpecialFunc(flechas);
glutMotionFunc(activo);
glutMainLoop( );
return 0;
}
Resultado:
104
105