Colegio de Estudios Cientificos YTecnologicos del Estado de México             Plantel Tecamac        PRACTICAS openGL  Al...
IntroducciónC++ es un lenguaje de programación orientado a objetos que toma la base dellenguaje C y le agrega la capacidad...
INDICE1.-Tablero de ajedrez2.-Estrella3.-Cubo con líneas4.-Cubo delineado5.-Muñeco con triángulos6.-Casita7.-Oso8.-Cubo co...
Practica Nº 1 Tablero de ajedrezEl propósito de esta práctica es aprender unas de las funciones básicas deopengl.En esta p...
glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0 ,1.0 ,1.0 );glPointSize(50);glBegin(GL_POINTS);glVertex2i(100,100);glVertex2i(2...
glVertex2i(500,400);glVertex2i(600,300);glVertex2i(700,400);glVertex2i(800,300);glVertex2i(100,400);glVertex2i(200,500);gl...
Practica Nº 2 EstrellaEl propósito de esta practica es dibujar una estrella con líneas para poder realizar estapractica la...
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); //col...
glVertex2i(50,300);glVertex2i(350,300);glBegin(GL_LINES);glVertex2i(350,300);glVertex2i(100,100);glEnd();glColor3f(1.0 ,1....
Practica Nº 3 Cubo con líneasEn esta practica se le da una mejor utilización a las lineas para eso se utilizalas funciones...
}void dibuja(void)                  //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.0 ,0.0 ,1.0 );glBegin(GL_LIN...
glutInit(&argc, argv);            //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);              //establece e...
glColor3f(1.0 ,0.8 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(700,700);glVertex2i(700,800);//arrivaglVe...
//cuadro//izquierdaglVertex2i(600,700);glVertex2i(600,800);//arrivaglVertex2i(600,800);glVertex2i(700,800);//derechaglVert...
Y al compilar te debe quedar de la siguiente forma:                Practica Nº 5 Muñeco con triángulos En esta práctica el...
glColor3f(1.0 , 0.0 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(245,40);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(245,360);glColor...
glVertex2i(100,400);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(200,520);glColor3f(1.0 , 1.0 , 0.0);glVertex2i(140,340); glEnd()...
glVertex2i(298,720);glColor3f(0.6 , 0.5 , 0.4);glVertex2i(420,600); glEnd(); glColor3f(1.0 , 1.0 , 0.0);glBegin(GL_TRIANGL...
glBegin(GL_TRIANGLES);glVertex2i(260,520);glColor3f(1.0 , 0.0 , 1.0);glVertex2i(298,480);glColor3f(1.0 , 1.0 , 0.0);glVert...
Practica Nº 6 CasitaEl propósito de esta practica es utilizar varias Funciones de las que se hanvisto hasta el momento est...
glVertex2i(200,100);glVertex2i(300,100);glVertex2i(400,100);glVertex2i(500,100);glVertex2i(600,100);glVertex2i(700,100);gl...
glVertex2i(200,400);glVertex2i(200,430);glVertex2i(250,430);glVertex2i(250,400);glVertex2i(150,400);glVertex2i(150,430);gl...
glVertex2i(850,540);glVertex2i(840,550);glEnd();glBegin(GL_POLYGON);glVertex2i(870,540);glVertex2i(870,480);glVertex2i(890...
glVertex2i(560,450);glVertex2i(560,750);glEnd();//techo casaglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_POLYGON);glVertex2i(300,...
glVertex2i(400,730);glVertex2i(595,730);glVertex2i(595,660);glVertex2i(675,660);glVertex2i(675,730);glEnd();glColor3f(1.0 ...
glVertex2i(675,660);glVertex2i(675,660);glVertex2i(675,730);glVertex2i(675,730);glVertex2i(595,730);glVertex2i(595,680);gl...
glLineWidth(12);glBegin(GL_LINES);glVertex2i(90,450);glVertex2i(90,600);glEnd();//techo cocheraglColor3f(1.0 , 1.0 , 0.0);...
Por ultimo se compila y se abre la ventana con el resultado y así tiene quequedar:                            Practica Nº ...
#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 fon...
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,4...
Practica Nº 9 Muñeco con formasEl propósito de esta practica es crear un muñeco o niño en el cual se van autilizar las fun...
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...
int angulo=0;        glPointSize(t);        glBegin(GL_POINTS);    //glColor3f (1.0, 0.0, 1.0);        glVertex2f(x,y);   ...
glColor3f(0.9 ,0.6 , 0.5);glBegin(GL_TRIANGLES);glVertex2i(250,390);glColor3f(0.0 , 0.0, 0.0);glVertex2i(240,400);glColor3...
glVertex2i(280,462); glEnd(); glColor3f(0.9 ,0.6 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(228...
glColor3f(0.0,0.0,0.0);      //borra pantallacirculo(250,265,5);glColor3f(0.0,0.0,0.0);circulo(250,245,5);glColor3f(0.0,0....
glColor3f(0.04 ,0.3 ,1.9 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(150,100);glVertex2i(165,60);//ar...
glBegin(GL_TRIANGLES);glVertex2i(115,60);glColor3f(0.0 , 0.0, 0.0);glVertex2i(150,100);glColor3f(0.0 , 0.0, 0.0);glVertex2...
Practica Nº 10 Animacion circuloEl propósito de esta practica es conocer el como dar animación o el efecto deanimación a u...
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...
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,10...
Practica Nº 12 Animacion sistema solarEl proposito de esta practica es saber realizar circulos de manera que semuevan redo...
for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) *radio, y + cos(angulo) * radio);}        glEnd();}void c...
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...
Terminado nuestro código al momento de compilar se mostrara como en lasiguiente imagen.#include <unistd.h>#include <GL/glu...
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...
if(ang==360){ang=0;}glFlush();glutSwapBuffers();}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMod...
#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 ini...
glutSwapBuffers();}int main (int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLU...
Practica Nº 14 semaforoEn esta practica aprenderas a utilizar efectos de animacion para crear unailusion parecida a la de ...
glColor3f(0.8,1.0,0.0);glBegin(GL_QUADS);glVertex2i(480,400);glVertex2i(530,400);glVertex2i(530,50);glVertex2i(480,50);glE...
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);glutIn...
Upcoming SlideShare
Loading in …5
×

Practicas para slider Rene Dominguez

374 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
374
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Practicas para slider Rene Dominguez

  1. 1. Colegio de Estudios Cientificos YTecnologicos 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 EscalonaGrupo: 303 Especialidad: Informática 3er Semestre Materia: Utilización de Software de diseño
  2. 2. IntroducciónC++ es un lenguaje de programación orientado a objetos que toma la base dellenguaje 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 1980por Bjarne Stroustrup. La intención de su creación fue el extender al exitosolenguaje de programación C con mecanismos que permitieran la manipulaciónde objetos. En ese sentido, desde el punto de vista de los lenguajes orientadosa objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieronfacilidades de programación genérica, que se sumó a los otros dos paradigmasque ya estaban admitidos (programación estructurada y la programaciónorientada a objetos). Por esto se suele decir que el C++ es un lenguaje deprogramación multiparadigma.Una instrucción es lo que le ordenamos a la maquina paara que ejecute, poreso se dice que un programa es un conjunto de instrucciones; ya que cuandoejecutamos un programa, se ejecutan asi mismo en su interior muchasinstrucciones 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 ,scanf2.) Para variables:
  3. 3. INDICE1.-Tablero de ajedrez2.-Estrella3.-Cubo con líneas4.-Cubo delineado5.-Muñeco con triángulos6.-Casita7.-Oso8.-Cubo con cubitos9.-Muñeco con formas10.-Animacion circulo12.-Animación sistema solar13.-Movimiento en 814.-Semaforo
  4. 4. Practica Nº 1 Tablero de ajedrezEl propósito de esta práctica es aprender unas de las funciones básicas deopengl.En esta practica se creara un tablero con puntos para eso se utiliza la funciónglBegin (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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{
  5. 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. 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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(475,475); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("ajedrez"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de ceroY a la hora de compilar así que da la ventana:
  7. 7. Practica Nº 2 EstrellaEl propósito de esta practica es dibujar una estrella con líneas para poder realizar estapractica las funciones principales songlPointSize( );glBegin(GL_LINES);glVertex2i( )borrador:
  8. 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);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. 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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(475,475); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("ESTRELLA"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Y al compilar y asi queda la ventana:
  10. 10. Practica Nº 3 Cubo con líneasEn esta practica se le da una mejor utilización a las lineas para eso se utilizalas funcionesglBegin(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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal
  11. 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. 12. glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(400,400); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("cubo"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de ceroY al compilar nos que da de la siguiente manera: Practica Nº 4 Cubo delineadoEl propósito de esta practica es aprender; como rellenar cuadros y delinearlosde tal forma que cada vez que se crea un cuadro se valla dando la forma de uncubo 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);
  13. 13. glColor3f(1.0 ,0.8 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(700,700);glVertex2i(700,800);//arrivaglVertex2i(750,850);//derechaglVertex2i(750,750);glEnd();glColor3f(0.0 ,0.8 ,1.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,700);glVertex2i(600,800);//arrivaglVertex2i(700,800);//derechaglVertex2i(700,700);//abajoglEnd();glColor3f(0.0 ,1.0 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,800);glVertex2i(650,850);//arrivaglVertex2i(750,850);//derechaglVertex2i(700,800);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,1.0 );glLineWidth(8);glBegin(GL_LINES);
  14. 14. //cuadro//izquierdaglVertex2i(600,700);glVertex2i(600,800);//arrivaglVertex2i(600,800);glVertex2i(700,800);//derechaglVertex2i(700,800);glVertex2i(700,700);//abajoglVertex2i(700,700);glVertex2i(600,700);//diagonal derecha esquina arrivaglVertex2i(650,850);glVertex2i(600,800);//linea cuadro atras//linea cuadro atrasglVertex2i(650,850);glVertex2i(750,850);//linea cuadro atrasglVertex2i(750,850);glVertex2i(750,750);//linea cuadro atrasglVertex2i(700,700);glVertex2i(750,750);//linea cuadro atrasglVertex2i(700,800);glVertex2i(750,850);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("cubo"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero
  15. 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 unmuñeco con esa función que es para crear triángulos para eso la funciónprincipal 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 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. 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. 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. 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. 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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Y al terminar de poner todo este código se compila y el resultado debe ser:
  20. 20. Practica Nº 6 CasitaEl propósito de esta practica es utilizar varias Funciones de las que se hanvisto hasta el momento estas son triángulos, cuadrados y líneas para eso lasprincipales 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0,0.0, 1000.0); //vista ortogonal}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);//carreteraglBegin(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. 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();//pastoglColor3f(0.3 , 1.0 , 0.2);glBegin(GL_QUADS);glVertex2i(0,500);glVertex2i(0,200);glVertex2i(1000,200);glVertex2i(1000,500);glEnd();//linea amarillaglColor3f(1.0 , 0.0 , 1.0);glLineWidth(8);glBegin(GL_LINES);glVertex2i(0,200);glVertex2i(1000,200);glEnd();//banquetaglColor3f(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. 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();//sercaglColor3f(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. 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();//casaglColor3f(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. 24. glVertex2i(560,450);glVertex2i(560,750);glEnd();//techo casaglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_POLYGON);glVertex2i(300,820);glVertex2i(240,750);glVertex2i(760,750);glVertex2i(700,820);glEnd();//triangulo techo casaglColor3f(1.0 , 0.9 , 0.0);glBegin(GL_TRIANGLES);glVertex2i(600,720);glVertex2i(500,800);glVertex2i(400,720);glEnd();//puerta casaglColor3f(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 casaglColor3f(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. 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. 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 casaglColor3f(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();//cocheraglColor3f(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. 27. glLineWidth(12);glBegin(GL_LINES);glVertex2i(90,450);glVertex2i(90,600);glEnd();//techo cocheraglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_POLYGON);glVertex2i(90,660);glVertex2i(60,600);glVertex2i(300,600);glVertex2i(300,660);glEnd();//pinosglColor3f(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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(750,750); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI primer ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  28. 28. Por ultimo se compila y se abre la ventana con el resultado y así tiene quequedar: Practica Nº 7 OsoEl propósito de esta practica es empezar a utilizar una función para hacercírculos por lo cual se le empiece a dar la forma de un oso para eso la funcionprincipal es: circulo ( )Código:
  29. 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal}void circuloc(int x, int y, int t, int radio){ 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 pantallacirculo(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. 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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Al tener completo este código al compilarlo el resultado debe ser lo siguiente:
  31. 31. Practica Nº 9 Muñeco con formasEl propósito de esta practica es crear un muñeco o niño en el cual se van autilizar las funciones de circulo, del cuadrado, triángulos, polígonos y líneas.Borrador:
  32. 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 fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 500.0, 0.0, 500.0); //vista ortogonal}void circuloc(int x, int y, int t, int radio){
  33. 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 pantallacirculo(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. 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. 35. glVertex2i(280,462); glEnd(); glColor3f(0.9 ,0.6 ,0.5 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(228,290);glVertex2i(228,335);//arrivaglVertex2i(228,335);glVertex2i(272,335);//derechaglVertex2i(272,335);glVertex2i(272,290);//abajoglVertex2i(272,290);glVertex2i(228,290);glEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(195,180);glVertex2i(195,320);//arrivaglVertex2i(195,320);glVertex2i(305,320);//derechaglVertex2i(305,320);glVertex2i(305,180);//abajoglVertex2i(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. 36. glColor3f(0.0,0.0,0.0); //borra pantallacirculo(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//izquierdaglVertex2i(150,240);glVertex2i(165,200);//arrivaglVertex2i(195,320);glVertex2i(150,240);//derechaglVertex2i(195,260);glVertex2i(195,320);//abajoglVertex2i(165,200);glVertex2i(195,260);glEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(350,240);glVertex2i(345,200);//arrivaglVertex2i(305,320);glVertex2i(350,240);//derechaglVertex2i(305,265);glVertex2i(305,320);//abajoglVertex2i(345,200);glVertex2i(305,265);glEnd();
  37. 37. glColor3f(0.04 ,0.3 ,1.9 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(150,100);glVertex2i(165,60);//arrivaglVertex2i(195,180);glVertex2i(150,100);//derechaglVertex2i(305,180);glVertex2i(195,180);//abajoglVertex2i(165,60);glVertex2i(305,180);glEnd();glColor3f(0.04 ,0.3 ,1.9 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(350,100);glVertex2i(345,60);//arrivaglVertex2i(305,180);glVertex2i(350,100);//derechaglVertex2i(195,180);glVertex2i(305,180);//abajoglVertex2i(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. 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 GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Con este código se crea un muñeco muy gracioso y al copilarlo queda de lasiguiente forma:
  39. 39. Practica Nº 10 Animacion circuloEl propósito de esta practica es conocer el como dar animación o el efecto deanimación a un circulo de modo que parezca que se me mueve en formacuadrada o rectangular. Por medio de diferentes funciones.Borrador:
  40. 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. 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 aparecela siguiente animación o una ejemplo de ella:
  42. 42. Practica Nº 12 Animacion sistema solarEl proposito de esta practica es saber realizar circulos de manera que semuevan 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. 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. 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. 45. Terminado nuestro código al momento de compilar se mostrara como en lasiguiente 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. 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. 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 semueve circularmente y con circunferencias de guía Practica Nº 13 movimiento en 8En esta practica aprenderas a interactuar las animaciones de forma que creeuna ilusion de animacion en forma de 8. Y poder realizar animaciones de estetipo o parecidas.Codigo:
  48. 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. 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. 50. Practica Nº 14 semaforoEn esta practica aprenderas a utilizar efectos de animacion para crear unailusion 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. 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. 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 alcompilarlo tendremos un resultado asi:

×