Manual de Practicas de Open GL con Dev C++
Upcoming SlideShare
Loading in...5
×
 

Manual de Practicas de Open GL con Dev C++

on

  • 5,409 views

 

Statistics

Views

Total Views
5,409
Slideshare-icon Views on SlideShare
5,409
Embed Views
0

Actions

Likes
0
Downloads
244
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Manual de Practicas de Open GL con Dev C++ Manual de Practicas de Open GL con Dev C++ Document Transcript

    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México Cecytem Plantel Tecámac Materia: Utilización de Software de Diseño Profesor: Rene Domínguez EscalonaAlumno(s): Karen Alin Simón García y Brandon Cervantes García Titulo: “Manual de prácticas de Open GL” Proyecto 2° parcial Informática 3° Semestre 1
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México ¿Qué es OpenGL?Las librerías gráficas OpenGL, son un software que facilita el interface con elhardware gráfico de nuestra máquina. Consta de unas 120 funciones distintas, queespecifican los objetos y las operaciones necesarias para producir aplicacionesinteractivas en las que intervienen gráficos en tres dimensiones.Esta diseñado de forma completamente independiente del hardware por lo quepuede implementarse en plataformas muy diversas (PC, SGI, Digital, Sun, etc….El precio que hay que pagar en aras de esta portabilidad, es que OpenGL noincluye comandos para gestionar el sistema de ventanas, ni para capturar órdenesde los usuarios, ya sea por ratón o por teclado. En lugar de esto, debemos trabajarcon la ayuda de cualquier sistema de ventanas que se utilice en la máquina enconcreto en la que estemos trabajando. En nuestro caso utilizaremos el sistemade ventanas de Windows. Librerías De OpenGL.La librería principal de OpenGL nos suministra todas las funciones necesariaspara mostrar un entorno 3D aunque hay algunas operaciones que son algotediosas de realizar utilizando solo esta librería. Estas son por ejemplo calcular lamatriz de proyección. Para esto se han desarrollado también unas libreríasauxiliares:GLU: Esta librería acompaña a la OpenGL principal. Incluye funciones máscomplejas que GL por ejemplo definir un cilindro o un disco con un solo comando,también contiene funciones para trabajar con splines y operaciones con matrices.GLUT: Esta librería es independiente de la librería OpenGL de cada plataforma.Esta librería no incluye funciones adiconales para OpenGL :( pero nos permiteutilizar funciones para el tratamiento de ventanas, teclado y ratón. Para trabajarcon OpenGL en cualquier plataforma, primero tenemos que inicializar una ventana(y esto es diferente entre Windows y Linux por ejemplo). GLUT nos permite crearventanas y controlar la entrada independientemente de la plataforma utilizada :).Aunque también contiene comandos para crear conos, tazas de té...GLAUX: Esta librería, muy parecida a GLUT, es la que Microsoft ha desarrolladopara Windows. Mantiene prácticamente la misma estructura que la GLUT con eldefecto de que solo sirve para Windows, mientras que GLUT sirve para cualquierplataforma. 2
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoGLX: Esta es la librería utilizada para trabajar en un sistema de X-Windows(Linux), permite no sólo rende rizar en la máquina local, sino también a través deuna red. Configuración de Dev-C++ en Windows para OpenGLLos programas de ejemplo están hechos bajo lenguaje C, así que se requiere uncompilador. Si setrabaja en alguna distribución de Linux, seguro cuenta con loscompiladores GCC y G++.Si se trabaja en ambiente Win32 se puede usar un compilador de Borland, deMicrosoft y también un compilador de software libre como el Bloodshed Dev-C++el cual usa el Mingw y se puede obtener enhttp://www.bloodshed.net/dev/devcpp.html.Cualquiera de ellos al momento de instalarse ya incluyen las librerías gl y glu, porlo cual sólo nos hace falta la librería de glut, que es la usada para el manejo deventanas y eventos. En la páginahttp://www.opengl.org/resources/libraries/glut.html viene información de dondebajar glut, es importante hacer notar que los archivos .a son creados para cadacompilador, por lo tanto es necesario bajar la librería apropiada de acuerdo al quese haya instalado.SourceForge, mantiene una versión de glut más actualizada llamada openglut,información y archivos para descargar se encuentran enhttp://openglut.sourceforge.net/index.html. Otro sitio donde se puede encontrar gluty openglut para Dev-C++ es: http://www.nigels.com/glt/devpak.Una vez que se han descargado los archivos para glut, la instalación es muysencilla: El archivo glut32.dll se coloca bajo el directorio Windows/system32, elarchivo glut.h se coloca bajo include/GL y libglut32.a se coloca bajo lib, ambos deldirectorio de instalación del Dev-C++Una vez colocados los archivos donde corresponde, sólo hace falta configurar elDev-C++ para compilar los programas. Existen varias formas, una es creando unproyecto y se puede consultar en la página de Linux de Acatlán:http://www.acatlan.unam.mx/linux/graficacion/compilawindows.html.Otra maneraes sólo compilar el programa con las opciones apropiadas, para esto se abre elmenú Herramientas>Opciones del Compilador:Después se marca el recuadro junto a “Añadir estos comandos a la línea decomandos del linker” y se agregan los nombres de las librerías -lglut32 -lglu32 -lopengl32.Esto sólo se hace una vez y después se puede compilar cualquierprograma de OpenGL con glut. 3
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México Índice1. Tablero de Ajedrez2. Estrella3. Cubo con líneas4. Cubo delineado5. Muñeco con triángulos6. Casita7. Oso8. Cubo con cubitos9. Muñeco con formas10. Animación circulo11. Animación circulo rotando12. Animación sistema solar13. Movimiento en ocho14. Semáforo15. Objetos 3D Wire (9)16. Objetos 3D Solid (9)17. Interacción Teclado18. Interacción con mouse19. Interacción de objetos 3D con mouse y teclado20. Cubo 3D con líneas 4
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México PracticasTablero de Ajedrez://tablero de ajedrez#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,3.0,5.0,1.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(100,100);glVertex2i(347,100);glVertex2i(597,100);glVertex2i(848,100);glVertex2i(220,220);glVertex2i(473,220);glVertex2i(723,220); 5
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(970,220);glVertex2i(100,340);glVertex2i(347,340);glVertex2i(597,340);glVertex2i(848,340);glVertex2i(220,460);glVertex2i(473,460);glVertex2i(723,460);glVertex2i(970,460);glVertex2i(100,580);glVertex2i(347,580);glVertex2i(597,580);glVertex2i(848,580);glVertex2i(220,700);glVertex2i(473,700);glVertex2i(723,700);glVertex2i(970,700);glVertex2i(100,820);glVertex2i(347,820);glVertex2i(597,820);glVertex2i(848,820);glEnd();glColor3f(1.0 , 1.0 , 1.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(220,100);glVertex2i(473,100); 6
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(723,100);glVertex2i(970,100);glVertex2i(100,220);glVertex2i(347,220);glVertex2i(597,220);glVertex2i(848,220);glVertex2i(220,340);glVertex2i(473,340);glVertex2i(723,340);glVertex2i(970,340);glVertex2i(100,460);glVertex2i(347,460);glVertex2i(597,460);glVertex2i(848,460);glVertex2i(220,580);glVertex2i(473,580);glVertex2i(723,580);glVertex2i(970,580);glVertex2i(100,700);glVertex2i(347,700);glVertex2i(597,700);glVertex2i(848,700);glVertex2i(220,820);glVertex2i(473,820);glVertex2i(723,820);glVertex2i(970,820);glEnd(); 7
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("TABLERO DE AJEDREZ"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero} 8
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoEstrella//estrella#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglLineWidth(2);glBegin(GL_LINES);glVertex2i(50,50);glVertex2i(250,400);glVertex2i(250,400);glVertex2i(400,50);glVertex2i(400,50);glVertex2i(50,300);glVertex2i(50,300);glVertex2i(400,300); 9
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(400,300);glVertex2i(50,50);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("estrella"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero} 10
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoCubo con líneas//cubo con lineas#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglLineWidth(2);glBegin(GL_LINES);//enfrenteglVertex2i(50,50);glVertex2i(50,300);glVertex2i(50,300); 11
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(300,300);glVertex2i(300,300);glVertex2i(300,50);glVertex2i(300,50);glVertex2i(50,50);//atrasglVertex2i(150,150);glVertex2i(150,400);glVertex2i(150,400);glVertex2i(400,400);glVertex2i(400,400);glVertex2i(400,150);glVertex2i(400,150);glVertex2i(150,150);//linea izquierdaglVertex2i(50,300);glVertex2i(150,400);//linea derechaglVertex2i(300,300);glVertex2i(400,400);//linea izquierda abajoglVertex2i(50,50);glVertex2i(150,150);//linea derecha abajoglVertex2i(300,50); 12
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(400,150);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("mi primera ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero} 13
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoCubo delineado//cubo delineado#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{ 14
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 0.0 , 0.0);glPointSize(50);glBegin(GL_QUADS);//ATRASglColor3f(0.0 , 0.0 , 0.0);glVertex2d(100,150);glVertex2d(300,100);glVertex2d(300,350);glVertex2d(100,350);//ABAJOglColor3f(0.0 , 0.0 , 0.0);glVertex2d(200,100);glVertex2d(400,100);glVertex2d(300,150);glVertex2d(100,150);//izquierdoglColor3f(0.0 , 0.1 , 0.1);glVertex2d(100,150);glVertex2d(200,100);glVertex2d(200,300);glVertex2d(100,350);//derechoglColor3f(1.1 , 1.1 , 1.1); 15
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2d(300,150);glVertex2d(400,100);glVertex2d(400,300);glVertex2d(300,350);//arribaglColor3f(1.2 , 0.0 , 0.0);glVertex2d(200,300);glVertex2d(400,300);glVertex2d(300,350);glVertex2d(100,350);//enfrenteglColor3f(1.5 , 1.5 , 0.0);glVertex2d(200,100);glVertex2d(400,100);glVertex2d(400,300);glVertex2d(200,300);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventana 16
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("mi primera ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Muñeco con Triángulos#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h> 17
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicovoid inicializa(void){glClearColor(0.0,0.0,0.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 0.0 , 1.0);glLineWidth(5);glBegin(GL_TRIANGLES);glVertex2i(97,12);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(167,12);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(167,54);glVertex2i(140,55);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(190,55);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(190,145);glVertex2i(260,12); 18
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglColor3f(1.0 , 0.0 , 1.0);glVertex2i(333,12);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(260,54);glVertex2i(240,54);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(290,54);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(240,145);glVertex2i(145,375);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(300,375);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(230,455);glVertex2i(320,300);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(320,150);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(275,300);glVertex2i(150,300);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(110,300);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(110,150); 19
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(150,300);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(110,300);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(110,150);glVertex2i(260,380);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(183,380);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(219,309);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(340,30);glVertex2i(395,30);glVertex2i(420,130);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(340,30);glVertex2i(395,30);glVertex2i(420,130);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(372,181);glVertex2i(330,208);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(326,150);glColor3f(1.0 , 0.0 , 1.0); 20
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(102,152);glVertex2i(59,179);glColor3f(0.0 , 0.0 , 1.0);glVertex2i(101,208);glEnd();glBegin(GL_QUADS);glVertex2i(155,155);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(155,305);glVertex2i(280,305);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(280,155);glColor3f(010 , 1.0 , .0);glVertex2i(350,250);glColor3f(0.0 , 1.0 , .0);glVertex2i(370,420);glColor3f(0.0 , 1.0 , .0);glVertex2i(490,250);glColor3f(1.0 , 1.0 , .0);glVertex2i(420,135);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{ 21
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("Muñeco con triangulos"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Casita 22
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,0.0,1.0,1.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 900.0, 0.0, 900.0);}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.12 ,0.12 ,0.12 );glLineWidth(2);glBegin(GL_QUADS);glVertex2i(0,80);glVertex2i(1000,80);glVertex2i(1000,0);glVertex2i(0,0);glEnd();glColor3f(1.0,1.0,1.0);glBegin(GL_LINES);glVertex2i(0,40);glVertex2i(50,40); 23
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(70,40);glVertex2i(120,40);glVertex2i(140,40);glVertex2i(190,40);glVertex2i(210,40);glVertex2i(260,40);glVertex2i(280,40);glVertex2i(330,40);glVertex2i(350,40);glVertex2i(400,40);glVertex2i(420,40);glVertex2i(470,40);glVertex2i(490,40);glVertex2i(540,40);glVertex2i(560,40);glVertex2i(610,40);glVertex2i(630,40);glVertex2i(680,40);glVertex2i(700,40);glVertex2i(750,40);glVertex2i(770,40);glVertex2i(820,40);glVertex2i(840,40);glVertex2i(890,40);glEnd(); 24
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglColor3f(1.0 ,1.0 ,0.0 );glLineWidth(5);glBegin(GL_LINES);glVertex2i(0,84);glVertex2i(1000,84);glEnd();glColor3f(0.21,0.21,0.21);glBegin(GL_POLYGON);glVertex2i(0,118);glVertex2i(345,118);glVertex2i(345,193);glVertex2i(405,193);glVertex2i(405,118);glVertex2i(1000,118);glVertex2i(1000,88);glVertex2i(0,88);glEnd();glColor3f(0.0,1.0,0.0);glBegin(GL_POLYGON);glVertex2i(0,118);glVertex2i(0,238);glVertex2i(75,238);glVertex2i(75,193);glVertex2i(345,193); 25
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(345,118);glVertex2i(0,118);glEnd();glColor3f(0.0,1.0,0.0);glBegin(GL_POLYGON);glVertex2i(405,119);glVertex2i(405,193);glVertex2i(540,193);glVertex2i(540,239);glVertex2i(1000,239);glVertex2i(1000,119);glVertex2i(405,119);glEnd();glColor3f(1.0,0.52,0.05);glBegin(GL_QUADS);glVertex2i(75,193);glVertex2i(75,313);glVertex2i(90,313);glVertex2i(90,193);glEnd();glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex2i(61,313);glVertex2i(75,345); 26
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(210,345);glVertex2i(210,313);glEnd();glColor3f(0.80,0.80,0.80);glBegin(GL_QUADS);glVertex2i(90,193);glVertex2i(90,313);glVertex2i(210,313);glVertex2i(210,193);glEnd();glColor3f(1.0,1.0,0.28);glBegin(GL_QUADS);glVertex2i(210,193);glVertex2i(210,450);glVertex2i(540,450);glVertex2i(540,193);glEnd();glColor3f(0.95,0.47,0.0);glBegin(GL_QUADS);glVertex2i(210,313);glVertex2i(210,328);glVertex2i(540,328);glVertex2i(540,313);glEnd(); 27
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglColor3f(0.95,0.47,0.0);glBegin(GL_QUADS);glVertex2i(330,193);glVertex2i(330,434);glVertex2i(344,434);glVertex2i(344,193);glEnd();glColor3f(0.95,0.47,0.0);glBegin(GL_QUADS);glVertex2i(405,434);glVertex2i(420,434);glVertex2i(420,193);glVertex2i(405,193);glEnd();glColor3f(0.77,0.0,0.0);glBegin(GL_TRIANGLES);glVertex2i(316,434);glVertex2i(375,480);glVertex2i(434,434);glEnd();glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex2i(164,449);glVertex2i(209,494);glVertex2i(539,494); 28
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(584,449);glVertex2i(449,415);glVertex2i(374,480);glVertex2i(335,449);glEnd();glFlush();}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);glutInitWindowSize(1000,1000);glutInitWindowPosition(0,0);glutCreateWindow("Casa");inicializa();glutDisplayFunc(dibuja);glutMainLoop();return 0;} 29
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoOso//oso#include <GL/glut.h>#include <GL/gl.h>#include <math.h>void inicializa(void){glClearColor(1.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal}void circuloc(int x, int y, int t, int radio) 30
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México{ 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 31
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México{glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.8,0.5,0.4); //borra pantallacirculo(190,190,40);glColor3f(0.7,0.2,0.4);circulo(190,190,20);glColor3f(0.8,0.5,0.4);circulo(315,315,40);glColor3f(0.7,0.2,0.4);circulo(315,315,20);glColor3f(0.8,0.5,0.4);circulo(190,315,40);glColor3f(0.7,0.2,0.4);circulo(190,315,20);glColor3f(0.8,0.5,0.4);circulo(315,190,40);glColor3f(0.7,0.2,0.4);circulo(315,190,20);glColor3f(0.8,0.5,0.4);circulo(250,360,60);glColor3f(1.0,1.0,1.0);circulo(270,380,15);glColor3f(0.0,0.0,0.0);circulo(270,380,10);glColor3f(1.0,1.0,1.0); 32
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicocirculo(230,380,15);glColor3f(0.0,0.0,0.0);circulo(230,380,10);glColor3f(0.0,0.0,0.0);circulo(250,340,15);glColor3f(0.8,0.5,0.4);circulo(300,420,25);glColor3f(0.7,0.2,0.4);circulo(300,420,10);glColor3f(0.8,0.5,0.4);circulo(200,420,25);glColor3f(0.7,0.2,0.4);circulo(200,420,10);glColor3f(0.7,0.2,0.6);circulo(250,250,50);glColor3f(0.8,0.5,0.4);circuloc(250,250,5,50);glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventana 33
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero} 34
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoCubo con Cubitos//cubo de cubos#include <GL/glut.h>#include <GL/gl.h>void inicializa(void){glClearColor(1.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 570.0, 0.0, 570.0); //vista ortogonal}void cubo (int x, int y,int t,int l){ double a=.8,b=.6;glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_QUADS);glVertex2f(x,y);glVertex2f(x+t,y);glVertex2f(x+t,y+t);glVertex2f(x,y+t);glColor3f(0.0 , 0.0 , 0.0);glVertex2f(x,y+t);glVertex2f(x+t,y+t);glVertex2f(x+t+(t*a),y+t+(t*b)); 35
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2f(x+(t*a),y+t+(t*b));glColor3f(0.0 , 0.0 , 0.0);glVertex2f(x+t,y+t);glVertex2f(x+t+(t*a),y+t+(t*b));glVertex2f(x+t+(t*a),y+(t*b));glVertex2f(x+t,y);glEnd();glColor3f(1.0 , 0.0 , 0.0);glLineWidth(.8);glBegin(GL_LINES);glVertex2f(x,y);glVertex2f(x+t,y);glVertex2f(x+t,y);glVertex2f(x+t,y+t);glVertex2f(x+t,y+t);glVertex2f(x,y+t);glVertex2f(x,y);glVertex2f(x,y+t);glVertex2f(x+t,y+t);glVertex2f(x+t,y+t);glVertex2f(x+t+(t*a),y+t+(t*b));glVertex2f(x+t+(t*a),y+t+(t*b));glVertex2f(x+(t*a),y+t+(t*b));glVertex2f(x,y+t);glVertex2f(x+t+(t*a),y+t+(t*b)); 36
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2f(x+(t*a),y+t+(t*b));glVertex2f(x+t,y+t);glVertex2f(x+t+(t*a),y+t+(t*b));glVertex2f(x+t+(t*a),y+t+(t*b));glVertex2f(x+t+(t*a),y+(t*b));glVertex2f(x+t+(t*a),y+(t*b));glVertex2f(x+t,y);glVertex2f(x+t,y+t);glEnd(); }void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 0.0 , 0.0);//columna izquierda atrasfor(int i=0;i<=10;i++){cubo(260,220+20*i,20,5);}//abajo atrasfor(int j=0;j<=9;j++){cubo(280+20*j,220,20,5);}//arriba de atrasfor(int j=0;j<=10;j++){cubo(260+20*j,420,20,5); 37
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México}//columna derecha atrasfor(int i=0;i<=10;i++){cubo(480,220+20*i,20,5);}//los de enfrente//diagonales izquiercafor(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);}//columna izquierda frentefor(int i=0;i<=10;i++){cubo(100,100+20*i,20,5);}//abajo frentefor(int j=0;j<=10;j++){cubo(120+20*j,100,20,5);//arriba frentecubo(120+20*j,300,20,5);}//diagonales derechafor(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); 38
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México}//columna derecha frentefor(int i=0;i<=10;i++){cubo(320,100+20*i,20,5);}glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero} 39
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoMuñeco con formas//muñeco#include <GL/glut.h>#include <GL/gl.h>#include <math.h>void inicializa(void){glClearColor(1.0,1.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal 40
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México}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();} 41
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicovoid dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.8,0.5,0.4); //borra pantallacirculo(225,400,80);glColor3f(0.0,0.0,0.0);circulo(200,440,7);glColor3f(0.0,0.0,0.0);circulo(240,440,7);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(260,469);glVertex2i(250,499);glVertex2i(240,480);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(240,480);glVertex2i(230,500);glVertex2i(220,480);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES); 42
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(220,480);glVertex2i(200,500);glVertex2i(180,465);glEnd();glBegin(GL_LINES);glVertex2i(220,480);glEnd();glBegin(GL_POLYGON);glColor3f(0.8,0.1,0.1);glVertex2i(160,160);glVertex2i(300,160);glVertex2i(300,320);glVertex2i(260,320);glVertex2i(225,280);glVertex2i(200,320);glVertex2i(160,320);glEnd();glBegin(GL_POLYGON);glVertex2i(160,320);glVertex2i(160,280);glVertex2i(120,200);glVertex2i(80,200);glEnd();glBegin(GL_POLYGON);glVertex2i(300,320); 43
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglVertex2i(300,280);glVertex2i(340,200);glVertex2i(380,200);glEnd();//diglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_POLYGON);glVertex2i(160,140);glVertex2i(160,160);glVertex2i(300,160);glVertex2i(300,140);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_POLYGON);glVertex2i(220,140);glVertex2i(220,160);glVertex2i(240,160);glVertex2i(240,140);glEnd();glColor3f(0.0 , 0.2 , 0.6);glBegin(GL_POLYGON);glVertex2i(160,140);glVertex2i(100,40);glVertex2i(160,20);glVertex2i(225,140); 44
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglEnd();glColor3f(0.0 , 0.2 , 0.6);glBegin(GL_POLYGON);glVertex2i(225,140);glVertex2i(280,20);glVertex2i(340,40);glVertex2i(300,140);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(275,20);glVertex2i(380,10);glVertex2i(340,40);glEnd();glColor3f(0.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(160,20);glVertex2i(100,40);glVertex2i(50,20);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUT 45
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Animación circulo#include <unistd.h>#include <GL/glut.h> 46
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México#include <GL/gl.h>#include <math.h>int x=1, y=1, z=1, a=1;void inicializa(void){glClearColor(0.0,0.0,1.0,0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 900.0, 0.0, 900.0);// el ancho y largo de nuestra pantalla}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+=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<800){circulo(5+1*x,900,15); 47
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglFlush();x++;}if(y>=1 && y<800 && x==800){circulo(805,900-y,15);glFlush();y++;}if(z>=1 && z<800 && x==800 && y==800){circulo(805-z,100,15);glFlush();z++;}if(a>=1 && a<800 && x==800 && y==800 && z==800){circulo(5,100+a,15);glFlush();a++;if(a==800){x=1; y=1; z=1;}}glutSwapBuffers();}int main (int argc, char** argv){glutInit(&argc, argv); 48
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);glutInitWindowSize(1000,1000);glutInitWindowPosition(10,10);glutCreateWindow("Movimiento de bolita");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);glutMainLoop();return 0;}Animación Sistema solar#include <unistd.h>#include <GL/glut.h>#include <GL/gl.h>#include <math.h> 49
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicoint rad=100;double ang=0;double a=0;double b=0;double c=0;double d=0;double e=0;double f=0;double g=0;void inicializa(void){glClearColor(0.0,0.0,0.0,0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 1000.0, 0.0, 1000.0);// el ancho y largo de nuestra pantalla}void 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();} 50
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicovoid 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<=100; angulo+=1){ glVertex2f(x + sin(angulo) * radio,y + cos(angulo) * radio);} glEnd();}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//estoglColor3f(1.0,1.0,1.0);circuloc(500,500,1,100);circuloc(500,500,1,200);circuloc(500,500,1,300);circuloc(500,500,1,400);circuloc(500,500,1,55);circuloc(500,500,1,150);circuloc(500,500,1,250);circuloc(500,500,1,350); 51
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglColor3f(1.0,1.0,1.0);circulo( 500+ sin(ang) * rad,500 - cos(ang) * rad,10); //funcion circuloglColor3f(1.0,0.0,0.0);circulo( 500+ sin(a) * 55,500 + cos(a) * 55,10);glColor3f(0.0,0.0,1.0);circulo( 500+ sin(b) * 150,500 - cos(b) * 150,13);glColor3f(0.0,1.0,0.0);circulo( 500+ sin(c) * 200,500 + cos(c) * 200,10);glColor3f(0.0,1.0,0.9);circulo( 500+ sin(d) * 250,500 - cos(d) * 250,20);glColor3f(0.0,1.0,1.0);circulo( 500+ sin(g) * 300,500 + cos(g) * 300,10);glColor3f(0.0,1.0,0.5);circulo( 500+ sin(e) * 350,500 - cos(e) * 350,20);glColor3f(1.0,1.0,0.0);circulo( 500+ sin(f) * 400,500 + cos(f) * 400,10);ang=ang+0.06;a=a+0.07;b=b+0.01;c=c+0.03;d=d+0.05;e=e+0.04;f=f+0.05;g=g+0.06; //velocidad entre mas grande mas rapido y entre menos maslento 52
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicofor(int j=1;j<=10000000;j++){}//pausaif(ang==360){ang=0;}// se repite idefinidamenteglColor3f(1.0,0.9,0.0);circulo(500,500,35);//solglFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//estotambienglutInitWindowSize(1000,1000);glutInitWindowPosition(10,10);glutCreateWindow("Sistema Solar");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);//esto es lo que cambiaglutMainLoop();return 0;} 53
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoMovimiento en Ocho#include <unistd.h>#include <GL/glut.h>#include <GL/gl.h>#include <math.h>int x=1, x2=1,y=1;double a=6.15, b=6.15;void inicializa(void){glClearColor(0.0,0.0,0.0,0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 1000.0, 0.0, 1000.0);// el ancho y largo de nuestra pantalla}void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glVertex2f(x,y); 54
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México for (angulo=0;angulo<=360; angulo+=6){ glVertex2f(x + sin(angulo) * radio,y + cos(angulo) * radio);} glEnd();}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glColor3f (1.0,0.9, 0.0);circulo(500,300,250);glColor3f (0.0,0.0, 0.0);circulo(500,300,150);glColor3f (1.0,0.9, 0.0);circulo(500,700,250);glColor3f (0.0,0.0, 0.0);circulo(500,700,150);//ocho//la otra bolitaif(a>=6.15 && a<=12.41){circulo(500 - sin (a)*200,700 - cos(a)*200,40);a=a+ 0.031;}else{circulo(500 - sin (b) *200,300 - cos(b)*-200,40);b=b + 0.1;if(b>12.4){a=6.15;b=6.15;}for(int j=0; j<=10000000; j++) {}} 55
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México// se repite idefinidamenteglFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//estotambienglutInitWindowSize(1000,1000);glutInitWindowPosition(10,10);glutCreateWindow("Movimiento en 8");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);//esto es lo que cambiaglutMainLoop();return 0;} 56
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoSemáforoNombre 3D#include <GL/gl.h>#include <GL/glu.h>#include <GL/glut.h>#include <stdio.h>#include <math.h>#include <stdlib.h>GLfloat anguloEsfera = 0.0f;GLfloat girax=0,giray=0,zoom=0,e,f;GLboolean malla=GL_FALSE, ejes=GL_TRUE;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){ 57
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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); 58
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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); 59
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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 ); 60
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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 luzglLightfv(GL_LIGHT0,GL_DIFFUSE,(GLfloat []){1.0f,1.0f,1.0f,0.0f}); // Color de laluzglLightfv(GL_LIGHT0,GL_AMBIENT,(GLfloat []){1.0, 1.0, 1.0, 4.0}); // Luz ambienteglLightfv(GL_LIGHT0,GL_POSITION,(GLfloat []){0.0f,12.0f,5.0f,0.0f}); // Posiciónde la luz 61
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0});//glShadeModel (GL_SMOOTH);// esferaglPushMatrix();mover();if(malla) creaMalla();if(ejes) creaEjes();//glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);glColor3f(1.0,1.0,0.0);//AglTranslatef(-7.2,0.0, 0.0);glutSolidCube(1);glTranslatef(0.0,-0.9, 0.0);glutSolidCube(1);glTranslatef(0.9,0.0, 0.0);glutSolidCube(1);glTranslatef(0.9,0.0, 0.0);glutSolidCube(1);glTranslatef(0.0,-0.3, 0.0);glutSolidCube(1);glTranslatef(0.0,1.2, 0.0);glutSolidCube(1);glTranslatef(-0.9,0.2, 0.0);glutSolidCube(1);//l 62
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglTranslatef(2.3,-1.6, 0.0);glutSolidCube(1);glTranslatef(0.0,0.9, 0.0);glutSolidCube(1);glTranslatef(0.0,0.9, 0.0);glutSolidCube(1);glTranslatef(0.0,0.9, 0.0);glutSolidCube(1);//iglTranslatef(1.4,-2.7, 0.0);glutSolidCube(1);glTranslatef(0.0,0.9, 0.0);glutSolidCube(1);glTranslatef(0.0,1.2, 0.0);glutSolidCube(1);//nglTranslatef(1.4,-1.0, 0.0);glutSolidCube(1);glTranslatef(0.9,0.0, 0.0);glutSolidCube(1);glTranslatef(0.9,0.0, 0.0);glutSolidCube(1);glTranslatef(0.0,-0.9, 0.0);glutSolidCube(1);glTranslatef(-1.6,0.0, 0.0); 63
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglutSolidCube(1);// AQUI PONES TU NOMBRE//AQUI//AQUI//AQUI//AQUI//AQUI//AQUI//AQUI//AQUIglPopMatrix ();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; 64
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicogiray=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); 65
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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:girax-=15; break; case GLUT_KEY_DOWN:girax+=15; 66
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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 );glutKeyboardFunc(teclado);glutSpecialFunc(flechas);glutMotionFunc(activo);glutMainLoop( );return 0;} 67
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoSemáforo. SEMAFOROEn esta práctica realizaremos un semáforo en el cual los colores se cambiensegún la ubicación de dicho semáforo, para ello utilizaremos, rectángulos ycírculos así como se muestra a continuación:Código:#include <unistd.h> 68
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México#include <GL/glut.h>#include <GL/gl.h>#include <math.h>int rad=100;double ang=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0;void inicializa(void){glClearColor(0.2,0.6,0.8,1.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 500.0, 0.0, 500.0);// el ancho y largo de nuestra pantalla}void circuloc(int x, int y, int t, int radio){ int angulo=0; glPointSize(t); glBegin(GL_POINTS);//glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *radio, y + cos(angulo) * radio);} glEnd();}void circulo(int x, int y, int radio){ 69
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México 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);//estoglBegin(GL_QUADS);//Cuadros fondo semaforoglColor3f(0.2 , 0.6 , 0.);glVertex2i(170,437);glVertex2i(320,437);glVertex2i(320,182);glVertex2i(170,182);glVertex2i(229,183);glVertex2i(278,183);glVertex2i(278,3);glVertex2i(229,3);glEnd();glColor3f(0.0,0.0,0.0);//Luces Rojacirculo(247,226,34); 70
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de MéxicoglColor3f(0.0,0.0,0.0);//Luces Amarrillacirculo(247,302,34);glColor3f(0.0,0.0,0.0);//Luces Verdecirculo(247,381,34);a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lentofor(int j=1;j<=10000000;j++){}//pausaif(a>1 && a<20){glColor3f(1.0,0.0,0.0);//Luces Rojacirculo(247,381,34);}// se repite idefinidamenteif(a>20 && a<40){glColor3f(0.0,1.0,0.0);//Luces Rojacirculo(247,226,34);}// se repite idefinidamenteif(a>40 && a<50){glColor3f(1.0,1.0,0.0);//Luces Rojacirculo(247,302,34);}// se repite idefinidamenteif(a>55 && a<50){glColor3f(1.0,1.0,0.0);//Luces Roja 71
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de Méxicocirculo(247,302,34);}// se repite idefinidamenteif(a>60 && a<55){glColor3f(1.0,1.0,0.0);//Luces Rojacirculo(247,302,34);}// se repite idefinidamenteif(a>60){a=0;}glFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambienglutInitWindowSize(500,500);glutInitWindowPosition(10,10);glutCreateWindow("Ventana");inicializa();glutDisplayFunc(dibuja);glutIdleFunc(dibuja);//esto es lo que cambiaglutMainLoop();return 0; 72
    • Colegio de Estudios Científicos Y Tecnológicos del Estado de México} 73