SlideShare ist ein Scribd-Unternehmen logo
1 von 73
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 Escalona


Alumno(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 el
hardware gráfico de nuestra máquina. Consta de unas 120 funciones distintas, que
especifican los objetos y las operaciones necesarias para producir aplicaciones
interactivas en las que intervienen gráficos en tres dimensiones.

Esta diseñado de forma completamente independiente del hardware por lo que
puede implementarse en plataformas muy diversas (PC, SGI, Digital, Sun, etc….
El precio que hay que pagar en aras de esta portabilidad, es que OpenGL no
incluye comandos para gestionar el sistema de ventanas, ni para capturar órdenes
de los usuarios, ya sea por ratón o por teclado. En lugar de esto, debemos trabajar
con la ayuda de cualquier sistema de ventanas que se utilice en la máquina en
concreto en la que estemos trabajando. En nuestro caso utilizaremos el sistema
de ventanas de Windows.

                       Librerías De OpenGL.
La librería principal de OpenGL nos suministra todas las funciones necesarias
para mostrar un entorno 3D aunque hay algunas operaciones que son algo
tediosas de realizar utilizando solo esta librería. Estas son por ejemplo calcular la
matriz de proyección. Para esto se han desarrollado también unas librerías
auxiliares:

GLU: Esta librería acompaña a la OpenGL principal. Incluye funciones más
complejas 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 permite
utilizar funciones para el tratamiento de ventanas, teclado y ratón. Para trabajar
con OpenGL en cualquier plataforma, primero tenemos que inicializar una ventana
(y esto es diferente entre Windows y Linux por ejemplo). GLUT nos permite crear
ventanas 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 desarrollado
para Windows. Mantiene prácticamente la misma estructura que la GLUT con el
defecto de que solo sirve para Windows, mientras que GLUT sirve para cualquier
plataforma.




     2
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

GLX: 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 de
una red.

     Configuración de Dev-C++ en Windows para OpenGL
Los programas de ejemplo están hechos bajo lenguaje C, así que se requiere un
compilador. Si setrabaja en alguna distribución de Linux, seguro cuenta con los
compiladores GCC y G++.

Si se trabaja en ambiente Win32 se puede usar un compilador de Borland, de
Microsoft y también un compilador de software libre como el Bloodshed Dev-C++
el      cual   usa      el    Mingw      y     se     puede      obtener   en
http://www.bloodshed.net/dev/devcpp.html.

Cualquiera de ellos al momento de instalarse ya incluyen las librerías gl y glu, por
lo cual sólo nos hace falta la librería de glut, que es la usada para el manejo de
ventanas            y            eventos.           En           la          página
http://www.opengl.org/resources/libraries/glut.html viene información de donde
bajar glut, es importante hacer notar que los archivos .a son creados para cada
compilador, por lo tanto es necesario bajar la librería apropiada de acuerdo al que
se haya instalado.

SourceForge, mantiene una versión de glut más actualizada llamada openglut,
información      y    archivos     para     descargar      se     encuentran     en
http://openglut.sourceforge.net/index.html. Otro sitio donde se puede encontrar glut
y 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 muy
sencilla: El archivo glut32.dll se coloca bajo el directorio Windows/system32, el
archivo glut.h se coloca bajo include/GL y libglut32.a se coloca bajo lib, ambos del
directorio de instalación del Dev-C++

Una vez colocados los archivos donde corresponde, sólo hace falta configurar el
Dev-C++ para compilar los programas. Existen varias formas, una es creando un
proyecto y se puede consultar en la página de Linux de Acatlán:
http://www.acatlan.unam.mx/linux/graficacion/compilawindows.html.Otra manera
es sólo compilar el programa con las opciones apropiadas, para esto se abre el
menú Herramientas>Opciones del Compilador:

Después se marca el recuadro junto a “Añadir estos comandos a la línea de
comandos del linker” y se agregan los nombres de las librerías -lglut32 -lglu32 -l
opengl32.Esto sólo se hace una vez y después se puede compilar cualquier
programa de OpenGL con glut.


     3
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

                            Índice
1. Tablero de Ajedrez
2. Estrella
3. Cubo con líneas
4. Cubo delineado
5. Muñeco con triángulos
6. Casita
7. Oso
8. Cubo con cubitos
9. Muñeco con formas
10. Animación circulo
11. Animación circulo rotando
12. Animación sistema solar
13. Movimiento en ocho
14. Semáforo
15. Objetos 3D Wire (9)
16. Objetos 3D Solid (9)
17. Interacción Teclado
18. Interacción con mouse
19. Interacción de objetos 3D con mouse y teclado
20. Cubo 3D con líneas




  4
Colegio de Estudios Científicos Y Tecnológicos del Estado de México


                                Practicas
Tablero 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 fondo
glMatrixMode(GL_PROJECTION);               //Modo de proyeccion
glLoadIdentity();              //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1050.0, 0.0, 1000.0);     //vista ortogonal
}
void dibuja(void)              //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT);               //borra pantalla
glColor3f(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éxico

glVertex2i(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éxico

glVertex2i(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éxico

glFlush();                     //forza dibujo
}
int main (int argc, char** argv)      //metodo main
{
glutInit(&argc, argv);                    //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);                   //establece el modo de
visualización
glutInitWindowSize(500,500);               //tamaño de la ventana
glutInitWindowPosition(0,0);           //posicion inicial de la ventana
glutCreateWindow("TABLERO DE AJEDREZ");                      //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja);                         //Envia los graficos a la ventana de
visualización
glutMainLoop();                       //muestra todo y espera
return 0;                          //retorna un valor de cero
}




      8
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

Estrella
//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 fondo
glMatrixMode(GL_PROJECTION);               //Modo de proyeccion
glLoadIdentity();              //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0);    //vista ortogonal
}
void dibuja(void)              //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT);               //borra pantalla
glLineWidth(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éxico

glVertex2i(400,300);
glVertex2i(50,50);
glEnd();
glFlush();                     //forza dibujo
}
int main (int argc, char** argv)      //metodo main
{
glutInit(&argc, argv);                    //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);                //establece el modo de
visualización
glutInitWindowSize(500,500);               //tamaño de la ventana
glutInitWindowPosition(0,0);           //posicion inicial de la ventana
glutCreateWindow("estrella");            //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja);                 //Envia los graficos a la ventana de
visualización
glutMainLoop();                       //muestra todo y espera
return 0;                          //retorna un valor de cero
}




    10
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

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

glMatrixMode(GL_PROJECTION);               //Modo de proyeccion

glLoadIdentity();              //Establece los parametros de proyeccion

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

}



void dibuja(void)              //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT);               //borra pantalla



glLineWidth(2);

glBegin(GL_LINES);

//enfrente

glVertex2i(50,50);

glVertex2i(50,300);

glVertex2i(50,300);


    11
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

glVertex2i(300,300);

glVertex2i(300,300);

glVertex2i(300,50);

glVertex2i(300,50);

glVertex2i(50,50);

//atras

glVertex2i(150,150);

glVertex2i(150,400);

glVertex2i(150,400);

glVertex2i(400,400);

glVertex2i(400,400);

glVertex2i(400,150);

glVertex2i(400,150);

glVertex2i(150,150);

//linea izquierda

glVertex2i(50,300);

glVertex2i(150,400);

//linea derecha

glVertex2i(300,300);

glVertex2i(400,400);

//linea izquierda abajo

glVertex2i(50,50);

glVertex2i(150,150);

//linea derecha abajo

glVertex2i(300,50);
    12
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

glVertex2i(400,150);

glEnd();

glFlush();                     //forza dibujo

}




int main (int argc, char** argv)      //metodo main

{

glutInit(&argc, argv);                    //incializa GLUT

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);                //establece el modo de
visualización

glutInitWindowSize(500,500);               //tamaño de la ventana

glutInitWindowPosition(0,0);           //posicion inicial de la ventana

glutCreateWindow("mi primera ventana");               //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);                 //Envia los graficos a la ventana de
visualización

glutMainLoop();                       //muestra todo y espera

return 0;                          //retorna un valor de cero

}




    13
Colegio de Estudios Científicos Y Tecnológicos del Estado de México




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

glMatrixMode(GL_PROJECTION);               //Modo de proyeccion

glLoadIdentity();              //Establece los parametros de proyeccion

gluOrtho2D(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éxico

glClear(GL_COLOR_BUFFER_BIT);         //borra pantalla

glColor3f(1.0 , 0.0 , 0.0);

glPointSize(50);

glBegin(GL_QUADS);

//ATRAS

glColor3f(0.0 , 0.0 , 0.0);

glVertex2d(100,150);

glVertex2d(300,100);

glVertex2d(300,350);

glVertex2d(100,350);



//ABAJO

glColor3f(0.0 , 0.0 , 0.0);

glVertex2d(200,100);

glVertex2d(400,100);

glVertex2d(300,150);

glVertex2d(100,150);

//izquierdo

glColor3f(0.0 , 0.1 , 0.1);

glVertex2d(100,150);

glVertex2d(200,100);

glVertex2d(200,300);

glVertex2d(100,350);

//derecho

glColor3f(1.1 , 1.1 , 1.1);
    15
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

glVertex2d(300,150);

glVertex2d(400,100);

glVertex2d(400,300);

glVertex2d(300,350);

//arriba

glColor3f(1.2 , 0.0 , 0.0);

glVertex2d(200,300);

glVertex2d(400,300);

glVertex2d(300,350);

glVertex2d(100,350);

//enfrente

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

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);               //establece el modo de
visualización

glutInitWindowSize(500,500);              //tamaño de la ventana

    16
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

glutInitWindowPosition(0,0);       //posicion inicial de la ventana

glutCreateWindow("mi primera ventana");           //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);             //Envia los graficos a la ventana de
visualización

glutMainLoop();                   //muestra todo y espera

return 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éxico

void inicializa(void)

{

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

glMatrixMode(GL_PROJECTION);               //Modo de proyeccion

glLoadIdentity();              //Establece los parametros de proyeccion

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

}



void dibuja(void)              //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT);               //borra pantalla

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

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


glVertex2i(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éxico

glVertex2i(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éxico

glutInit(&argc, argv);                //incializa GLUT

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);            //establece el modo de
visualización

glutInitWindowSize(500,500);           //tamaño de la ventana

glutInitWindowPosition(0,0);       //posicion inicial de la ventana

glutCreateWindow("Muñeco con triangulos");           //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);             //Envia los graficos a la ventana de
visualización

glutMainLoop();                   //muestra todo y espera

return 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éxico

glVertex2i(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éxico

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

glVertex2i(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éxico

glVertex2i(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éxico

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

glVertex2i(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éxico




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

glMatrixMode(GL_PROJECTION);                        //Modo de proyeccion

glLoadIdentity();                    //Establece los parametros de proyeccion

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

circulo(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éxico

circulo(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 GLUT

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);               //establece el modo de
visualización

glutInitWindowSize(500,500);              //tamaño de la ventana

    33
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

glutInitWindowPosition(100,100);        //posicion inicial de la ventana

glutCreateWindow("Ventana");           //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);             //Envia los graficos a la ventana de
visualización

glutMainLoop();                    //muestra todo y espera

return 0;                      //retorna un valor de cero

}




    34
Colegio de Estudios Científicos Y Tecnológicos del Estado de México


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

glMatrixMode(GL_PROJECTION);                       //Modo de proyeccion

glLoadIdentity();                       //Establece los parametros de proyeccion

gluOrtho2D(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éxico

glVertex2f(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éxico

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

glColor3f(1.0 , 0.0 , 0.0);

//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);
    37
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

}

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

}

//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);
    38
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

}

//columna derecha frente

for(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 GLUT

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);                 //establece el modo de
visualización

glutInitWindowSize(500,500);               //tamaño de la ventana

glutInitWindowPosition(100,100);               //posicion inicial de la ventana

glutCreateWindow("Ventana");              //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);                 //Envia los graficos a la ventana de
visualización

glutMainLoop();                       //muestra todo y espera

return 0;                          //retorna un valor de cero

}




    39
Colegio de Estudios Científicos Y Tecnológicos del Estado de México




Muñ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 fondo

glMatrixMode(GL_PROJECTION);               //Modo de proyeccion

glLoadIdentity();              //Establece los parametros de proyeccion

gluOrtho2D(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éxico


void dibuja(void)               //funcion dibuja

{

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0.8,0.5,0.4);       //borra pantalla

circulo(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éxico

glVertex2i(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éxico

glVertex2i(300,280);

glVertex2i(340,200);

glVertex2i(380,200);

glEnd();

//di

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

glEnd();

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

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);           //establece el modo de
visualización

glutInitWindowSize(500,500);           //tamaño de la ventana

glutInitWindowPosition(100,100);        //posicion inicial de la ventana

glutCreateWindow("Ventana");           //nombre de la ventana

inicializa();

glutDisplayFunc(dibuja);             //Envia los graficos a la ventana de
visualización

glutMainLoop();                    //muestra todo y espera

return 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éxico

glFlush();

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

glutInitDisplayMode(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éxico

int 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é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<=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);//esto

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

glColor3f(1.0,1.0,1.0);

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

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

   52
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

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

if(ang==360){ang=0;}

// se repite idefinidamente



glColor3f(1.0,0.9,0.0);

circulo(500,500,35);//sol

glFlush(); //forzar dibujado

glutSwapBuffers(); //y esto

}

int main (int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto
tambien

glutInitWindowSize(1000,1000);

glutInitWindowPosition(10,10);

glutCreateWindow("Sistema Solar");

inicializa();

glutDisplayFunc(dibuja);

glutIdleFunc(dibuja);//esto es lo que cambia

glutMainLoop();

return 0;

}




    53
Colegio de Estudios Científicos Y Tecnológicos del Estado de México




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

if(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 idefinidamente

glFlush(); //forzar dibujado

glutSwapBuffers(); //y esto

}

int main (int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto
tambien

glutInitWindowSize(1000,1000);

glutInitWindowPosition(10,10);

glutCreateWindow("Movimiento en 8");

inicializa();

glutDisplayFunc(dibuja);

glutIdleFunc(dibuja);//esto es lo que cambia

glutMainLoop();

return 0;

}




    56
Colegio de Estudios Científicos Y Tecnológicos del Estado de México




Semáforo

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


      61
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

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

//glShadeModel (GL_SMOOTH);

// esfera

glPushMatrix();

mover();

if(malla) creaMalla();

if(ejes) creaEjes();

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

glColor3f(1.0,1.0,0.0);

//A

glTranslatef(-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éxico

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

//i

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

//n

glTranslatef(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éxico

glutSolidCube(1);

// AQUI PONES TU NOMBRE

//AQUI

//AQUI

//AQUI//AQUI

//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;
    64
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

giray=700-x;



       glutPostRedisplay();

   }



void teclado(unsigned char key, int x, int y){

   switch(key){

            case 27:

               exit(0);

            case '+':

               zoom++;

               break;

            case '-':

               zoom--;

               break;

            case 'p':

               glMatrixMode(GL_PROJECTION);

               glLoadIdentity();

               gluPerspective(45,1,10,100);

               zoom=-40;

               break;

            case 'o':

               glMatrixMode(GL_PROJECTION);

               glLoadIdentity();

               glOrtho(-15,15,-15,15,-30,30);
   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éxico




Semáforo.

                              SEMAFORO
En esta práctica realizaremos un semáforo en el cual los colores se cambien
según la ubicación de dicho semáforo, para ello utilizaremos, rectángulos y
cí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);//esto



glBegin(GL_QUADS);//Cuadros fondo semaforo

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

circulo(247,226,34);


    70
Colegio de Estudios Científicos Y Tecnológicos del Estado de México


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

circulo(247,302,34);



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

circulo(247,381,34);




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

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

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

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

circulo(247,381,34);

}// se repite idefinidamente

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

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

circulo(247,226,34);

}// se repite idefinidamente

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

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

circulo(247,302,34);

}// se repite idefinidamente



if(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éxico

circulo(247,302,34);

}// se repite idefinidamente



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

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

circulo(247,302,34);

}// se repite idefinidamente



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

glFlush(); //forzar dibujado

glutSwapBuffers(); //y esto

}




int main (int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambien

glutInitWindowSize(500,500);

glutInitWindowPosition(10,10);

glutCreateWindow("Ventana");

inicializa();

glutDisplayFunc(dibuja);

glutIdleFunc(dibuja);//esto es lo que cambia

glutMainLoop();

return 0;

    72
Colegio de Estudios Científicos Y Tecnológicos del Estado de México

}




    73

Weitere ähnliche Inhalte

Was ist angesagt?

Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De ComportamientoEmilio Aviles Avila
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascadaaics-1986-13-saraguro
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioSergio Sanchez
 
metodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialmetodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialNoraVelasquez4
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalAngel Vázquez Patiño
 
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010SaraEAlcntaraR
 
IEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareIEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareJesús Navarro
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)programadorjavablog
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srtCarlos Solano
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialJuank Grifin
 

Was ist angesagt? (20)

Curso Uml 2.4 Diagramas De Comportamiento
Curso Uml   2.4 Diagramas De ComportamientoCurso Uml   2.4 Diagramas De Comportamiento
Curso Uml 2.4 Diagramas De Comportamiento
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
Manual de open gl.
Manual de open gl.Manual de open gl.
Manual de open gl.
 
Unidad 3 Modelo De Negocio
Unidad 3 Modelo De NegocioUnidad 3 Modelo De Negocio
Unidad 3 Modelo De Negocio
 
metodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialmetodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificial
 
Herramientas Case
Herramientas CaseHerramientas Case
Herramientas Case
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
IEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de softwareIEEE 1471-2000: Documento de arquitectura de software
IEEE 1471-2000: Documento de arquitectura de software
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Metodología WEB UWE
Metodología WEB UWEMetodología WEB UWE
Metodología WEB UWE
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia Artificial
 

Andere mochten auch (9)

Manual de practicas de dev c++
Manual de practicas de dev c++Manual de practicas de dev c++
Manual de practicas de dev c++
 
Manual de practicas de Open GL
Manual de practicas de Open GLManual de practicas de Open GL
Manual de practicas de Open GL
 
Manual de actividades
Manual de actividadesManual de actividades
Manual de actividades
 
Manual opengl
Manual openglManual opengl
Manual opengl
 
Computação gráfica
Computação gráficaComputação gráfica
Computação gráfica
 
Generalidades computación Gráfica
Generalidades computación GráficaGeneralidades computación Gráfica
Generalidades computación Gráfica
 
Renee opengl karla
Renee opengl karlaRenee opengl karla
Renee opengl karla
 
Hardware para Computación Gráfica
Hardware para Computación GráficaHardware para Computación Gráfica
Hardware para Computación Gráfica
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 

Ähnlich wie Manual OpenGL prácticas Cecytem

Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminadojesicecytem
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminadoKaren_Avilaa
 
Practicas OpenglC++
Practicas OpenglC++Practicas OpenglC++
Practicas OpenglC++jesicecytem
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Mery_Angie_Ugalde
 
Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Gloria Gómez Diago
 
Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Gloria Gómez Diago
 
Manual de practicas segundo parcial
Manual de practicas segundo parcialManual de practicas segundo parcial
Manual de practicas segundo parcialGuillermo Mendoza
 
Intro opengl
Intro openglIntro opengl
Intro openglsispro
 
Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Pablo Solis
 
Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDKFe
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndkBarcelona GTUG
 
Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsmanalva
 
Scratch guiareferencia 2.0
Scratch guiareferencia 2.0Scratch guiareferencia 2.0
Scratch guiareferencia 2.0ie_macias
 
Scratch guiareferencia
Scratch guiareferenciaScratch guiareferencia
Scratch guiareferenciaportuguesa80
 
Scratch guiareferencia
Scratch guiareferenciaScratch guiareferencia
Scratch guiareferenciacarmen_torrano
 
Scratch guía referencia 2013
Scratch guía referencia  2013Scratch guía referencia  2013
Scratch guía referencia 2013luz deluna
 

Ähnlich wie Manual OpenGL prácticas Cecytem (20)

Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminado
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminado
 
Practicas OpenglC++
Practicas OpenglC++Practicas OpenglC++
Practicas OpenglC++
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
 
Introduccion al OpenGL
Introduccion al OpenGLIntroduccion al OpenGL
Introduccion al OpenGL
 
Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez Practicas para slider Rene Dominguez
Practicas para slider Rene Dominguez
 
Buenooo opengl
Buenooo openglBuenooo opengl
Buenooo opengl
 
Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)
 
Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)Mundos virtuales de open source (marzo, 8, 2012)
Mundos virtuales de open source (marzo, 8, 2012)
 
Manual de practicas segundo parcial
Manual de practicas segundo parcialManual de practicas segundo parcial
Manual de practicas segundo parcial
 
Intro opengl
Intro openglIntro opengl
Intro opengl
 
Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303
 
Introducción Android NDK
Introducción Android NDKIntroducción Android NDK
Introducción Android NDK
 
Introducción android ndk
Introducción android ndkIntroducción android ndk
Introducción android ndk
 
Trabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtoolsTrabajando con gdal, usando fwtools
Trabajando con gdal, usando fwtools
 
Scratch guiareferencia 2.0
Scratch guiareferencia 2.0Scratch guiareferencia 2.0
Scratch guiareferencia 2.0
 
Scratch guiareferencia
Scratch guiareferenciaScratch guiareferencia
Scratch guiareferencia
 
Scratch guiareferencia
Scratch guiareferenciaScratch guiareferencia
Scratch guiareferencia
 
Scratch guía referencia 2013
Scratch guía referencia  2013Scratch guía referencia  2013
Scratch guía referencia 2013
 
Scratch guiareferencia
Scratch guiareferenciaScratch guiareferencia
Scratch guiareferencia
 

Manual OpenGL prácticas Cecytem

  • 1. 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 Escalona Alumno(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
  • 2. 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 el hardware gráfico de nuestra máquina. Consta de unas 120 funciones distintas, que especifican los objetos y las operaciones necesarias para producir aplicaciones interactivas en las que intervienen gráficos en tres dimensiones. Esta diseñado de forma completamente independiente del hardware por lo que puede implementarse en plataformas muy diversas (PC, SGI, Digital, Sun, etc…. El precio que hay que pagar en aras de esta portabilidad, es que OpenGL no incluye comandos para gestionar el sistema de ventanas, ni para capturar órdenes de los usuarios, ya sea por ratón o por teclado. En lugar de esto, debemos trabajar con la ayuda de cualquier sistema de ventanas que se utilice en la máquina en concreto en la que estemos trabajando. En nuestro caso utilizaremos el sistema de ventanas de Windows. Librerías De OpenGL. La librería principal de OpenGL nos suministra todas las funciones necesarias para mostrar un entorno 3D aunque hay algunas operaciones que son algo tediosas de realizar utilizando solo esta librería. Estas son por ejemplo calcular la matriz de proyección. Para esto se han desarrollado también unas librerías auxiliares: GLU: Esta librería acompaña a la OpenGL principal. Incluye funciones más complejas 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 permite utilizar funciones para el tratamiento de ventanas, teclado y ratón. Para trabajar con OpenGL en cualquier plataforma, primero tenemos que inicializar una ventana (y esto es diferente entre Windows y Linux por ejemplo). GLUT nos permite crear ventanas 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 desarrollado para Windows. Mantiene prácticamente la misma estructura que la GLUT con el defecto de que solo sirve para Windows, mientras que GLUT sirve para cualquier plataforma. 2
  • 3. Colegio de Estudios Científicos Y Tecnológicos del Estado de México GLX: 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 de una red. Configuración de Dev-C++ en Windows para OpenGL Los programas de ejemplo están hechos bajo lenguaje C, así que se requiere un compilador. Si setrabaja en alguna distribución de Linux, seguro cuenta con los compiladores GCC y G++. Si se trabaja en ambiente Win32 se puede usar un compilador de Borland, de Microsoft y también un compilador de software libre como el Bloodshed Dev-C++ el cual usa el Mingw y se puede obtener en http://www.bloodshed.net/dev/devcpp.html. Cualquiera de ellos al momento de instalarse ya incluyen las librerías gl y glu, por lo cual sólo nos hace falta la librería de glut, que es la usada para el manejo de ventanas y eventos. En la página http://www.opengl.org/resources/libraries/glut.html viene información de donde bajar glut, es importante hacer notar que los archivos .a son creados para cada compilador, por lo tanto es necesario bajar la librería apropiada de acuerdo al que se haya instalado. SourceForge, mantiene una versión de glut más actualizada llamada openglut, información y archivos para descargar se encuentran en http://openglut.sourceforge.net/index.html. Otro sitio donde se puede encontrar glut y 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 muy sencilla: El archivo glut32.dll se coloca bajo el directorio Windows/system32, el archivo glut.h se coloca bajo include/GL y libglut32.a se coloca bajo lib, ambos del directorio de instalación del Dev-C++ Una vez colocados los archivos donde corresponde, sólo hace falta configurar el Dev-C++ para compilar los programas. Existen varias formas, una es creando un proyecto y se puede consultar en la página de Linux de Acatlán: http://www.acatlan.unam.mx/linux/graficacion/compilawindows.html.Otra manera es sólo compilar el programa con las opciones apropiadas, para esto se abre el menú Herramientas>Opciones del Compilador: Después se marca el recuadro junto a “Añadir estos comandos a la línea de comandos del linker” y se agregan los nombres de las librerías -lglut32 -lglu32 -l opengl32.Esto sólo se hace una vez y después se puede compilar cualquier programa de OpenGL con glut. 3
  • 4. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Índice 1. Tablero de Ajedrez 2. Estrella 3. Cubo con líneas 4. Cubo delineado 5. Muñeco con triángulos 6. Casita 7. Oso 8. Cubo con cubitos 9. Muñeco con formas 10. Animación circulo 11. Animación circulo rotando 12. Animación sistema solar 13. Movimiento en ocho 14. Semáforo 15. Objetos 3D Wire (9) 16. Objetos 3D Solid (9) 17. Interacción Teclado 18. Interacción con mouse 19. Interacción de objetos 3D con mouse y teclado 20. Cubo 3D con líneas 4
  • 5. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Practicas Tablero 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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glColor3f(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
  • 6. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 7. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 8. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glFlush(); //forza dibujo } int main (int argc, char** argv) //metodo main { glutInit(&argc, argv); //incializa GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("TABLERO DE AJEDREZ"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } 8
  • 9. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Estrella //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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glLineWidth(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
  • 10. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(400,300); glVertex2i(50,50); glEnd(); glFlush(); //forza dibujo } int main (int argc, char** argv) //metodo main { glutInit(&argc, argv); //incializa GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("estrella"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } 10
  • 11. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Cubo 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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glLineWidth(2); glBegin(GL_LINES); //enfrente glVertex2i(50,50); glVertex2i(50,300); glVertex2i(50,300); 11
  • 12. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(300,300); glVertex2i(300,300); glVertex2i(300,50); glVertex2i(300,50); glVertex2i(50,50); //atras glVertex2i(150,150); glVertex2i(150,400); glVertex2i(150,400); glVertex2i(400,400); glVertex2i(400,400); glVertex2i(400,150); glVertex2i(400,150); glVertex2i(150,150); //linea izquierda glVertex2i(50,300); glVertex2i(150,400); //linea derecha glVertex2i(300,300); glVertex2i(400,400); //linea izquierda abajo glVertex2i(50,50); glVertex2i(150,150); //linea derecha abajo glVertex2i(300,50); 12
  • 13. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(400,150); glEnd(); glFlush(); //forza dibujo } int main (int argc, char** argv) //metodo main { glutInit(&argc, argv); //incializa GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("mi primera ventana"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } 13
  • 14. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Cubo 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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { 14
  • 15. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glColor3f(1.0 , 0.0 , 0.0); glPointSize(50); glBegin(GL_QUADS); //ATRAS glColor3f(0.0 , 0.0 , 0.0); glVertex2d(100,150); glVertex2d(300,100); glVertex2d(300,350); glVertex2d(100,350); //ABAJO glColor3f(0.0 , 0.0 , 0.0); glVertex2d(200,100); glVertex2d(400,100); glVertex2d(300,150); glVertex2d(100,150); //izquierdo glColor3f(0.0 , 0.1 , 0.1); glVertex2d(100,150); glVertex2d(200,100); glVertex2d(200,300); glVertex2d(100,350); //derecho glColor3f(1.1 , 1.1 , 1.1); 15
  • 16. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2d(300,150); glVertex2d(400,100); glVertex2d(400,300); glVertex2d(300,350); //arriba glColor3f(1.2 , 0.0 , 0.0); glVertex2d(200,300); glVertex2d(400,300); glVertex2d(300,350); glVertex2d(100,350); //enfrente glColor3f(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 GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana 16
  • 17. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("mi primera ventana"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } Muñeco con Triángulos #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> 17
  • 18. Colegio de Estudios Científicos Y Tecnológicos del Estado de México void inicializa(void) { glClearColor(0.0,0.0,0.0,0.0); //color de fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); //borra pantalla glColor3f(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
  • 19. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glColor3f(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
  • 20. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 21. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 22. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutInit(&argc, argv); //incializa GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("Muñeco con triangulos"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } Casita 22
  • 23. 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
  • 24. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 25. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glColor3f(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
  • 26. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 27. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 28. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glColor3f(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
  • 29. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 30. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Oso //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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal } void circuloc(int x, int y, int t, int radio) 30
  • 31. 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
  • 32. 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 pantalla circulo(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
  • 33. Colegio de Estudios Científicos Y Tecnológicos del Estado de México circulo(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 GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana 33
  • 34. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutInitWindowPosition(100,100); //posicion inicial de la ventana glutCreateWindow("Ventana"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } 34
  • 35. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Cubo 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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(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
  • 36. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2f(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
  • 37. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2f(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 pantalla glColor3f(1.0 , 0.0 , 0.0); //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); 37
  • 38. Colegio de Estudios Científicos Y Tecnológicos del Estado de México } //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); } //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); 38
  • 39. Colegio de Estudios Científicos Y Tecnológicos del Estado de México } //columna derecha frente for(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 GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(100,100); //posicion inicial de la ventana glutCreateWindow("Ventana"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } 39
  • 40. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Muñ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 fondo glMatrixMode(GL_PROJECTION); //Modo de proyeccion glLoadIdentity(); //Establece los parametros de proyeccion gluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal 40
  • 41. 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
  • 42. Colegio de Estudios Científicos Y Tecnológicos del Estado de México void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.8,0.5,0.4); //borra pantalla circulo(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
  • 43. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(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
  • 44. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glVertex2i(300,280); glVertex2i(340,200); glVertex2i(380,200); glEnd(); //di glColor3f(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
  • 45. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glEnd(); 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
  • 46. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(500,500); //tamaño de la ventana glutInitWindowPosition(100,100); //posicion inicial de la ventana glutCreateWindow("Ventana"); //nombre de la ventana inicializa(); glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización glutMainLoop(); //muestra todo y espera return 0; //retorna un valor de cero } Animación circulo #include <unistd.h> #include <GL/glut.h> 46
  • 47. 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
  • 48. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glFlush(); 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
  • 49. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutInitDisplayMode(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
  • 50. Colegio de Estudios Científicos Y Tecnológicos del Estado de México int 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
  • 51. 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<=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);//esto glColor3f(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
  • 52. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glColor3f(1.0,1.0,1.0); circulo( 500+ sin(ang) * rad,500 - cos(ang) * rad,10); //funcion circulo glColor3f(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 mas lento 52
  • 53. Colegio de Estudios Científicos Y Tecnológicos del Estado de México for(int j=1;j<=10000000;j++){}//pausa if(ang==360){ang=0;} // se repite idefinidamente glColor3f(1.0,0.9,0.0); circulo(500,500,35);//sol glFlush(); //forzar dibujado glutSwapBuffers(); //y esto } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambien glutInitWindowSize(1000,1000); glutInitWindowPosition(10,10); glutCreateWindow("Sistema Solar"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja);//esto es lo que cambia glutMainLoop(); return 0; } 53
  • 54. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Movimiento 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
  • 55. 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 bolita if(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
  • 56. Colegio de Estudios Científicos Y Tecnológicos del Estado de México // se repite idefinidamente glFlush(); //forzar dibujado glutSwapBuffers(); //y esto } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambien glutInitWindowSize(1000,1000); glutInitWindowPosition(10,10); glutCreateWindow("Movimiento en 8"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja);//esto es lo que cambia glutMainLoop(); return 0; } 56
  • 57. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Semáforo Nombre 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
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. 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 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 61
  • 62. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0}); //glShadeModel (GL_SMOOTH); // esfera glPushMatrix(); mover(); if(malla) creaMalla(); if(ejes) creaEjes(); //glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f); glColor3f(1.0,1.0,0.0); //A glTranslatef(-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
  • 63. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glTranslatef(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); //i glTranslatef(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); //n glTranslatef(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
  • 64. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glutSolidCube(1); // AQUI PONES TU NOMBRE //AQUI //AQUI //AQUI//AQUI //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; 64
  • 65. Colegio de Estudios Científicos Y Tecnológicos del Estado de México giray=700-x; glutPostRedisplay(); } void teclado(unsigned char key, int x, int y){ switch(key){ case 27: exit(0); case '+': zoom++; break; case '-': zoom--; break; case 'p': glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,1,10,100); zoom=-40; break; case 'o': glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-15,15,-15,15,-30,30); 65
  • 66. 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
  • 67. 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
  • 68. Colegio de Estudios Científicos Y Tecnológicos del Estado de México Semáforo. SEMAFORO En esta práctica realizaremos un semáforo en el cual los colores se cambien según la ubicación de dicho semáforo, para ello utilizaremos, rectángulos y círculos así como se muestra a continuación: Código: #include <unistd.h> 68
  • 69. 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
  • 70. 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);//esto glBegin(GL_QUADS);//Cuadros fondo semaforo glColor3f(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 Roja circulo(247,226,34); 70
  • 71. Colegio de Estudios Científicos Y Tecnológicos del Estado de México glColor3f(0.0,0.0,0.0);//Luces Amarrilla circulo(247,302,34); glColor3f(0.0,0.0,0.0);//Luces Verde circulo(247,381,34); a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lento for(int j=1;j<=10000000;j++){}//pausa if(a>1 && a<20){ glColor3f(1.0,0.0,0.0);//Luces Roja circulo(247,381,34); }// se repite idefinidamente if(a>20 && a<40){ glColor3f(0.0,1.0,0.0);//Luces Roja circulo(247,226,34); }// se repite idefinidamente if(a>40 && a<50){ glColor3f(1.0,1.0,0.0);//Luces Roja circulo(247,302,34); }// se repite idefinidamente if(a>55 && a<50){ glColor3f(1.0,1.0,0.0);//Luces Roja 71
  • 72. Colegio de Estudios Científicos Y Tecnológicos del Estado de México circulo(247,302,34); }// se repite idefinidamente if(a>60 && a<55){ glColor3f(1.0,1.0,0.0);//Luces Roja circulo(247,302,34); }// se repite idefinidamente if(a>60){a=0;} glFlush(); //forzar dibujado glutSwapBuffers(); //y esto } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto tambien glutInitWindowSize(500,500); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja);//esto es lo que cambia glutMainLoop(); return 0; 72
  • 73. Colegio de Estudios Científicos Y Tecnológicos del Estado de México } 73