SlideShare una empresa de Scribd logo
1 de 52
Colegio de Estudios Cientificos Y
Tecnologicos del Estado de México
             Plantel Tecamac


        PRACTICAS openGL

  Alumnas: Sánchez      Ruiz Ana Laura
 Ugalde Sierra María de los Ángeles


 Profr: René   Domínguez Escalona

Grupo: 303     Especialidad: Informática


                3er Semestre


  Materia: Utilización de Software de diseño
Introducción

C++ es un lenguaje de programación orientado a objetos que toma la base del
lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk.
C++ es un lenguaje de programación diseñado a mediados de los años 1980
por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso
lenguaje de programación C con mecanismos que permitieran la manipulación
de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados
a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron
facilidades de programación genérica, que se sumó a los otros dos paradigmas
que ya estaban admitidos (programación estructurada y la programación
orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de
programación multiparadigma.

Una instrucción es lo que le ordenamos a la maquina paara que ejecute, por
eso se dice que un programa es un conjunto de instrucciones; ya que cuando
ejecutamos un programa, se ejecutan asi mismo en su interior muchas
instrucciones que hacen que la maquina realize algo.
Estos son los tipos de instrucciones:
- instrucciones declarativas
- instrucciones de asignacion
- instrucciones selectivas
- instrucciones repetitivas
- instrucciones de entrada y salida de datos
- instrucciones de bifurcacion
                          - Instrucciones declarativas -
Sirven para declarar librerias, variables, constantes, arreglos , punteros,
estructuras…
Por ejemplo:
1.) Para librerias:
las librerias las declaramos porque vamos a usar recursos que contienen ellas.
[más detalles ]
#include <iostream.h> ——> cin , cout..
#include <conio.h> ——> funcion getch()..
#include <string.h> ——> para manipular cadenas
#include <math.h> ——> para operaciones numericas
#include <time.h> ——> para usar la hora
#include <stdio.h> ——> para usar alternativas de entrda – salida como printf ,
scanf
2.) Para variables:
INDICE
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.-Animacion circulo

12.-Animación sistema solar

13.-Movimiento en 8

14.-Semaforo
Practica Nº 1 Tablero de ajedrez

El propósito de esta práctica es aprender unas de las funciones básicas de
opengl.
En esta practica se creara un tablero con puntos para eso se utiliza la función
glBegin (GL_POINTS) y glVertex2i ( ).

Borrador:




Código:
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

void inicializa(void)
{
glClearColor (1.0,0.0,1.0,4.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);
glColor3f(1.0 ,1.0 ,1.0 );
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(100,100);
glVertex2i(200,200);
glVertex2i(300,100);
glVertex2i(400,200);
glVertex2i(500,100);
glVertex2i(600,200);
glVertex2i(700,100);
glVertex2i(800,200);
glVertex2i(100,300);
glVertex2i(200,400);
glVertex2i(300,300);
glVertex2i(400,400);
glVertex2i(500,300);
glVertex2i(600,400);
glVertex2i(700,300);
glVertex2i(800,400);
glVertex2i(100,500);
glVertex2i(200,600);
glVertex2i(300,500);
glVertex2i(400,600);
glVertex2i(500,500);
glVertex2i(600,600);
glVertex2i(700,500);
glVertex2i(800,600);
glVertex2i(100,700);
glVertex2i(200,800);
glVertex2i(300,700);
glVertex2i(400,800);
glVertex2i(500,700);
glVertex2i(600,800);
glVertex2i(700,700);
glVertex2i(800,800);
glEnd();
glColor3f(0.0 ,0.0 ,0.0 );
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(200,100);
glVertex2i(300,200);
glVertex2i(400,100);
glVertex2i(500,200);
glVertex2i(600,100);
glVertex2i(700,200);
glVertex2i(800,100);
glVertex2i(100,200);
glVertex2i(200,300);
glVertex2i(300,400);
glVertex2i(400,300);
glVertex2i(500,400);
glVertex2i(600,300);
glVertex2i(700,400);
glVertex2i(800,300);
glVertex2i(100,400);
glVertex2i(200,500);
glVertex2i(300,600);
glVertex2i(400,500);
glVertex2i(500,600);
glVertex2i(600,500);
glVertex2i(700,600);
glVertex2i(800,500);
glVertex2i(100,600);
glVertex2i(200,700);
glVertex2i(300,800);
glVertex2i(400,700);
glVertex2i(500,800);
glVertex2i(600,700);
glVertex2i(700,800);
glVertex2i(800,700);
glVertex2i(100,800);

glEnd();
glColor3f(1.0 ,1.0 ,1.0 );
glPointSize(50);
glBegin(GL_LINE);
glVertex2i(500,900);
glVertex2i(500,100);
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(475,475);           //tamaño de la ventana
glutInitWindowPosition(0,0);      //posicion inicial de la ventana
glutCreateWindow("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




Y a la hora de compilar así que da la ventana:
Practica Nº 2 Estrella
El propósito de esta practica es dibujar una estrella con líneas para poder realizar esta
practica las funciones principales son
glPointSize( );
glBegin(GL_LINES);
glVertex2i( )

borrador:
Codigo:
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

void inicializa(void)
{
glClearColor(1.0,0.8,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);
glColor3f(1.0 ,1.0 ,1.0 );
glPointSize(50);
glBegin(GL_LINES);
glVertex2i(100,100);
glVertex2i(200,400);
glBegin(GL_LINES);
glVertex2i(200,400);
glVertex2i(300,100);
glBegin(GL_LINES);
glVertex2i(300,100);
glVertex2i(50,300);
glBegin(GL_LINES);
glVertex2i(50,300);
glVertex2i(350,300);
glBegin(GL_LINES);
glVertex2i(350,300);
glVertex2i(100,100);

glEnd();
glColor3f(1.0 ,1.0 ,1.0 );
glPointSize(50);
glBegin(GL_LINE);
glVertex2i(500,900);
glVertex2i(500,100);
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(475,475);           //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
}

Y al compilar y asi queda la ventana:
Practica Nº 3 Cubo con líneas
En esta practica se le da una mejor utilización a las lineas para eso se utiliza
las funciones
glBegin(GL_LINES);
glVertex2i( );

Borrador:




Código:
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

void inicializa(void)
{
glClearColor(1.0,0.0,1.1,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);
glColor3f(0.0 ,0.0 ,1.0 );

glBegin(GL_LINES);
glVertex2i(100,100);
glVertex2i(100,400);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(400,100);
glVertex2i(400,400);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(100,100);
glVertex2i(400,100);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(100,400);
glVertex2i(400,400);
glColor3f(0.0 ,1.0 ,0.0 );
glVertex2i(400,400);
glVertex2i(600,530);
glColor3f(0.0 ,1.0 ,0.0 );
glVertex2i(100,400);
glVertex2i(300,530);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(600,530);
glVertex2i(300,530);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(600,530);
glVertex2i(600,250);
glColor3f(0.0 ,1.0 ,0.0 );
glVertex2i(400,100);
glVertex2i(600,250);
glColor3f(0.0 ,1.0 ,0.0 );
glVertex2i(100,100);
glVertex2i(300,250);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(300,250);
glVertex2i(600,250);
glColor3f(0.0 ,0.0 ,1.0 );
glVertex2i(300,250);
glVertex2i(300,530);
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(400,400);        //tamaño de la ventana
glutInitWindowPosition(0,0);   //posicion inicial de la ventana
glutCreateWindow("cubo");     //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

Y al compilar nos que da de la siguiente manera:




                       Practica Nº 4 Cubo delineado
El propósito de esta practica es aprender; como rellenar cuadros y delinearlos
de tal forma que cada vez que se crea un cuadro se valla dando la forma de un
cubo para esto la principal función que se da es: glBegin(GL_QUADS);

Codigo:

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

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, 1050.0, 0.0, 1000.0);      //vista ortogonal

}

void dibuja(void)                //funcion dibuja
{


glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);

//izquierda
glVertex2i(700,700);
glVertex2i(700,800);

//arriva
glVertex2i(750,850);
//derecha
glVertex2i(750,750);



glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(600,700);
glVertex2i(600,800);
//arriva
glVertex2i(700,800);
//derecha
glVertex2i(700,700);
//abajo


glEnd();
glColor3f(0.0 ,1.0 ,0.5 );

glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(600,800);
glVertex2i(650,850);
//arriva
glVertex2i(750,850);
//derecha
glVertex2i(700,800);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(8);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(600,700);
glVertex2i(600,800);
//arriva
glVertex2i(600,800);
glVertex2i(700,800);
//derecha
glVertex2i(700,800);
glVertex2i(700,700);
//abajo
glVertex2i(700,700);
glVertex2i(600,700);
//diagonal derecha esquina arriva
glVertex2i(650,850);
glVertex2i(600,800);
//linea cuadro atras
//linea cuadro atras
glVertex2i(650,850);
glVertex2i(750,850);
//linea cuadro atras
glVertex2i(750,850);
glVertex2i(750,750);

//linea cuadro atras
glVertex2i(700,700);
glVertex2i(750,750);
//linea cuadro atras
glVertex2i(700,800);
glVertex2i(750,850);

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("cubo");         //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
Y al compilar te debe quedar de la siguiente forma:




                Practica Nº 5 Muñeco con triángulos
 En esta práctica el propósito es aprender a utilizar otra función y crear un
muñeco con esa función que es para crear triángulos para eso la función
principal es: glBegin(GL_TRIANGLES);


Código:

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

void inicializa(void)
{
glClearColor(0.0,0.0,0.0,1.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 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(160,40);
glColor3f(0.0 , 0.8 , 1.0);
glVertex2i(245,40);
glColor3f(0.0 , 0.8 , 1.0);
glVertex2i(200,80);
 glEnd();
glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(245,40);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(245,360);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(180,280);
 glEnd();


 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(320,360);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(320,280);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(420,280);
 glEnd();


 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(420,280);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(380,240);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(420,180);
 glEnd();

 glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(420,180);
glColor3f(0.0 , 1.0 , 1.0);
glVertex2i(520,180);
glColor3f(0.0 , 1.0 , 1.0);
glVertex2i(440,220);
 glEnd();


 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(60,360);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(80,440);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(100,400);
 glEnd();



 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(100,400);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(200,520);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(140,340);
 glEnd();


 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(260,520);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(298,480);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(320,520);
 glEnd();


 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(380,520);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(440,360);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(480,400);
 glEnd();



 glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(480,400);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(500,460);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(520,360);
 glEnd();

 glColor3f(0.8 , 0.0 , 1.0);
glBegin(GL_TRIANGLES);
glVertex2i(298,520);
glColor3f(0.8 , 0.0 , 1.0);
glVertex2i(360,600);
glColor3f(0.8 , 0.0 , 1.0);
glVertex2i(220,600);
 glEnd();


 glColor3f(0.6 , 0.5 , 0.4);
glBegin(GL_TRIANGLES);
glVertex2i(160,600);
glColor3f(0.6 , 0.5 , 0.4);
glVertex2i(298,720);
glColor3f(0.6 , 0.5 , 0.4);
glVertex2i(420,600);
 glEnd();


 glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(540,320);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(498,280);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(560,280);
 glEnd();


 glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(540,320);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(580,540);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(520,540);
 glEnd();

 glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(540,320);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(640,540);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(620,540);
 glEnd();

 glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(540,320);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(498,540);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(478,540);
 glEnd();

glBegin(GL_QUADS);
glColor3f(0.6 , 0.5 , 0.4);
glVertex2i(200,520);
glVertex2i(200,340);
glVertex2i(380,340);
glVertex2i(380,520);
glEnd();

glColor3f(1.0 , 0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(260,520);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(298,480);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(320,520);
 glEnd();

 glBegin(GL_POLYGON);
glVertex2i(520,100);
glVertex2i(520,140);
glVertex2i(480,180);
glVertex2i(440,180);
glVertex2i(400,140);
glVertex2i(400,100);
glVertex2i(440,60);
glVertex2i(480,60);
glEnd();


 glBegin(GL_POLYGON);
glVertex2i(0,0);
glVertex2i(0,40);
glVertex2i(1440,40);
glVertex2i(1440,0);

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

Y al terminar de poner todo este código se compila y el resultado debe ser:
Practica Nº 6 Casita

El propósito de esta practica es utilizar varias Funciones de las que se han
visto hasta el momento estas son triángulos, cuadrados y líneas para eso las
principales funciones son :
glBegin(GL_LINES);
glBegin(GL_QUADS);
glBegin(GL_TRIANGLES);
glBegin(GL_POLYGON);

Código:

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

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(0.0 , 0.0 , 0.0);
//carretera
glBegin(GL_QUADS);
glVertex2i(0,200);
glVertex2i(0,0);
glVertex2i(1000,0);
glVertex2i(1000,200);
glEnd();
glColor3f(1.0 , 1.0 , 0.0);
glLineWidth(4);
glBegin(GL_LINES);
glVertex2i(10,100);
glVertex2i(100,100);
glVertex2i(200,100);
glVertex2i(300,100);
glVertex2i(400,100);
glVertex2i(500,100);
glVertex2i(600,100);
glVertex2i(700,100);
glVertex2i(800,100);
glVertex2i(900,100);
glVertex2i(980,100);
glVertex2i(1000,100);
glEnd();
//pasto
glColor3f(0.3 , 1.0 , 0.2);
glBegin(GL_QUADS);
glVertex2i(0,500);
glVertex2i(0,200);
glVertex2i(1000,200);
glVertex2i(1000,500);
glEnd();

//linea amarilla
glColor3f(1.0 , 0.0 , 1.0);
glLineWidth(8);
glBegin(GL_LINES);
glVertex2i(0,200);
glVertex2i(1000,200);
glEnd();
//banqueta
glColor3f(0.2 , 0.8 , 1.0);
glLineWidth(50);
glBegin(GL_QUADS);
glVertex2i(0,208);
glVertex2i(0,300);
glVertex2i(1000,300);
glVertex2i(1000,208);

glVertex2i(440,300);
glVertex2i(440,450);
glVertex2i(560,450);
glVertex2i(560,300);
glEnd();
glColor3f(0.5 , 0.5 , 0.5);
glBegin(GL_QUADS);
glVertex2i(200,350);
glVertex2i(200,380);
glVertex2i(250,380);
glVertex2i(250,350);

glVertex2i(150,350);
glVertex2i(150,380);
glVertex2i(100,380);
glVertex2i(100,350);
glVertex2i(200,400);
glVertex2i(200,430);
glVertex2i(250,430);
glVertex2i(250,400);

glVertex2i(150,400);
glVertex2i(150,430);
glVertex2i(100,430);
glVertex2i(100,400);
glEnd();
//serca
glColor3f(1.0 , 0.0 , 1.0);
glBegin(GL_POLYGON);
glVertex2i(0,540);
glVertex2i(0,480);
glVertex2i(20,480);
glVertex2i(20,540);
glVertex2i(10,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(40,540);
glVertex2i(40,480);
glVertex2i(60,480);
glVertex2i(60,540);
glVertex2i(50,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(710,540);
glVertex2i(710,480);
glVertex2i(730,480);
glVertex2i(730,540);
glVertex2i(720,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(750,540);
glVertex2i(750,480);
glVertex2i(770,480);
glVertex2i(770,540);
glVertex2i(760,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(790,540);
glVertex2i(790,480);
glVertex2i(810,480);
glVertex2i(810,540);
glVertex2i(800,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(830,540);
glVertex2i(830,480);
glVertex2i(850,480);
glVertex2i(850,540);
glVertex2i(840,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(870,540);
glVertex2i(870,480);
glVertex2i(890,480);
glVertex2i(890,540);
glVertex2i(880,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(910,540);
glVertex2i(910,480);
glVertex2i(930,480);
glVertex2i(930,540);
glVertex2i(920,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(950,540);
glVertex2i(950,480);
glVertex2i(970,480);
glVertex2i(970,540);
glVertex2i(960,550);
glEnd();
glBegin(GL_POLYGON);
glVertex2i(990,540);
glVertex2i(990,480);
glVertex2i(1010,480);
glVertex2i(1010,540);
glVertex2i(1000,550);
glEnd();
glColor3f(1.0 , 1.0 , 0.0);
glLineWidth(10);
glBegin(GL_LINES);
glVertex2i(0,520);
glVertex2i(1000,520);
glEnd();
//casa
glColor3f(0.2 , 0.1 , 1.0);
glBegin(GL_QUADS);
glVertex2i(300,750);
glVertex2i(300,450);
glVertex2i(700,450);
glVertex2i(700,750);
glEnd();
glColor3f(0.0 , 0.0 , 1.0);
glLineWidth(14);
glBegin(GL_LINES);
glVertex2i(300,600);
glVertex2i(700,600);
glVertex2i(440,450);
glVertex2i(440,750);
glVertex2i(560,450);
glVertex2i(560,750);
glEnd();
//techo casa
glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(300,820);
glVertex2i(240,750);
glVertex2i(760,750);
glVertex2i(700,820);
glEnd();
//triangulo techo casa
glColor3f(1.0 , 0.9 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(600,720);
glVertex2i(500,800);
glVertex2i(400,720);
glEnd();
//puerta casa
glColor3f(1.0 , 1.0 , 1.0);
glBegin(GL_QUADS);
glVertex2i(454,450);
glVertex2i(454,570);
glVertex2i(546,570);
glVertex2i(546,450);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(474,470);
glVertex2i(474,550);
glVertex2i(526,550);
glVertex2i(526,470);
glEnd();
glColor3f(0.0 ,0.0 , 0.0);
glPointSize(3);
glBegin(GL_POINTS);
glVertex2i(464,505);
glEnd();
//ventanas casa
glColor3f(1.0 , 0.0 , 1.0);
glBegin(GL_QUADS);
glVertex2i(320,570);
glVertex2i(320,510);
glVertex2i(400,510);
glVertex2i(400,570);

glVertex2i(595,570);
glVertex2i(595,510);
glVertex2i(675,510);
glVertex2i(675,570);

glVertex2i(320,730);
glVertex2i(320,660);
glVertex2i(400,660);
glVertex2i(400,730);

glVertex2i(595,730);
glVertex2i(595,660);
glVertex2i(675,660);
glVertex2i(675,730);
glEnd();
glColor3f(1.0 , 1.0 , 1.0);
glLineWidth(4);
glBegin(GL_LINES);
glVertex2i(320,570);
glVertex2i(320,510);
glVertex2i(320,510);
glVertex2i(400,510);
glVertex2i(400,510);
glVertex2i(400,570);
glVertex2i(400,570);
glVertex2i(320,570);
glVertex2i(320,530);
glVertex2i(400,530);
glVertex2i(360,530);
glVertex2i(360,510);

glVertex2i(595,570);
glVertex2i(595,510);
glVertex2i(595,510);
glVertex2i(675,510);
glVertex2i(675,510);
glVertex2i(675,570);
glVertex2i(675,570);
glVertex2i(595,570);
glVertex2i(595,530);
glVertex2i(675,530);
glVertex2i(635,530);
glVertex2i(635,510);

glVertex2i(320,730);
glVertex2i(320,660);
glVertex2i(320,660);
glVertex2i(400,660);
glVertex2i(400,660);
glVertex2i(400,730);
glVertex2i(400,730);
glVertex2i(320,730);
glVertex2i(320,680);
glVertex2i(400,680);
glVertex2i(360,680);
glVertex2i(360,660);

glVertex2i(595,730);
glVertex2i(595,660);
glVertex2i(595,660);
glVertex2i(675,660);
glVertex2i(675,660);
glVertex2i(675,730);
glVertex2i(675,730);
glVertex2i(595,730);
glVertex2i(595,680);
glVertex2i(675,680);
glVertex2i(635,680);
glVertex2i(635,660);
glEnd();
//balcon casa
glColor3f(1.0 , 0.0 , 1.0);
glBegin(GL_QUADS);
glVertex2i(454,720);
glVertex2i(454,600);
glVertex2i(546,600);
glVertex2i(546,720);
glEnd();

glColor3f(1.0 , 1.0, 1.0);
glLineWidth(3);
glBegin(GL_LINES);
glVertex2i(455,640);
glVertex2i(455,600);
glVertex2i(467,640);
glVertex2i(467,600);
glVertex2i(479,640);
glVertex2i(479,600);
glVertex2i(491,640);
glVertex2i(491,600);
glVertex2i(503,640);
glVertex2i(503,600);
glVertex2i(515,640);
glVertex2i(515,600);
glVertex2i(527,640);
glVertex2i(527,600);
glVertex2i(539,640);
glVertex2i(539,600);
glVertex2i(455,640);
glVertex2i(546,640);
glVertex2i(505,640);
glVertex2i(505,720);
glEnd();
//cochera
glColor3f(1.0 , 0.0 , 1.0);
glBegin(GL_QUADS);
glVertex2i(90,450);
glVertex2i(90,600);
glVertex2i(300,600);
glVertex2i(300,450);
glEnd();
glColor3f(0.0 , 0.0, 1.0);
glLineWidth(12);
glBegin(GL_LINES);
glVertex2i(90,450);
glVertex2i(90,600);
glEnd();
//techo cochera
glColor3f(1.0 , 1.0 , 0.0);
glBegin(GL_POLYGON);
glVertex2i(90,660);
glVertex2i(60,600);
glVertex2i(300,600);
glVertex2i(300,660);
glEnd();
//pinos
glColor3f(0.5 , 0.0 , 0.3);
glBegin(GL_QUADS);
glVertex2i(850,450);
glVertex2i(900,450);
glVertex2i(900,530);
glVertex2i(850,530);
glEnd();

int i,a=9;
glColor3f(0.3 , 1.0 , 0.2);
glLineWidth(3);
glBegin(GL_LINES);
for(i=0;i<=14;i++){
glVertex2i(1000-a*i,530+a*i);
glVertex2i(740+a*i,530+a*i);
}

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(750,750);                 //tamaño de la ventana
glutInitWindowPosition(0,0);           //posicion inicial de la ventana
glutCreateWindow("MI primer 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
}
Por ultimo se compila y se abre la ventana con el resultado y así tiene que
quedar:




                            Practica Nº 7 Oso

El propósito de esta practica es empezar a utilizar una función para hacer
círculos por lo cual se le empiece a dar la forma de un oso para eso la funcion
principal es: circulo ( )


Código:
#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)
{
        int angulo=0;
        glPointSize(t);
        glBegin(GL_POINTS);
    //glColor3f (1.0, 0.0, 1.0);
        glVertex2f(x,y);
        //glColor3f(0,0.0,0.0);
        for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
        glEnd();
}

void circulo(int x, int y, int radio)
{
        int angulo=0;
        glBegin(GL_TRIANGLE_FAN);
   // glColor3f (1.0, 0.0, 1.0);
        glVertex2f(x,y);

       for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
       glEnd();
}

void dibuja(void)          //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.6,0.4,0.2); //borra pantalla
circulo(250,250,120);
glColor3f(0.6,0.4,0.2);
circulo(140,150,50);
glColor3f(0.6,0.4,0.2);
circulo(350,150,50);
glColor3f(0.6,0.4,0.2);
circulo(370,320,40);
glColor3f(0.6,0.4,0.2);
circulo(130,320,40);
glColor3f(0.6,0.4,0.2);
circulo(250,400,70);
glColor3f(0.6,0.4,0.2);
circulo(195,450,25);
glColor3f(0.6,0.4,0.2);
circulo(300,450,25);
glColor3f(1.0,1.0,1.0);
circulo(225,420,15);
glColor3f(0.0,0.0,0.0);
circulo(225,415,8);
glColor3f(1.0,1.0,1.0);
circulo(275,420,15);
glColor3f(0.0,0.0,0.0);
circulo(275,415,8);
glColor3f(1.0,0.0,0.0);
circulo(250,370,8);

glColor3f(0.6 ,0.4 , 0.2);
glBegin(GL_TRIANGLES);
glVertex2i(250,390);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(240,400);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(260,400);

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


Al tener completo este código al compilarlo el resultado debe ser lo siguiente:
Practica Nº 9 Muñeco con formas

El propósito de esta practica es crear un muñeco o niño en el cual se van a
utilizar las funciones de circulo, del cuadrado, triángulos, polígonos y líneas.

Borrador:
Código:

#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
void inicializa(void)
{
glClearColor(1.0,0.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)
{
int angulo=0;
        glPointSize(t);
        glBegin(GL_POINTS);
    //glColor3f (1.0, 0.0, 1.0);
        glVertex2f(x,y);
        //glColor3f(0,0.0,0.0);
        for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
        glEnd();
}

void circulo(int x, int y, int radio)
{
        int angulo=0;
        glBegin(GL_TRIANGLE_FAN);
   // glColor3f (1.0, 0.0, 1.0);
        glVertex2f(x,y);

       for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
       glEnd();
}

void dibuja(void)          //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.9,0.6,0.5); //borra pantalla
circulo(250,400,70);
glColor3f(0.9,0.6,0.5);
circulo(195,410,25);
glColor3f(0.9,0.6,0.5);
circulo(305,410,25);


glColor3f(0.0,0.0,0.0);
circulo(225,415,5);

glColor3f(0.0,0.0,0.0);
circulo(275,415,5);
glColor3f(0.0,0.0,0.0);
circulo(250,370,8);
glColor3f(1.0,0.0,0.0);
circulo(250,367,4);


glColor3f(0.9,0.6,0.5);
circulo(150,218,21);

glColor3f(0.9,0.6,0.5);
circulo(358 ,218,21);
glColor3f(0.9 ,0.6 , 0.5);
glBegin(GL_TRIANGLES);
glVertex2i(250,390);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(240,400);
glColor3f(0.9 , 0.6, 0.5);
glVertex2i(250,410);

glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(250,470);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(230,467);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(245,490);


glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(230,487);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(215,460);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(230,467);

glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(250,500);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(245,490);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(250,467);
 glEnd();

 glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(275,465);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(270,500);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(255,470);
 glEnd();

 glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(295,452);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(290,500);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(280,462);
 glEnd();

 glColor3f(0.9 ,0.6 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(228,290);
glVertex2i(228,335);
//arriva
glVertex2i(228,335);
glVertex2i(272,335);
//derecha
glVertex2i(272,335);
glVertex2i(272,290);
//abajo
glVertex2i(272,290);
glVertex2i(228,290);
glEnd();

glColor3f(1.0 ,0.0 ,0.0 );
glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(195,180);
glVertex2i(195,320);
//arriva
glVertex2i(195,320);
glVertex2i(305,320);
//derecha
glVertex2i(305,320);
glVertex2i(305,180);
//abajo
glVertex2i(305,180);
glVertex2i(195,180);
glEnd();

 glColor3f(0.9 ,0.6 , 0.5);
glBegin(GL_TRIANGLES);
glVertex2i(250,285);
glColor3f(0.9 , 0.6, 0.5);
glVertex2i(228,320);
glColor3f(0.9 , 0.6, 0.5);
glVertex2i(272,320);
 glEnd();
glColor3f(0.0,0.0,0.0);      //borra pantalla
circulo(250,265,5);
glColor3f(0.0,0.0,0.0);
circulo(250,245,5);
glColor3f(0.0,0.0,0.0);
circulo(250,225,5);


glColor3f(0.0,0.0,0.0);
circulo(250,205,5);


glColor3f(1.0 ,0.0 ,0.0 );
glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(150,240);
glVertex2i(165,200);
//arriva
glVertex2i(195,320);
glVertex2i(150,240);
//derecha
glVertex2i(195,260);
glVertex2i(195,320);
//abajo
glVertex2i(165,200);
glVertex2i(195,260);
glEnd();


glColor3f(1.0 ,0.0 ,0.0 );
glLineWidth(8);
glBegin(GL_QUADS);

//cuadro
//izquierda
glVertex2i(350,240);
glVertex2i(345,200);
//arriva
glVertex2i(305,320);
glVertex2i(350,240);
//derecha
glVertex2i(305,265);
glVertex2i(305,320);
//abajo
glVertex2i(345,200);
glVertex2i(305,265);
glEnd();
glColor3f(0.04 ,0.3 ,1.9 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(150,100);
glVertex2i(165,60);
//arriva
glVertex2i(195,180);
glVertex2i(150,100);
//derecha
glVertex2i(305,180);
glVertex2i(195,180);
//abajo
glVertex2i(165,60);
glVertex2i(305,180);
glEnd();


glColor3f(0.04 ,0.3 ,1.9 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(350,100);
glVertex2i(345,60);
//arriva
glVertex2i(305,180);
glVertex2i(350,100);
//derecha
glVertex2i(195,180);
glVertex2i(305,180);
//abajo
glVertex2i(345,60);
glVertex2i(195,180);
glEnd();


glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(345,60);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(350,100);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(390,60);
 glEnd();


glColor3f(0.0 ,0.0 , 0.0);
glBegin(GL_TRIANGLES);
glVertex2i(115,60);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(150,100);
glColor3f(0.0 , 0.0, 0.0);
glVertex2i(165,60);
 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(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
}

Con este código se crea un muñeco muy gracioso y al copilarlo queda de la
siguiente forma:
Practica Nº 10 Animacion circulo

El propósito de esta practica es conocer el como dar animación o el efecto de
animación a un circulo de modo que parezca que se me mueve en forma
cuadrada o rectangular. Por medio de diferentes funciones.

Borrador:
Código:

#include <unistd.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int x=1,z=1,w=1, y=1;
void inicializa(void)
{
glClearColor(0.0,0.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1000.0, 0.0, 800.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<600){
circulo(100,700-1*x,40);
glFlush();
x++;
}
if(y>=1 && y<800 && x==600){
circulo(100+y,100,40);
glFlush();
y++;
}
if(w>=1 && w<600 && y==800 && x==600){
circulo(900,100+w,40);
glFlush();
w++;
}
if(z>=1 && z<800 && y==800 && x==600 && w==600){
circulo(900-z,700,40);
glFlush();
z++;
if(z==800) {z=1;x=1;y=1;w=1;}
}

glutSwapBuffers();
}


int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(800,600);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}

Una vez teniendo todo terminado, al compilar la información del código aparece
la siguiente animación o una ejemplo de ella:
Practica Nº 12 Animacion sistema solar

El proposito de esta practica es saber realizar circulos de manera que se
muevan redondamente y se pueda apreciar un sistema solar.

Codigo:

#include <unistd.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int rad=100;
double ang=0 , l=0 , a=0 , b=0 , c=0 , d=0 , e=0 , f=0 , k=0;
void inicializa(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1900.0, 0.0, 1900.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++){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
        glEnd();
}
void circuloc(int x, int y, int t, int radio)
{
        int angulo=0;
        glPointSize(t);
        glBegin(GL_POINTS);
    //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)
{
glColor3f(1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
circulo(1000,1000,25);
glColor3f(0.0,1.0,1.0);
circuloc(1000,1000,1,100);
glColor3f(1.0,0.0,1.0);
circulo( 1000+ sin(l) * rad,1000 + cos(l) * rad,10);


glColor3f(1.0,0.0,1.0);
circuloc(1000,1000,1,200);
glColor3f(0.0,0.0,1.0);
circulo( 1000+ sin(a) * 200,1000 + cos(a) * 200,20);


glColor3f(1.0,0.0,0.0);
circuloc(1000,1000,1,300);
glColor3f(0.0,1.0,1.0);
circulo( 1000+ sin(b) * 300,1000 + cos(b) * 300,40);


glColor3f(1.0,1.0,0.0);
circuloc(1000,1000,1,400);
glColor3f(1.0,0.0,0.0);
circulo( 1000+ sin(c) * 400,1000 + cos(c) * 400,45);


glColor3f(0.0,1.0,1.0);
circuloc(1000,1000,1,500);
glColor3f(0.7,1.0,0.0);
circulo( 1000+ sin(d) * 500,1000 + cos(d) * 500,30);


glColor3f(1.0,1.0,0.0);
circuloc(1000,1000,1,600);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(e) * 600,1000 + cos(e) * 600,25);

glColor3f(1.0,0.0,1.0);
circuloc(1000,1000,1,700);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(f) * 700,1000 + cos(f) * 700,20);


glColor3f(1.0,1.0,1.0);
circuloc(1000,1000,1,800);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(k) * 800,1000 +cos(k
) * 800,10);



l=l+0.10;
a=a+0.09;
b=b+0.08;
c=c+0.07;
d=d+0.06;
e=e+0.05;
f=f+0.04;
k=k+0.03;
ang=ang+0.08;
for(int j=1;j<=10000000;j++){}

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


glFlush();

glutSwapBuffers();
}


int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(1200,600);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
Terminado nuestro código al momento de compilar se mostrara como en la
siguiente imagen.

#include <unistd.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int rad=100;
double ang=0 , l=0 , a=0 , b=0 , c=0 , d=0 , e=0 , f=0 , k=0;
void inicializa(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1900.0, 0.0, 1900.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++){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
        glEnd();
}
void circuloc(int x, int y, int t, int radio)
{
        int angulo=0;
        glPointSize(t);
        glBegin(GL_POINTS);
    //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)
{
glColor3f(1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
circulo(1000,1000,25);
glColor3f(0.0,1.0,1.0);
circuloc(1000,1000,1,100);
glColor3f(1.0,0.0,1.0);
circulo( 1000+ sin(l) * rad,1000 + cos(l) * rad,10);


glColor3f(1.0,0.0,1.0);
circuloc(1000,1000,1,200);
glColor3f(0.0,0.0,1.0);
circulo( 1000+ sin(a) * 200,1000 + cos(a) * 200,20);


glColor3f(1.0,0.0,0.0);
circuloc(1000,1000,1,300);
glColor3f(0.0,1.0,1.0);
circulo( 1000+ sin(b) * 300,1000 + cos(b) * 300,40);


glColor3f(1.0,1.0,0.0);
circuloc(1000,1000,1,400);
glColor3f(1.0,0.0,0.0);
circulo( 1000+ sin(c) * 400,1000 + cos(c) * 400,45);


glColor3f(0.0,1.0,1.0);
circuloc(1000,1000,1,500);
glColor3f(0.7,1.0,0.0);
circulo( 1000+ sin(d) * 500,1000 + cos(d) * 500,30);


glColor3f(1.0,1.0,0.0);
circuloc(1000,1000,1,600);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(e) * 600,1000 + cos(e) * 600,25);

glColor3f(1.0,0.0,1.0);
circuloc(1000,1000,1,700);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(f) * 700,1000 + cos(f) * 700,20);


glColor3f(1.0,1.0,1.0);
circuloc(1000,1000,1,800);
glColor3f(0.0,0.5,1.0);
circulo( 1000+ sin(k) * 800,1000 +cos(k
) * 800,10);



l=l+0.10;
a=a+0.09;
b=b+0.08;
c=c+0.07;
d=d+0.06;
e=e+0.05;
f=f+0.04;
k=k+0.03;
ang=ang+0.08;
for(int j=1;j<=10000000;j++){}
if(ang==360){ang=0;}


glFlush();

glutSwapBuffers();
}


int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(1200,600);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}

Al termino de esto , al compilar podrá mostrarse como un sistema solar se
mueve circularmente y con circunferencias de guía




                     Practica Nº 13 movimiento en 8

En esta practica aprenderas a interactuar las animaciones de forma que cree
una ilusion de animacion en forma de 8. Y poder realizar animaciones de este
tipo o parecidas.

Codigo:
#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(1.0,1.0,0.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 400.0, 0.0, 400.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+=6){ glVertex2f(x + sin(angulo) *
radio, y + cos(angulo) * radio);}
       glEnd();}

       void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.5, 0.0, 1.0);
circulo(300, 300, 70);
circulo(300,180,70);
glColor3f(0.0,0.0,0.0);
circulo(300,300,50);
circulo(300,180,50);
glColor3f(1.0,0.3,1.0);

if(a>=6.15 && a<=12.41){
circulo(300+ sin (a)*60,300- cos(a)*60,10);
a=a +0.01;
}
else{
circulo(300 + sin (b) *60,180+cos(b)*60,10);
b=b + 0.01;
if(b>12.4){a=6.15;b=6.15;}
for(int j=0; j<=10; j++) {}
}




glFlush();
glutSwapBuffers();
}


int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(700,700);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}

Al termino de esta practica y al compilarla tedremos el siguiente resultado:
Practica Nº 14 semaforo

En esta practica aprenderas a utilizar efectos de animacion para crear una
ilusion parecida a la de un semaforo.

Codigo:

#include <unistd.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int x=1,d=1, e=1,z=1,w=1, y=1;
void inicializa(void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1000.0, 0.0, 800.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)
{
         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);
glColor3f(0.8,1.0,0.0);
glBegin(GL_QUADS);
glVertex2i(400,800);
glVertex2i(600,800);
glVertex2i(600,400);
glVertex2i(400,400);
glEnd();
glColor3f(0.8,1.0,0.0);
glBegin(GL_QUADS);
glVertex2i(480,400);
glVertex2i(530,400);
glVertex2i(530,50);
glVertex2i(480,50);
glEnd();

glColor3f(0,0.0,0.0);
circuloc(500,700,4,40);
circuloc(500,600,4,40);
circuloc(500,500,4,40);
glColor3f(0.0,0.0,0.0);
circulo(500,700,40);
circulo(500,600,40);
circulo(500,500,40);
glColor3f (1.0, 0.0, 0.0);
if(x>=1 && x<600){
circulo(500,700,40);
glFlush();
x++;
}
glColor3f (0.0, 1.0, 0.0);
if(y>=1 && y<800 && x==600){
circulo(500,500,40);
glFlush();
y++;
}
glColor3f(0.0,0.0,0.0);
if(w>=1 && w<600 && y==800 && x==600){
circulo(500,600,40);
glFlush();
w++;
}
glColor3f (0.0, 1., 0.0);
if(z>=1 && z<800 && y==800 && x==600 && w==600){
circulo(500,500,40);
glFlush();
z++;
}
glColor3f(0.0,0.0,0.0);
if(d>=1 && d<800 && y==800 && x==600 && w==600 && z==800){
circulo(500,500,40);
glFlush();

d++;
}

glColor3f (1.0, 1., 0.0);
if(e>=1 && e<800 && y==800 && x==600 && w==600 && d==800){
circulo(500,600,40);
glFlush();
e++;
}
if(e==800) {e=1;d=1;z=1;x=1;y=1;w=1;}


glutSwapBuffers();
}


int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(800,600);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}

Una vez teniendo listo el código anterior y sus respectivos puntos y funciones al
compilarlo tendremos un resultado asi:

Más contenido relacionado

La actualidad más candente

ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++Riki Tapia
 
Clases
ClasesClases
ClasesLili
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NETbrobelo
 
Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2josegmay
 
Javascript es6-ejercicios-resueltos-parte-1
Javascript es6-ejercicios-resueltos-parte-1Javascript es6-ejercicios-resueltos-parte-1
Javascript es6-ejercicios-resueltos-parte-1josegmay
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.Javier Cuenca
 
Tema 2 - Programación básica en C (I)
Tema 2  - Programación básica en C (I)Tema 2  - Programación básica en C (I)
Tema 2 - Programación básica en C (I)Pablo Haya
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++ Ronal Palomino
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bFRESH221 C.R
 

La actualidad más candente (19)

ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++ESTRUCTURAS ARRAYS Y DATOS C++
ESTRUCTURAS ARRAYS Y DATOS C++
 
Apun c
Apun cApun c
Apun c
 
Clases
ClasesClases
Clases
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NET
 
Programa voz
Programa vozPrograma voz
Programa voz
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2
 
Tutorial c++
Tutorial c++Tutorial c++
Tutorial c++
 
Javascript es6-ejercicios-resueltos-parte-1
Javascript es6-ejercicios-resueltos-parte-1Javascript es6-ejercicios-resueltos-parte-1
Javascript es6-ejercicios-resueltos-parte-1
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Tema 2 - Programación básica en C (I)
Tema 2  - Programación básica en C (I)Tema 2  - Programación básica en C (I)
Tema 2 - Programación básica en C (I)
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
S1-EDD-1.1 Punteros a estructuras
S1-EDD-1.1 Punteros a estructurasS1-EDD-1.1 Punteros a estructuras
S1-EDD-1.1 Punteros a estructuras
 
Presentacion04
Presentacion04Presentacion04
Presentacion04
 
Manual del dev c++
Manual del dev c++Manual del dev c++
Manual del dev c++
 
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2b
 
10 sintaxis oo
10 sintaxis oo10 sintaxis oo
10 sintaxis oo
 

Similar a Practicas para slider Rene Dominguez

Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Pablo Solis
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminadoKaren_Avilaa
 
Trabajo opengl
Trabajo openglTrabajo opengl
Trabajo openglmakapxndx
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLkdeespana
 
Utilización del software de diseño(C++)
Utilización del software de diseño(C++) Utilización del software de diseño(C++)
Utilización del software de diseño(C++) equipo3-303
 
Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Alincita Simon
 
Programa de cuadrado en c++
Programa de cuadrado en c++Programa de cuadrado en c++
Programa de cuadrado en c++Aliana_A
 
Deber piramide y cubo
Deber piramide y cuboDeber piramide y cubo
Deber piramide y cuboPao Alvarez
 
Introducción a la Progamación en Javascript. Classe 2
Introducción a la Progamación en Javascript. Classe 2Introducción a la Progamación en Javascript. Classe 2
Introducción a la Progamación en Javascript. Classe 2xjordi
 
Manual de photoshop leidy vivani olvera leon
Manual de photoshop leidy vivani olvera leonManual de photoshop leidy vivani olvera leon
Manual de photoshop leidy vivani olvera leonmakapxndx
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Rodrigo Branas
 

Similar a Practicas para slider Rene Dominguez (20)

Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303Open gl tutorial diana hernandez 303
Open gl tutorial diana hernandez 303
 
Proyecto de reneya terminado
Proyecto de reneya terminadoProyecto de reneya terminado
Proyecto de reneya terminado
 
Trabajo opengl
Trabajo openglTrabajo opengl
Trabajo opengl
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
 
Estela y naye
Estela y nayeEstela y naye
Estela y naye
 
Manual open gl
Manual open glManual open gl
Manual open gl
 
Manual open gl
Manual open glManual open gl
Manual open gl
 
Utilización del software de diseño(C++)
Utilización del software de diseño(C++) Utilización del software de diseño(C++)
Utilización del software de diseño(C++)
 
Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++
 
Renee opengl karla
Renee opengl karlaRenee opengl karla
Renee opengl karla
 
Programa de cuadrado en c++
Programa de cuadrado en c++Programa de cuadrado en c++
Programa de cuadrado en c++
 
Proyecto de rene
Proyecto de reneProyecto de rene
Proyecto de rene
 
Manual
ManualManual
Manual
 
Deber piramide y cubo
Deber piramide y cuboDeber piramide y cubo
Deber piramide y cubo
 
Introducción a la Progamación en Javascript. Classe 2
Introducción a la Progamación en Javascript. Classe 2Introducción a la Progamación en Javascript. Classe 2
Introducción a la Progamación en Javascript. Classe 2
 
Manual de photoshop leidy vivani olvera leon
Manual de photoshop leidy vivani olvera leonManual de photoshop leidy vivani olvera leon
Manual de photoshop leidy vivani olvera leon
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)
 

Practicas para slider Rene Dominguez

  • 1. Colegio de Estudios Cientificos Y Tecnologicos del Estado de México Plantel Tecamac PRACTICAS openGL Alumnas: Sánchez Ruiz Ana Laura Ugalde Sierra María de los Ángeles Profr: René Domínguez Escalona Grupo: 303 Especialidad: Informática 3er Semestre Materia: Utilización de Software de diseño
  • 2. Introducción C++ es un lenguaje de programación orientado a objetos que toma la base del lenguaje C y le agrega la capacidad de abstraer tipos como en Smalltalk. C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitieran la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Una instrucción es lo que le ordenamos a la maquina paara que ejecute, por eso se dice que un programa es un conjunto de instrucciones; ya que cuando ejecutamos un programa, se ejecutan asi mismo en su interior muchas instrucciones que hacen que la maquina realize algo. Estos son los tipos de instrucciones: - instrucciones declarativas - instrucciones de asignacion - instrucciones selectivas - instrucciones repetitivas - instrucciones de entrada y salida de datos - instrucciones de bifurcacion - Instrucciones declarativas - Sirven para declarar librerias, variables, constantes, arreglos , punteros, estructuras… Por ejemplo: 1.) Para librerias: las librerias las declaramos porque vamos a usar recursos que contienen ellas. [más detalles ] #include <iostream.h> ——> cin , cout.. #include <conio.h> ——> funcion getch().. #include <string.h> ——> para manipular cadenas #include <math.h> ——> para operaciones numericas #include <time.h> ——> para usar la hora #include <stdio.h> ——> para usar alternativas de entrda – salida como printf , scanf 2.) Para variables:
  • 3. INDICE 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.-Animacion circulo 12.-Animación sistema solar 13.-Movimiento en 8 14.-Semaforo
  • 4. Practica Nº 1 Tablero de ajedrez El propósito de esta práctica es aprender unas de las funciones básicas de opengl. En esta practica se creara un tablero con puntos para eso se utiliza la función glBegin (GL_POINTS) y glVertex2i ( ). Borrador: Código: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor (1.0,0.0,1.0,4.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 {
  • 5. glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0 ,1.0 ,1.0 ); glPointSize(50); glBegin(GL_POINTS); glVertex2i(100,100); glVertex2i(200,200); glVertex2i(300,100); glVertex2i(400,200); glVertex2i(500,100); glVertex2i(600,200); glVertex2i(700,100); glVertex2i(800,200); glVertex2i(100,300); glVertex2i(200,400); glVertex2i(300,300); glVertex2i(400,400); glVertex2i(500,300); glVertex2i(600,400); glVertex2i(700,300); glVertex2i(800,400); glVertex2i(100,500); glVertex2i(200,600); glVertex2i(300,500); glVertex2i(400,600); glVertex2i(500,500); glVertex2i(600,600); glVertex2i(700,500); glVertex2i(800,600); glVertex2i(100,700); glVertex2i(200,800); glVertex2i(300,700); glVertex2i(400,800); glVertex2i(500,700); glVertex2i(600,800); glVertex2i(700,700); glVertex2i(800,800); glEnd(); glColor3f(0.0 ,0.0 ,0.0 ); glPointSize(50); glBegin(GL_POINTS); glVertex2i(200,100); glVertex2i(300,200); glVertex2i(400,100); glVertex2i(500,200); glVertex2i(600,100); glVertex2i(700,200); glVertex2i(800,100); glVertex2i(100,200); glVertex2i(200,300); glVertex2i(300,400); glVertex2i(400,300);
  • 6. glVertex2i(500,400); glVertex2i(600,300); glVertex2i(700,400); glVertex2i(800,300); glVertex2i(100,400); glVertex2i(200,500); glVertex2i(300,600); glVertex2i(400,500); glVertex2i(500,600); glVertex2i(600,500); glVertex2i(700,600); glVertex2i(800,500); glVertex2i(100,600); glVertex2i(200,700); glVertex2i(300,800); glVertex2i(400,700); glVertex2i(500,800); glVertex2i(600,700); glVertex2i(700,800); glVertex2i(800,700); glVertex2i(100,800); glEnd(); glColor3f(1.0 ,1.0 ,1.0 ); glPointSize(50); glBegin(GL_LINE); glVertex2i(500,900); glVertex2i(500,100); 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(475,475); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("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 Y a la hora de compilar así que da la ventana:
  • 7. Practica Nº 2 Estrella El propósito de esta practica es dibujar una estrella con líneas para poder realizar esta practica las funciones principales son glPointSize( ); glBegin(GL_LINES); glVertex2i( ) borrador:
  • 8. Codigo: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor(1.0,0.8,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); glColor3f(1.0 ,1.0 ,1.0 ); glPointSize(50); glBegin(GL_LINES); glVertex2i(100,100); glVertex2i(200,400); glBegin(GL_LINES); glVertex2i(200,400); glVertex2i(300,100); glBegin(GL_LINES); glVertex2i(300,100); glVertex2i(50,300); glBegin(GL_LINES);
  • 9. glVertex2i(50,300); glVertex2i(350,300); glBegin(GL_LINES); glVertex2i(350,300); glVertex2i(100,100); glEnd(); glColor3f(1.0 ,1.0 ,1.0 ); glPointSize(50); glBegin(GL_LINE); glVertex2i(500,900); glVertex2i(500,100); 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(475,475); //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 } Y al compilar y asi queda la ventana:
  • 10. Practica Nº 3 Cubo con líneas En esta practica se le da una mejor utilización a las lineas para eso se utiliza las funciones glBegin(GL_LINES); glVertex2i( ); Borrador: Código: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor(1.0,0.0,1.1,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
  • 11. } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0 ,0.0 ,1.0 ); glBegin(GL_LINES); glVertex2i(100,100); glVertex2i(100,400); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(400,100); glVertex2i(400,400); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(100,100); glVertex2i(400,100); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(100,400); glVertex2i(400,400); glColor3f(0.0 ,1.0 ,0.0 ); glVertex2i(400,400); glVertex2i(600,530); glColor3f(0.0 ,1.0 ,0.0 ); glVertex2i(100,400); glVertex2i(300,530); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(600,530); glVertex2i(300,530); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(600,530); glVertex2i(600,250); glColor3f(0.0 ,1.0 ,0.0 ); glVertex2i(400,100); glVertex2i(600,250); glColor3f(0.0 ,1.0 ,0.0 ); glVertex2i(100,100); glVertex2i(300,250); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(300,250); glVertex2i(600,250); glColor3f(0.0 ,0.0 ,1.0 ); glVertex2i(300,250); glVertex2i(300,530); glEnd(); glFlush(); //forza dibujo } int main (int argc, char** argv) //metodo main {
  • 12. glutInit(&argc, argv); //incializa GLUT glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de visualización glutInitWindowSize(400,400); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("cubo"); //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 Y al compilar nos que da de la siguiente manera: Practica Nº 4 Cubo delineado El propósito de esta practica es aprender; como rellenar cuadros y delinearlos de tal forma que cada vez que se crea un cuadro se valla dando la forma de un cubo para esto la principal función que se da es: glBegin(GL_QUADS); Codigo: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> 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, 1050.0, 0.0, 1000.0); //vista ortogonal } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT);
  • 13. glColor3f(1.0 ,0.8 ,0.5 ); glLineWidth(8); glBegin(GL_QUADS); //izquierda glVertex2i(700,700); glVertex2i(700,800); //arriva glVertex2i(750,850); //derecha glVertex2i(750,750); glEnd(); glColor3f(0.0 ,0.8 ,1.0 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(600,700); glVertex2i(600,800); //arriva glVertex2i(700,800); //derecha glVertex2i(700,700); //abajo glEnd(); glColor3f(0.0 ,1.0 ,0.5 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(600,800); glVertex2i(650,850); //arriva glVertex2i(750,850); //derecha glVertex2i(700,800); //abajo glEnd(); //cuadro glColor3f(0.0 ,0.0 ,1.0 ); glLineWidth(8); glBegin(GL_LINES);
  • 14. //cuadro //izquierda glVertex2i(600,700); glVertex2i(600,800); //arriva glVertex2i(600,800); glVertex2i(700,800); //derecha glVertex2i(700,800); glVertex2i(700,700); //abajo glVertex2i(700,700); glVertex2i(600,700); //diagonal derecha esquina arriva glVertex2i(650,850); glVertex2i(600,800); //linea cuadro atras //linea cuadro atras glVertex2i(650,850); glVertex2i(750,850); //linea cuadro atras glVertex2i(750,850); glVertex2i(750,750); //linea cuadro atras glVertex2i(700,700); glVertex2i(750,750); //linea cuadro atras glVertex2i(700,800); glVertex2i(750,850); 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("cubo"); //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
  • 15. Y al compilar te debe quedar de la siguiente forma: Practica Nº 5 Muñeco con triángulos En esta práctica el propósito es aprender a utilizar otra función y crear un muñeco con esa función que es para crear triángulos para eso la función principal es: glBegin(GL_TRIANGLES); Código: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> void inicializa(void) { glClearColor(0.0,0.0,0.0,1.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 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(160,40); glColor3f(0.0 , 0.8 , 1.0); glVertex2i(245,40); glColor3f(0.0 , 0.8 , 1.0); glVertex2i(200,80); glEnd();
  • 16. glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(245,40); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(245,360); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(180,280); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(320,360); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(320,280); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(420,280); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(420,280); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(380,240); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(420,180); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(420,180); glColor3f(0.0 , 1.0 , 1.0); glVertex2i(520,180); glColor3f(0.0 , 1.0 , 1.0); glVertex2i(440,220); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(60,360); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(80,440); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(100,400); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES);
  • 17. glVertex2i(100,400); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(200,520); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(140,340); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(260,520); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(298,480); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(320,520); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(380,520); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(440,360); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(480,400); glEnd(); glColor3f(1.0 , 0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(480,400); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(500,460); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(520,360); glEnd(); glColor3f(0.8 , 0.0 , 1.0); glBegin(GL_TRIANGLES); glVertex2i(298,520); glColor3f(0.8 , 0.0 , 1.0); glVertex2i(360,600); glColor3f(0.8 , 0.0 , 1.0); glVertex2i(220,600); glEnd(); glColor3f(0.6 , 0.5 , 0.4); glBegin(GL_TRIANGLES); glVertex2i(160,600); glColor3f(0.6 , 0.5 , 0.4);
  • 18. glVertex2i(298,720); glColor3f(0.6 , 0.5 , 0.4); glVertex2i(420,600); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(540,320); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(498,280); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(560,280); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(540,320); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(580,540); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(520,540); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(540,320); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(640,540); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(620,540); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(540,320); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(498,540); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(478,540); glEnd(); glBegin(GL_QUADS); glColor3f(0.6 , 0.5 , 0.4); glVertex2i(200,520); glVertex2i(200,340); glVertex2i(380,340); glVertex2i(380,520); glEnd(); glColor3f(1.0 , 0.0 , 0.0);
  • 19. glBegin(GL_TRIANGLES); glVertex2i(260,520); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(298,480); glColor3f(1.0 , 1.0 , 0.0); glVertex2i(320,520); glEnd(); glBegin(GL_POLYGON); glVertex2i(520,100); glVertex2i(520,140); glVertex2i(480,180); glVertex2i(440,180); glVertex2i(400,140); glVertex2i(400,100); glVertex2i(440,60); glVertex2i(480,60); glEnd(); glBegin(GL_POLYGON); glVertex2i(0,0); glVertex2i(0,40); glVertex2i(1440,40); glVertex2i(1440,0); 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 primer 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 } Y al terminar de poner todo este código se compila y el resultado debe ser:
  • 20. Practica Nº 6 Casita El propósito de esta practica es utilizar varias Funciones de las que se han visto hasta el momento estas son triángulos, cuadrados y líneas para eso las principales funciones son : glBegin(GL_LINES); glBegin(GL_QUADS); glBegin(GL_TRIANGLES); glBegin(GL_POLYGON); Código: #include <GL/glut.h> #include <GL/gl.h> #include <GL/glu.h> 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(0.0 , 0.0 , 0.0); //carretera glBegin(GL_QUADS); glVertex2i(0,200); glVertex2i(0,0); glVertex2i(1000,0); glVertex2i(1000,200); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glLineWidth(4); glBegin(GL_LINES); glVertex2i(10,100); glVertex2i(100,100);
  • 21. glVertex2i(200,100); glVertex2i(300,100); glVertex2i(400,100); glVertex2i(500,100); glVertex2i(600,100); glVertex2i(700,100); glVertex2i(800,100); glVertex2i(900,100); glVertex2i(980,100); glVertex2i(1000,100); glEnd(); //pasto glColor3f(0.3 , 1.0 , 0.2); glBegin(GL_QUADS); glVertex2i(0,500); glVertex2i(0,200); glVertex2i(1000,200); glVertex2i(1000,500); glEnd(); //linea amarilla glColor3f(1.0 , 0.0 , 1.0); glLineWidth(8); glBegin(GL_LINES); glVertex2i(0,200); glVertex2i(1000,200); glEnd(); //banqueta glColor3f(0.2 , 0.8 , 1.0); glLineWidth(50); glBegin(GL_QUADS); glVertex2i(0,208); glVertex2i(0,300); glVertex2i(1000,300); glVertex2i(1000,208); glVertex2i(440,300); glVertex2i(440,450); glVertex2i(560,450); glVertex2i(560,300); glEnd(); glColor3f(0.5 , 0.5 , 0.5); glBegin(GL_QUADS); glVertex2i(200,350); glVertex2i(200,380); glVertex2i(250,380); glVertex2i(250,350); glVertex2i(150,350); glVertex2i(150,380); glVertex2i(100,380); glVertex2i(100,350);
  • 22. glVertex2i(200,400); glVertex2i(200,430); glVertex2i(250,430); glVertex2i(250,400); glVertex2i(150,400); glVertex2i(150,430); glVertex2i(100,430); glVertex2i(100,400); glEnd(); //serca glColor3f(1.0 , 0.0 , 1.0); glBegin(GL_POLYGON); glVertex2i(0,540); glVertex2i(0,480); glVertex2i(20,480); glVertex2i(20,540); glVertex2i(10,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(40,540); glVertex2i(40,480); glVertex2i(60,480); glVertex2i(60,540); glVertex2i(50,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(710,540); glVertex2i(710,480); glVertex2i(730,480); glVertex2i(730,540); glVertex2i(720,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(750,540); glVertex2i(750,480); glVertex2i(770,480); glVertex2i(770,540); glVertex2i(760,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(790,540); glVertex2i(790,480); glVertex2i(810,480); glVertex2i(810,540); glVertex2i(800,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(830,540); glVertex2i(830,480); glVertex2i(850,480);
  • 23. glVertex2i(850,540); glVertex2i(840,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(870,540); glVertex2i(870,480); glVertex2i(890,480); glVertex2i(890,540); glVertex2i(880,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(910,540); glVertex2i(910,480); glVertex2i(930,480); glVertex2i(930,540); glVertex2i(920,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(950,540); glVertex2i(950,480); glVertex2i(970,480); glVertex2i(970,540); glVertex2i(960,550); glEnd(); glBegin(GL_POLYGON); glVertex2i(990,540); glVertex2i(990,480); glVertex2i(1010,480); glVertex2i(1010,540); glVertex2i(1000,550); glEnd(); glColor3f(1.0 , 1.0 , 0.0); glLineWidth(10); glBegin(GL_LINES); glVertex2i(0,520); glVertex2i(1000,520); glEnd(); //casa glColor3f(0.2 , 0.1 , 1.0); glBegin(GL_QUADS); glVertex2i(300,750); glVertex2i(300,450); glVertex2i(700,450); glVertex2i(700,750); glEnd(); glColor3f(0.0 , 0.0 , 1.0); glLineWidth(14); glBegin(GL_LINES); glVertex2i(300,600); glVertex2i(700,600); glVertex2i(440,450); glVertex2i(440,750);
  • 24. glVertex2i(560,450); glVertex2i(560,750); glEnd(); //techo casa glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_POLYGON); glVertex2i(300,820); glVertex2i(240,750); glVertex2i(760,750); glVertex2i(700,820); glEnd(); //triangulo techo casa glColor3f(1.0 , 0.9 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(600,720); glVertex2i(500,800); glVertex2i(400,720); glEnd(); //puerta casa glColor3f(1.0 , 1.0 , 1.0); glBegin(GL_QUADS); glVertex2i(454,450); glVertex2i(454,570); glVertex2i(546,570); glVertex2i(546,450); glColor3f(1.0 , 0.0 , 1.0); glVertex2i(474,470); glVertex2i(474,550); glVertex2i(526,550); glVertex2i(526,470); glEnd(); glColor3f(0.0 ,0.0 , 0.0); glPointSize(3); glBegin(GL_POINTS); glVertex2i(464,505); glEnd(); //ventanas casa glColor3f(1.0 , 0.0 , 1.0); glBegin(GL_QUADS); glVertex2i(320,570); glVertex2i(320,510); glVertex2i(400,510); glVertex2i(400,570); glVertex2i(595,570); glVertex2i(595,510); glVertex2i(675,510); glVertex2i(675,570); glVertex2i(320,730); glVertex2i(320,660); glVertex2i(400,660);
  • 25. glVertex2i(400,730); glVertex2i(595,730); glVertex2i(595,660); glVertex2i(675,660); glVertex2i(675,730); glEnd(); glColor3f(1.0 , 1.0 , 1.0); glLineWidth(4); glBegin(GL_LINES); glVertex2i(320,570); glVertex2i(320,510); glVertex2i(320,510); glVertex2i(400,510); glVertex2i(400,510); glVertex2i(400,570); glVertex2i(400,570); glVertex2i(320,570); glVertex2i(320,530); glVertex2i(400,530); glVertex2i(360,530); glVertex2i(360,510); glVertex2i(595,570); glVertex2i(595,510); glVertex2i(595,510); glVertex2i(675,510); glVertex2i(675,510); glVertex2i(675,570); glVertex2i(675,570); glVertex2i(595,570); glVertex2i(595,530); glVertex2i(675,530); glVertex2i(635,530); glVertex2i(635,510); glVertex2i(320,730); glVertex2i(320,660); glVertex2i(320,660); glVertex2i(400,660); glVertex2i(400,660); glVertex2i(400,730); glVertex2i(400,730); glVertex2i(320,730); glVertex2i(320,680); glVertex2i(400,680); glVertex2i(360,680); glVertex2i(360,660); glVertex2i(595,730); glVertex2i(595,660); glVertex2i(595,660);
  • 26. glVertex2i(675,660); glVertex2i(675,660); glVertex2i(675,730); glVertex2i(675,730); glVertex2i(595,730); glVertex2i(595,680); glVertex2i(675,680); glVertex2i(635,680); glVertex2i(635,660); glEnd(); //balcon casa glColor3f(1.0 , 0.0 , 1.0); glBegin(GL_QUADS); glVertex2i(454,720); glVertex2i(454,600); glVertex2i(546,600); glVertex2i(546,720); glEnd(); glColor3f(1.0 , 1.0, 1.0); glLineWidth(3); glBegin(GL_LINES); glVertex2i(455,640); glVertex2i(455,600); glVertex2i(467,640); glVertex2i(467,600); glVertex2i(479,640); glVertex2i(479,600); glVertex2i(491,640); glVertex2i(491,600); glVertex2i(503,640); glVertex2i(503,600); glVertex2i(515,640); glVertex2i(515,600); glVertex2i(527,640); glVertex2i(527,600); glVertex2i(539,640); glVertex2i(539,600); glVertex2i(455,640); glVertex2i(546,640); glVertex2i(505,640); glVertex2i(505,720); glEnd(); //cochera glColor3f(1.0 , 0.0 , 1.0); glBegin(GL_QUADS); glVertex2i(90,450); glVertex2i(90,600); glVertex2i(300,600); glVertex2i(300,450); glEnd(); glColor3f(0.0 , 0.0, 1.0);
  • 27. glLineWidth(12); glBegin(GL_LINES); glVertex2i(90,450); glVertex2i(90,600); glEnd(); //techo cochera glColor3f(1.0 , 1.0 , 0.0); glBegin(GL_POLYGON); glVertex2i(90,660); glVertex2i(60,600); glVertex2i(300,600); glVertex2i(300,660); glEnd(); //pinos glColor3f(0.5 , 0.0 , 0.3); glBegin(GL_QUADS); glVertex2i(850,450); glVertex2i(900,450); glVertex2i(900,530); glVertex2i(850,530); glEnd(); int i,a=9; glColor3f(0.3 , 1.0 , 0.2); glLineWidth(3); glBegin(GL_LINES); for(i=0;i<=14;i++){ glVertex2i(1000-a*i,530+a*i); glVertex2i(740+a*i,530+a*i); } 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(750,750); //tamaño de la ventana glutInitWindowPosition(0,0); //posicion inicial de la ventana glutCreateWindow("MI primer 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 }
  • 28. Por ultimo se compila y se abre la ventana con el resultado y así tiene que quedar: Practica Nº 7 Oso El propósito de esta practica es empezar a utilizar una función para hacer círculos por lo cual se le empiece a dar la forma de un oso para eso la funcion principal es: circulo ( ) Código:
  • 29. #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) { int angulo=0; glPointSize(t); glBegin(GL_POINTS); //glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void circulo(int x, int y, int radio) { int angulo=0; glBegin(GL_TRIANGLE_FAN); // glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.6,0.4,0.2); //borra pantalla circulo(250,250,120); glColor3f(0.6,0.4,0.2); circulo(140,150,50); glColor3f(0.6,0.4,0.2); circulo(350,150,50); glColor3f(0.6,0.4,0.2); circulo(370,320,40); glColor3f(0.6,0.4,0.2); circulo(130,320,40); glColor3f(0.6,0.4,0.2); circulo(250,400,70); glColor3f(0.6,0.4,0.2); circulo(195,450,25);
  • 30. glColor3f(0.6,0.4,0.2); circulo(300,450,25); glColor3f(1.0,1.0,1.0); circulo(225,420,15); glColor3f(0.0,0.0,0.0); circulo(225,415,8); glColor3f(1.0,1.0,1.0); circulo(275,420,15); glColor3f(0.0,0.0,0.0); circulo(275,415,8); glColor3f(1.0,0.0,0.0); circulo(250,370,8); glColor3f(0.6 ,0.4 , 0.2); glBegin(GL_TRIANGLES); glVertex2i(250,390); glColor3f(0.0 , 0.0, 0.0); glVertex2i(240,400); glColor3f(0.0 , 0.0, 0.0); glVertex2i(260,400); 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(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 } Al tener completo este código al compilarlo el resultado debe ser lo siguiente:
  • 31. Practica Nº 9 Muñeco con formas El propósito de esta practica es crear un muñeco o niño en el cual se van a utilizar las funciones de circulo, del cuadrado, triángulos, polígonos y líneas. Borrador:
  • 32. Código: #include <GL/glut.h> #include <GL/gl.h> #include <math.h> void inicializa(void) { glClearColor(1.0,0.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) {
  • 33. int angulo=0; glPointSize(t); glBegin(GL_POINTS); //glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); //glColor3f(0,0.0,0.0); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void circulo(int x, int y, int radio) { int angulo=0; glBegin(GL_TRIANGLE_FAN); // glColor3f (1.0, 0.0, 1.0); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void dibuja(void) //funcion dibuja { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.9,0.6,0.5); //borra pantalla circulo(250,400,70); glColor3f(0.9,0.6,0.5); circulo(195,410,25); glColor3f(0.9,0.6,0.5); circulo(305,410,25); glColor3f(0.0,0.0,0.0); circulo(225,415,5); glColor3f(0.0,0.0,0.0); circulo(275,415,5); glColor3f(0.0,0.0,0.0); circulo(250,370,8); glColor3f(1.0,0.0,0.0); circulo(250,367,4); glColor3f(0.9,0.6,0.5); circulo(150,218,21); glColor3f(0.9,0.6,0.5); circulo(358 ,218,21);
  • 34. glColor3f(0.9 ,0.6 , 0.5); glBegin(GL_TRIANGLES); glVertex2i(250,390); glColor3f(0.0 , 0.0, 0.0); glVertex2i(240,400); glColor3f(0.9 , 0.6, 0.5); glVertex2i(250,410); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(250,470); glColor3f(0.0 , 0.0, 0.0); glVertex2i(230,467); glColor3f(0.0 , 0.0, 0.0); glVertex2i(245,490); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(230,487); glColor3f(0.0 , 0.0, 0.0); glVertex2i(215,460); glColor3f(0.0 , 0.0, 0.0); glVertex2i(230,467); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(250,500); glColor3f(0.0 , 0.0, 0.0); glVertex2i(245,490); glColor3f(0.0 , 0.0, 0.0); glVertex2i(250,467); glEnd(); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(275,465); glColor3f(0.0 , 0.0, 0.0); glVertex2i(270,500); glColor3f(0.0 , 0.0, 0.0); glVertex2i(255,470); glEnd(); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(295,452); glColor3f(0.0 , 0.0, 0.0); glVertex2i(290,500); glColor3f(0.0 , 0.0, 0.0);
  • 35. glVertex2i(280,462); glEnd(); glColor3f(0.9 ,0.6 ,0.5 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(228,290); glVertex2i(228,335); //arriva glVertex2i(228,335); glVertex2i(272,335); //derecha glVertex2i(272,335); glVertex2i(272,290); //abajo glVertex2i(272,290); glVertex2i(228,290); glEnd(); glColor3f(1.0 ,0.0 ,0.0 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(195,180); glVertex2i(195,320); //arriva glVertex2i(195,320); glVertex2i(305,320); //derecha glVertex2i(305,320); glVertex2i(305,180); //abajo glVertex2i(305,180); glVertex2i(195,180); glEnd(); glColor3f(0.9 ,0.6 , 0.5); glBegin(GL_TRIANGLES); glVertex2i(250,285); glColor3f(0.9 , 0.6, 0.5); glVertex2i(228,320); glColor3f(0.9 , 0.6, 0.5); glVertex2i(272,320); glEnd();
  • 36. glColor3f(0.0,0.0,0.0); //borra pantalla circulo(250,265,5); glColor3f(0.0,0.0,0.0); circulo(250,245,5); glColor3f(0.0,0.0,0.0); circulo(250,225,5); glColor3f(0.0,0.0,0.0); circulo(250,205,5); glColor3f(1.0 ,0.0 ,0.0 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(150,240); glVertex2i(165,200); //arriva glVertex2i(195,320); glVertex2i(150,240); //derecha glVertex2i(195,260); glVertex2i(195,320); //abajo glVertex2i(165,200); glVertex2i(195,260); glEnd(); glColor3f(1.0 ,0.0 ,0.0 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(350,240); glVertex2i(345,200); //arriva glVertex2i(305,320); glVertex2i(350,240); //derecha glVertex2i(305,265); glVertex2i(305,320); //abajo glVertex2i(345,200); glVertex2i(305,265); glEnd();
  • 37. glColor3f(0.04 ,0.3 ,1.9 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(150,100); glVertex2i(165,60); //arriva glVertex2i(195,180); glVertex2i(150,100); //derecha glVertex2i(305,180); glVertex2i(195,180); //abajo glVertex2i(165,60); glVertex2i(305,180); glEnd(); glColor3f(0.04 ,0.3 ,1.9 ); glLineWidth(8); glBegin(GL_QUADS); //cuadro //izquierda glVertex2i(350,100); glVertex2i(345,60); //arriva glVertex2i(305,180); glVertex2i(350,100); //derecha glVertex2i(195,180); glVertex2i(305,180); //abajo glVertex2i(345,60); glVertex2i(195,180); glEnd(); glColor3f(0.0 ,0.0 , 0.0); glBegin(GL_TRIANGLES); glVertex2i(345,60); glColor3f(0.0 , 0.0, 0.0); glVertex2i(350,100); glColor3f(0.0 , 0.0, 0.0); glVertex2i(390,60); glEnd(); glColor3f(0.0 ,0.0 , 0.0);
  • 38. glBegin(GL_TRIANGLES); glVertex2i(115,60); glColor3f(0.0 , 0.0, 0.0); glVertex2i(150,100); glColor3f(0.0 , 0.0, 0.0); glVertex2i(165,60); 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(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 } Con este código se crea un muñeco muy gracioso y al copilarlo queda de la siguiente forma:
  • 39. Practica Nº 10 Animacion circulo El propósito de esta practica es conocer el como dar animación o el efecto de animación a un circulo de modo que parezca que se me mueve en forma cuadrada o rectangular. Por medio de diferentes funciones. Borrador:
  • 40. Código: #include <unistd.h> #include <GL/glut.h> #include <GL/gl.h> #include <math.h> int x=1,z=1,w=1, y=1; void inicializa(void) { glClearColor(0.0,0.0,1.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 1000.0, 0.0, 800.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<600){ circulo(100,700-1*x,40); glFlush();
  • 41. x++; } if(y>=1 && y<800 && x==600){ circulo(100+y,100,40); glFlush(); y++; } if(w>=1 && w<600 && y==800 && x==600){ circulo(900,100+w,40); glFlush(); w++; } if(z>=1 && z<800 && y==800 && x==600 && w==600){ circulo(900-z,700,40); glFlush(); z++; if(z==800) {z=1;x=1;y=1;w=1;} } glutSwapBuffers(); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(800,600); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja); glutMainLoop(); return 0; } Una vez teniendo todo terminado, al compilar la información del código aparece la siguiente animación o una ejemplo de ella:
  • 42. Practica Nº 12 Animacion sistema solar El proposito de esta practica es saber realizar circulos de manera que se muevan redondamente y se pueda apreciar un sistema solar. Codigo: #include <unistd.h> #include <GL/glut.h> #include <GL/gl.h> #include <math.h> int rad=100; double ang=0 , l=0 , a=0 , b=0 , c=0 , d=0 , e=0 , f=0 , k=0; void inicializa(void) { glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 1900.0, 0.0, 1900.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);
  • 43. for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void circuloc(int x, int y, int t, int radio) { int angulo=0; glPointSize(t); glBegin(GL_POINTS); //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) { glColor3f(1.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); circulo(1000,1000,25); glColor3f(0.0,1.0,1.0); circuloc(1000,1000,1,100); glColor3f(1.0,0.0,1.0); circulo( 1000+ sin(l) * rad,1000 + cos(l) * rad,10); glColor3f(1.0,0.0,1.0); circuloc(1000,1000,1,200); glColor3f(0.0,0.0,1.0); circulo( 1000+ sin(a) * 200,1000 + cos(a) * 200,20); glColor3f(1.0,0.0,0.0); circuloc(1000,1000,1,300); glColor3f(0.0,1.0,1.0); circulo( 1000+ sin(b) * 300,1000 + cos(b) * 300,40); glColor3f(1.0,1.0,0.0); circuloc(1000,1000,1,400); glColor3f(1.0,0.0,0.0); circulo( 1000+ sin(c) * 400,1000 + cos(c) * 400,45); glColor3f(0.0,1.0,1.0); circuloc(1000,1000,1,500); glColor3f(0.7,1.0,0.0); circulo( 1000+ sin(d) * 500,1000 + cos(d) * 500,30); glColor3f(1.0,1.0,0.0);
  • 44. circuloc(1000,1000,1,600); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(e) * 600,1000 + cos(e) * 600,25); glColor3f(1.0,0.0,1.0); circuloc(1000,1000,1,700); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(f) * 700,1000 + cos(f) * 700,20); glColor3f(1.0,1.0,1.0); circuloc(1000,1000,1,800); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(k) * 800,1000 +cos(k ) * 800,10); l=l+0.10; a=a+0.09; b=b+0.08; c=c+0.07; d=d+0.06; e=e+0.05; f=f+0.04; k=k+0.03; ang=ang+0.08; for(int j=1;j<=10000000;j++){} if(ang==360){ang=0;} glFlush(); glutSwapBuffers(); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(1200,600); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja); glutMainLoop(); return 0; }
  • 45. Terminado nuestro código al momento de compilar se mostrara como en la siguiente imagen. #include <unistd.h> #include <GL/glut.h> #include <GL/gl.h> #include <math.h> int rad=100; double ang=0 , l=0 , a=0 , b=0 , c=0 , d=0 , e=0 , f=0 , k=0; void inicializa(void) { glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 1900.0, 0.0, 1900.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++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd(); } void circuloc(int x, int y, int t, int radio) { int angulo=0; glPointSize(t); glBegin(GL_POINTS); //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) { glColor3f(1.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); circulo(1000,1000,25); glColor3f(0.0,1.0,1.0); circuloc(1000,1000,1,100); glColor3f(1.0,0.0,1.0); circulo( 1000+ sin(l) * rad,1000 + cos(l) * rad,10); glColor3f(1.0,0.0,1.0); circuloc(1000,1000,1,200);
  • 46. glColor3f(0.0,0.0,1.0); circulo( 1000+ sin(a) * 200,1000 + cos(a) * 200,20); glColor3f(1.0,0.0,0.0); circuloc(1000,1000,1,300); glColor3f(0.0,1.0,1.0); circulo( 1000+ sin(b) * 300,1000 + cos(b) * 300,40); glColor3f(1.0,1.0,0.0); circuloc(1000,1000,1,400); glColor3f(1.0,0.0,0.0); circulo( 1000+ sin(c) * 400,1000 + cos(c) * 400,45); glColor3f(0.0,1.0,1.0); circuloc(1000,1000,1,500); glColor3f(0.7,1.0,0.0); circulo( 1000+ sin(d) * 500,1000 + cos(d) * 500,30); glColor3f(1.0,1.0,0.0); circuloc(1000,1000,1,600); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(e) * 600,1000 + cos(e) * 600,25); glColor3f(1.0,0.0,1.0); circuloc(1000,1000,1,700); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(f) * 700,1000 + cos(f) * 700,20); glColor3f(1.0,1.0,1.0); circuloc(1000,1000,1,800); glColor3f(0.0,0.5,1.0); circulo( 1000+ sin(k) * 800,1000 +cos(k ) * 800,10); l=l+0.10; a=a+0.09; b=b+0.08; c=c+0.07; d=d+0.06; e=e+0.05; f=f+0.04; k=k+0.03; ang=ang+0.08; for(int j=1;j<=10000000;j++){}
  • 47. if(ang==360){ang=0;} glFlush(); glutSwapBuffers(); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(1200,600); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja); glutMainLoop(); return 0; } Al termino de esto , al compilar podrá mostrarse como un sistema solar se mueve circularmente y con circunferencias de guía Practica Nº 13 movimiento en 8 En esta practica aprenderas a interactuar las animaciones de forma que cree una ilusion de animacion en forma de 8. Y poder realizar animaciones de este tipo o parecidas. Codigo:
  • 48. #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(1.0,1.0,0.0,1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 400.0, 0.0, 400.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+=6){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();} void dibuja(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(0.5, 0.0, 1.0); circulo(300, 300, 70); circulo(300,180,70); glColor3f(0.0,0.0,0.0); circulo(300,300,50); circulo(300,180,50); glColor3f(1.0,0.3,1.0); if(a>=6.15 && a<=12.41){ circulo(300+ sin (a)*60,300- cos(a)*60,10); a=a +0.01; } else{ circulo(300 + sin (b) *60,180+cos(b)*60,10); b=b + 0.01; if(b>12.4){a=6.15;b=6.15;} for(int j=0; j<=10; j++) {} } glFlush();
  • 49. glutSwapBuffers(); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(700,700); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja); glutMainLoop(); return 0; } Al termino de esta practica y al compilarla tedremos el siguiente resultado:
  • 50. Practica Nº 14 semaforo En esta practica aprenderas a utilizar efectos de animacion para crear una ilusion parecida a la de un semaforo. Codigo: #include <unistd.h> #include <GL/glut.h> #include <GL/gl.h> #include <math.h> int x=1,d=1, e=1,z=1,w=1, y=1; void inicializa(void) { glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 1000.0, 0.0, 800.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) { 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); glColor3f(0.8,1.0,0.0); glBegin(GL_QUADS); glVertex2i(400,800); glVertex2i(600,800); glVertex2i(600,400); glVertex2i(400,400); glEnd();
  • 51. glColor3f(0.8,1.0,0.0); glBegin(GL_QUADS); glVertex2i(480,400); glVertex2i(530,400); glVertex2i(530,50); glVertex2i(480,50); glEnd(); glColor3f(0,0.0,0.0); circuloc(500,700,4,40); circuloc(500,600,4,40); circuloc(500,500,4,40); glColor3f(0.0,0.0,0.0); circulo(500,700,40); circulo(500,600,40); circulo(500,500,40); glColor3f (1.0, 0.0, 0.0); if(x>=1 && x<600){ circulo(500,700,40); glFlush(); x++; } glColor3f (0.0, 1.0, 0.0); if(y>=1 && y<800 && x==600){ circulo(500,500,40); glFlush(); y++; } glColor3f(0.0,0.0,0.0); if(w>=1 && w<600 && y==800 && x==600){ circulo(500,600,40); glFlush(); w++; } glColor3f (0.0, 1., 0.0); if(z>=1 && z<800 && y==800 && x==600 && w==600){ circulo(500,500,40); glFlush(); z++; } glColor3f(0.0,0.0,0.0); if(d>=1 && d<800 && y==800 && x==600 && w==600 && z==800){ circulo(500,500,40); glFlush(); d++; } glColor3f (1.0, 1., 0.0); if(e>=1 && e<800 && y==800 && x==600 && w==600 && d==800){ circulo(500,600,40); glFlush();
  • 52. e++; } if(e==800) {e=1;d=1;z=1;x=1;y=1;w=1;} glutSwapBuffers(); } int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH); glutInitWindowSize(800,600); glutInitWindowPosition(10,10); glutCreateWindow("Ventana"); inicializa(); glutDisplayFunc(dibuja); glutIdleFunc(dibuja); glutMainLoop(); return 0; } Una vez teniendo listo el código anterior y sus respectivos puntos y funciones al compilarlo tendremos un resultado asi: