Practicas OpenglC++

751 views

Published on

Este Proyecto esta echo para ayudar a Los usuarios con algunos codigos para sus practicas de Opengl

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
751
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
59
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Practicas OpenglC++

  1. 1. CECYTEM PLANTEL TECAMAC(Colegio de Estudios Científicos y Tecnológicos del Estado de México) Integrantes: Ana Karen Avila Enciso Jesica González Aguilar Grupo: 303 N.L. 1 N.L. 14 Materia: Utilización de Software de Diseño Especialidad: Técnico en Informática. Profesor: René Domínguez Escalona Manual de Practicas del Segundo Parcial
  2. 2. Índice 1.-Tablero de Ajedrez 2.-Estrella 3.-Cubo con Líneas 4.-Cubo Delineado 5.-Muñeco con Triángulos 6.-Casita 7.-Oso 8.-Cubo con Cubitos 9.-Muñeo con Formas 10.-Animacion del Circulo 11.-Animacion del Sistema Solar 12.-Movimiento en Ocho 13.-Semaforo 14.-Piramide
  3. 3. INTRODUCCION.OpenGL (Open Graphics Library) es una especificación estándar que defineuna API multilenguaje y multiplataforma para escribir aplicaciones que produzcangráficos 2D y3D. La interfaz consiste en más de 250 funciones diferentes quepueden usarse para dibujar escenas tridimensionales complejas a partir deprimitivas geométricas simples, tales como puntos, líneas y triángulos. Fuedesarrollada originalmente por Silicón Graphics Inc. (SGI) en 19922 y se usaampliamente en CAD, realidad virtual, representación científica, visualización deinformación y simulación de vuelo. También se usa en desarrollo de videojuegos,donde compite con Direct3D en plataformas Microsoft WindowsOpenGL tiene dos propósitos esenciales:Ocultar la complejidad de la interfaz con las diferentes tarjetas gráficas,presentando al programador una API única y uniforme.Ocultar las diferentes capacidades de las diversas plataformas hardware,requiriendo que todas las implementaciones soporten la funcionalidad completa deOpenGL (utilizando emulación software si fuese necesario).El funcionamiento básico de OpenGL consiste en aceptar primitivas tales comopuntos, líneas y polígonos, y convertirlas en píxeles. Este proceso es realizado poruna pipeline gráfica conocida como Máquina de estados de OpenGL.8 La mayorparte de los comandos de OpenGL bien emiten primitivas a la pipeline gráfica obien configuran cómo la pipeline procesa dichas primitivas. Hasta la aparición dela versión 2.0 cada etapa de la pipeline ejecutaba una función prefijada, resultandopoco configurable. A partir de la versión 2.0 algunas etapas son programablesusando un lenguaje de programación llamado GLSL.OpenGL es una API basada en procedimientos de bajo nivel que requiere que elprogramador dicte los pasos exactos necesarios para renderizar una escena. Estocontrasta con las Apis descriptivas, donde un programador sólo debe describir laescena y puede dejar que la biblioteca controle los detalles para representarla. Eldiseño de bajo nivel de OpenGL requiere que los programadores conozcan enprofundidad la pipeline gráfica, a cambio de darles libertad para implementaralgoritmos gráficos novedosos.
  4. 4. Tablero de AjedrezPresentación o descripción:En esta práctica realizaremos una tablero de Ajedrez con puntos esta solo paraempezar a poner en práctica la utilización de este programa.Esta es la practica numero 1 y con esta empezamos a ver si es posible entenderlea este programa.Los cuadros deben de ir de color blanco y negro y este es el código para surealización.GlBegin (GL_POINTS);YglPointSize(60); (Para definer el tamaño de los puntos)Codigo://mi primer ventana#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.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, 1050.0, 0.0, 1000.0); //vista ortogonal}
  5. 5. void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(100,100);glVertex2i(347,100);glVertex2i(597,100);glVertex2i(848,100);glVertex2i(220,220);glVertex2i(473,220);glVertex2i(723,220);glVertex2i(970,220);glVertex2i(100,340);glVertex2i(347,340);glVertex2i(597,340);glVertex2i(848,340);glVertex2i(220,460);glVertex2i(473,460);glVertex2i(723,460);glVertex2i(970,460);glVertex2i(100,580);glVertex2i(347,580);
  6. 6. glVertex2i(597,580);glVertex2i(848,580);glVertex2i(220,700);glVertex2i(473,700);glVertex2i(723,700);glVertex2i(970,700);glVertex2i(100,820);glVertex2i(347,820);glVertex2i(597,820);glVertex2i(848,820);glEnd();glColor3f(1.0 , 1.0 , 1.0);glPointSize(60);glBegin(GL_POINTS);glVertex2i(220,100);glVertex2i(473,100);glVertex2i(723,100);glVertex2i(970,100);glVertex2i(100,220);glVertex2i(347,220);glVertex2i(597,220);glVertex2i(848,220);glVertex2i(220,340);glVertex2i(473,340);glVertex2i(723,340);
  7. 7. glVertex2i(970,340);glVertex2i(100,460);glVertex2i(347,460);glVertex2i(597,460);glVertex2i(848,460);glVertex2i(220,580);glVertex2i(473,580);glVertex2i(723,580);glVertex2i(970,580);glVertex2i(100,700);glVertex2i(347,700);glVertex2i(597,700);glVertex2i(848,700);glVertex2i(220,820);glVertex2i(473,820);glVertex2i(723,820);glVertex2i(970,820);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUT
  8. 8. glutInitDisplayMode(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}
  9. 9. EstrellaPresentación o descripción:En esta práctica realizaremos una estrella como con puras líneas.Esta es la practica numero 2 y con esta empezamos utilizaremos solamente líneasque es la siguiente instrucción:glBegin(GL_LINES);Codigo://mi primer ventana#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(1.0 , 0.0 , 0.0);
  10. 10. glBegin(GL_LINES);glVertex2i(400,700);glVertex2i(700,100);glVertex2i(700,100);glVertex2i(100,500);glVertex2i(100,500);glVertex2i(800,500);glVertex2i(800,500);glVertex2i(200,100);glVertex2i(200,100);glVertex2i(400,700);glEnd();glFlush(); //forza dibujo}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();
  11. 11. glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}Y asi es como queda:
  12. 12. Cubo con LíneasPresentación o descripción:En esta práctica realizamos un cubo con puras líneas asiendo el efecto para quese vea como en 3D pero aun no se vera asi.Esta es la practica numero 3 y en esta aprenderemos a utilizar aun mas y poneren practica las líneas.En esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores:glBegin(GL_LINES);Codigo://TABLERO DE AJEDREZ#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}
  13. 13. void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0 ,0.0 ,1.0 );glBegin(GL_LINES);glVertex2i(100,100);glVertex2i(100,400);glVertex2i(100,100);glVertex2i(400,100);glVertex2i(400,100);glVertex2i(400,400);glVertex2i(400,400);glVertex2i(100,400);glVertex2i(100,100);glVertex2i(300,300);glVertex2i(100,400);glVertex2i(300,600);glVertex2i(300,300);glVertex2i(300,600);glVertex2i(300,300);glVertex2i(600,300);
  14. 14. glVertex2i(600,600);glVertex2i(600,300);glVertex2i(600,600);glVertex2i(300,600);glVertex2i(600,600);glVertex2i(400,400);glVertex2i(600,300);glVertex2i(400,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(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 espera
  15. 15. return 0; //retorna un valor de cero}Asi es como queda:
  16. 16. Cubo delineadoPresentación o descripción:En esta práctica realizamos un cubo pro tendremos que marcar muy bien suslíneas para darle otro tipo de vistaEsta es la practica numero 4 y en esta aprenderemos a utilizar aun mas y poneren practica las líneas.En esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores:glBegin(GL_LINES);glBegin(GL_QUADS);Codigo://TABLERO DE AJEDREZ#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,0.0,1.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal}
  17. 17. void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(1.0 , 1.0 , 0.0);glBegin(GL_QUADS);glColor3f(0.0,1.0,1.0);glVertex2i(100,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(200,100);glColor3f(0.0,1.0,0.0);glVertex2i(200,100);glVertex2i(200,200);glVertex2i(250,250);glVertex2i(250,150);glColor3f(1.0,0.0,0.0);glVertex2i(250,250);glVertex2i(150,250);glVertex2i(100,200);glVertex2i(200,200);glEnd();glLineWidth(3);
  18. 18. glBegin(GL_LINES);glColor3f(0.0,0.0,0.0);glVertex2i(100,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(200,100);glVertex2i(100,200);glVertex2i(200,200);glVertex2i(100,100);glVertex2i(200,100);glVertex2i(200,200);glVertex2i(200,100);glVertex2i(100,200);glVertex2i(150,250);glVertex2i(200,200);glVertex2i(250,250);glVertex2i(200,100);glVertex2i(250,150);glVertex2i(150,250);glVertex2i(250,250);
  19. 19. glVertex2i(250,250);glVertex2i(250,150);glEnd();glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(0,0); //posicion inicial de la ventanaglutCreateWindow("MI 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}
  20. 20. CasitaPresentación o descripción:En esta práctica realizamos una casa utilizando todo tipo de figurasacomodándolas en un orden para que represente una casitaEsta es la practica número 6.En esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores:glBegin(GL_QUADS);glBegin(GL_LINES);glBegin(GL_POLYGON);glBegin(GL_TRIANGLES);glBegin(GL_POINTS);//mi primer ventana#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
  21. 21. }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);glVertex2i(200,100);glVertex2i(300,100);glVertex2i(400,100);glVertex2i(500,100);glVertex2i(600,100);glVertex2i(700,100);
  22. 22. 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);
  23. 23. 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);
  24. 24. 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);
  25. 25. 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);
  26. 26. 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);
  27. 27. 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);
  28. 28. 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);
  29. 29. 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);
  30. 30. 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);
  31. 31. 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);
  32. 32. 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 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);
  33. 33. 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);
  34. 34. 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 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);
  35. 35. 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();
  36. 36. glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  37. 37. OsitaPresentación o descripción:En esta práctica realizamos un osito en este caso nosotras hicimos osita yaprenderemos a manejar los circulosEsta es la practica numero 7 y debemos de utilizar puros círculos para surealizacionEn esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores: 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);
  38. 38. for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x +sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();El código que utilizamos en esta práctica es el siguiente://mi primer ventana#include <GL/glut.h>#include <GL/gl.h>#include <math.h>void inicializa(void){glClearColor(0.2,0.8,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);}
  39. 39. 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);//cuerpo del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(250,250,100);//cabeza del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(250,400,75);//pansiita
  40. 40. glColor3f(1.0,0.0,1.0); //borra pantallacirculo(250,250,75);//piessitos del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(175,175,25);//piessitos del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(320,175,25);//orejitas del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(300,475,25);//orejitas del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(200,475,25);//manitas del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(150,300,25);//manitas del ositoglColor3f(1.0,0.1,0.7); //borra pantallacirculo(350,300,25);//ojitos del ositoglColor3f(0.0,0.0,0.0); //borra pantallacirculo(230,425,15);//ojitos del ositoglColor3f(0.0,0.0,0.0); //borra pantalla
  41. 41. circulo(275,425,15);//nariz del ositoglColor3f(0.0,0.0,0.0); //borra pantallacirculo(250,400,5);//boca dl ositoglColor3f(0.0,0.0,0.0); //borra pantallacirculo(250,375,15);//ojitos del ositoglColor3f(1.0,1.0,1.0); //borra pantallacirculo(230,425,5);//ojitos del ositoglColor3f(1.0,1.0,1.0); //borra pantallacirculo(275,425,5);glFlush(); //forza dibujo}int main (int argc, char** argv) //metodo main{glutInit(&argc, argv); //incializa GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo devisualizaciónglutInitWindowSize(500,500); //tamaño de la ventanaglutInitWindowPosition(100,100); //posicion inicial de la ventanaglutCreateWindow("Ventana"); //nombre de la ventana
  42. 42. inicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  43. 43. Cubo con CubitosPresentación o descripción:En esta práctica realizamos un cubo echo de cubitos pequeñosEsta es la practica numero 8 y utilizaremos puros cubitos.En esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores:glBegin(GL_QUADS);El código que utilizamos en esta práctica es el siguiente://mi primer ventana#include <GL/glut.h>#include <GL/gl.h>#include <GL/glu.h>void inicializa(void){glClearColor(0.0,0.0,.0,0.0); //color de fondoglMatrixMode(GL_PROJECTION); //Modo de proyeccionglLoadIdentity(); //Establece los parametros de proyecciongluOrtho2D(0.0, 4000.0, 0.0,4000.0); //vista ortogonal}void dibuja(void) //funcion dibuja
  44. 44. {int i,a=100;glClear(GL_COLOR_BUFFER_BIT);for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(700,600+a*i);glVertex2i(700,700+a*i);//arrivaglVertex2i(750,750+a*i);//derechaglVertex2i(750,650+a*i);
  45. 45. glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,600+a*i);glVertex2i(600,700+a*i);//arrivaglVertex2i(700,700+a*i);//derechaglVertex2i(700,600+a*i);//abajoglEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(600,700+a*i);
  46. 46. glVertex2i(650,750+a*i);//arrivaglVertex2i(750,750+a*i);//derechaglVertex2i(700,700+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(600,600+a*i);glVertex2i(600,700+a*i);//arrivaglVertex2i(600,700+a*i);glVertex2i(700,700+a*i);//derechaglVertex2i(700,700+a*i);glVertex2i(700,600+a*i);//abajoglVertex2i(700,600+a*i);glVertex2i(600,600+a*i);
  47. 47. //diagonal derecha esquina arrivaglVertex2i(650,750+a*i);glVertex2i(600,700+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(650,750+a*i);glVertex2i(750,750+a*i);//linea derecha atrasglVertex2i(750,750+a*i);glVertex2i(750,650+a*i);//linea abajo derecha diagonalglVertex2i(700,600+a*i);glVertex2i(750,650+a*i);//linea arriva derecha diagonalglVertex2i(700,700+a*i);glVertex2i(750,750+a*i);glEnd();}
  48. 48. ////////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,1600);glVertex2i(1700,1700);//arrivaglVertex2i(1750,1750);//derechaglVertex2i(1750,1650);glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro
  49. 49. //izquierdaglVertex2i(1600-a*i,1600);glVertex2i(1600-a*i,1700);//arrivaglVertex2i(1700-a*i,1700);//derechaglVertex2i(1700-a*i,1600);//abajoglEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,1700);glVertex2i(1650-a*i,1750);//arrivaglVertex2i(1750-a*i,1750);//derechaglVertex2i(1700-a*i,1700);//abajo
  50. 50. glEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1600-a*i,1600);glVertex2i(1600-a*i,1700);//arrivaglVertex2i(1600-a*i,1700);glVertex2i(1700-a*i,1700);//derechaglVertex2i(1700-a*i,1700);glVertex2i(1700-a*i,1600);//abajoglVertex2i(1700-a*i,1600);glVertex2i(1600-a*i,1600);//diagonal derecha esquina arrivaglVertex2i(1650-a*i,1750);glVertex2i(1600-a*i,1700);//linea cuadro atras//linea cuadro atrasglVertex2i(1650-a*i,1750);
  51. 51. glVertex2i(1750-a*i,1750);//linea derecha atrasglVertex2i(1750,1750);glVertex2i(1750,1650);//linea abajo derecha diagonalglVertex2i(1700,1600);glVertex2i(1750,1650);//linea arriva derecha diagonalglVertex2i(1700-a*i,1700);glVertex2i(1750-a*i,1750);glEnd();}///////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );
  52. 52. glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,600);glVertex2i(1700,700);//arrivaglVertex2i(1750,750);//derechaglVertex2i(1750,650);glEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,600);glVertex2i(1600-a*i,700);//arrivaglVertex2i(1700-a*i,700);
  53. 53. //derechaglVertex2i(1700-a*i,600);//abajoglEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600-a*i,700);glVertex2i(1650-a*i,750);//arrivaglVertex2i(1750-a*i,750);//derechaglVertex2i(1700-a*i,700);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);
  54. 54. //cuadro//izquierdaglVertex2i(1600-a*i,600);glVertex2i(1600-a*i,700);//arrivaglVertex2i(1600-a*i,700);glVertex2i(1700-a*i,700);//derechaglVertex2i(1700-a*i,700);glVertex2i(1700-a*i,600);//abajoglVertex2i(1700-a*i,600);glVertex2i(1600-a*i,600);//diagonal derecha esquina arrivaglVertex2i(1650-a*i,750);glVertex2i(1600-a*i,700);//linea cuadro atras//linea cuadro atrasglVertex2i(1650-a*i,750);glVertex2i(1750-a*i,750);//linea derecha atrasglVertex2i(1750,750);glVertex2i(1750,650);
  55. 55. //linea abajo derecha diagonalglVertex2i(1700,600);glVertex2i(1750,650);//linea arriva derecha diagonalglVertex2i(1700-a*i,700);glVertex2i(1750-a*i,750);glEnd();}//////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1700,600+a*i);
  56. 56. glVertex2i(1700,700+a*i);//arrivaglVertex2i(1750,750+a*i);//derechaglVertex2i(1750,650+a*i);glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600,600+a*i);glVertex2i(1600,700+a*i);//arrivaglVertex2i(1700,700+a*i);//derechaglVertex2i(1700,600+a*i);//abajo
  57. 57. glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1600,700+a*i);glVertex2i(1650,750+a*i);//arrivaglVertex2i(1750,750+a*i);//derechaglVertex2i(1700,700+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1600,600+a*i);glVertex2i(1600,700+a*i);
  58. 58. //arrivaglVertex2i(1600,700+a*i);glVertex2i(1700,700+a*i);//derechaglVertex2i(1700,700+a*i);glVertex2i(1700,600+a*i);//abajoglVertex2i(1700,600+a*i);glVertex2i(1600,600+a*i);//diagonal derecha esquina arrivaglVertex2i(1650,750+a*i);glVertex2i(1600,700+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(1650,750+a*i);glVertex2i(1750,750+a*i);//linea derecha atrasglVertex2i(1750,750+a*i);glVertex2i(1750,650+a*i);//linea abajo derecha diagonalglVertex2i(1700,600+a*i);glVertex2i(1750,650+a*i);//linea arriva derecha diagonalglVertex2i(1700,700+a*i);
  59. 59. glVertex2i(1750,750+a*i);glEnd();}for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200+(50*i),100+(50*i));glVertex2i(200+(50*i),200+(50*i));//arrivaglVertex2i(250+(50*i),250+(50*i));//derechaglVertex2i(250+(50*i),150+(50*i));
  60. 60. glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,100);glVertex2i(100,200);//arrivaglVertex2i(200,200);//derechaglVertex2i(200,100);//abajoglEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100+(50*i),200+(50*i));
  61. 61. glVertex2i(150+(50*i),250+(50*i));//arrivaglVertex2i(250+(50*i),250+(50*i));//derechaglVertex2i(200+(50*i),200+(50*i));//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,100);glVertex2i(100,200);//arrivaglVertex2i(100+(50*i),200+(50*i));glVertex2i(200+(50*i),200+(50*i));//derechaglVertex2i(200+(50*i),200+(50*i));glVertex2i(200+(50*i),100+(50*i));//abajoglVertex2i(200,100);glVertex2i(100,100);
  62. 62. //diagonal derecha esquina arrivaglVertex2i(150+(50*i),250+(50*i));glVertex2i(100+(50*i),200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(150+(50*i),250+(50*i));glVertex2i(250+(50*i),250+(50*i));//linea derecha atrasglVertex2i(250+(50*i),250+(50*i));glVertex2i(250+(50*i),150+(50*i));//linea abajo derecha diagonalglVertex2i(200+(50*i),100+(50*i));glVertex2i(250+(50*i),150+(50*i));//linea arriva derecha diagonalglVertex2i(200+(50*i),200+(50*i));glVertex2i(250+(50*i),250+(50*i));glEnd();}///////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );
  63. 63. glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200+(50*i),100+(50*i));glVertex2i(1200+(50*i),200+(50*i));//arrivaglVertex2i(1250+(50*i),250+(50*i));//derechaglVertex2i(1250+(50*i),150+(50*i));glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,100);glVertex2i(1100,200);//arriva
  64. 64. glVertex2i(1200,200);//derechaglVertex2i(1200,100);//abajoglEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100+(50*i),200+(50*i));glVertex2i(1150+(50*i),250+(50*i));//arrivaglVertex2i(1250+(50*i),250+(50*i));//derechaglVertex2i(1200+(50*i),200+(50*i));//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);
  65. 65. glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,100);glVertex2i(1100,200);//arrivaglVertex2i(1100+(50*i),200+(50*i));glVertex2i(1200+(50*i),200+(50*i));//derechaglVertex2i(1200+(50*i),200+(50*i));glVertex2i(1200+(50*i),100+(50*i));//abajoglVertex2i(1200,100);glVertex2i(1100,100);//diagonal derecha esquina arrivaglVertex2i(1150+(50*i),250+(50*i));glVertex2i(1100+(50*i),200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(1150+(50*i),250+(50*i));glVertex2i(1250+(50*i),250+(50*i));//linea derecha atrasglVertex2i(1250+(50*i),250+(50*i));glVertex2i(1250+(50*i),150+(50*i));
  66. 66. //linea abajo derecha diagonalglVertex2i(1200+(50*i),100+(50*i));glVertex2i(1250+(50*i),150+(50*i));//linea arriva derecha diagonalglVertex2i(1200+(50*i),200+(50*i));glVertex2i(1250+(50*i),250+(50*i));glEnd();}////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200+(50*i),1100+(50*i));glVertex2i(200+(50*i),1200+(50*i));//arriva
  67. 67. glVertex2i(250+(50*i),1250+(50*i));//derechaglVertex2i(250+(50*i),1150+(50*i));glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,1100);glVertex2i(100,1200);//arrivaglVertex2i(200,1200);//derechaglVertex2i(200,1100);//abajoglEnd();glColor3f(1.0 ,1.0 ,0.0 );
  68. 68. glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100+(50*i),1200+(50*i));glVertex2i(150+(50*i),1250+(50*i));//arrivaglVertex2i(250+(50*i),1250+(50*i));//derechaglVertex2i(200+(50*i),1200+(50*i));//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,1100);glVertex2i(100,1200);//arrivaglVertex2i(100+(50*i),1200+(50*i));glVertex2i(200+(50*i),1200+(50*i));
  69. 69. //derechaglVertex2i(200+(50*i),1200+(50*i));glVertex2i(200+(50*i),1100+(50*i));//abajoglVertex2i(200,1100);glVertex2i(100,1100);//diagonal derecha esquina arrivaglVertex2i(150+(50*i),1250+(50*i));glVertex2i(100+(50*i),1200+(50*i));//linea cuadro atras//linea cuadro atrasglVertex2i(150+(50*i),1250+(50*i));glVertex2i(250+(50*i),1250+(50*i));//linea derecha atrasglVertex2i(250+(50*i),1250+(50*i));glVertex2i(250+(50*i),1150+(50*i));//linea abajo derecha diagonalglVertex2i(200+(50*i),1100+(50*i));glVertex2i(250+(50*i),1150+(50*i));//linea arriva derecha diagonalglVertex2i(200+(50*i),1200+(50*i));glVertex2i(250+(50*i),1250+(50*i));
  70. 70. glEnd();}////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200+(50*i),1100+(50*i));glVertex2i(1200+(50*i),1200+(50*i));//arrivaglVertex2i(1250+(50*i),1250+(50*i));//derechaglVertex2i(1250+(50*i),1150+(50*i));glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);
  71. 71. //cuadro//izquierdaglVertex2i(1100,1100);glVertex2i(1100,1200);//arrivaglVertex2i(1200,1200);//derechaglVertex2i(1200,1100);//abajoglEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100+(50*i),1200+(50*i));glVertex2i(1150+(50*i),1250+(50*i));//arrivaglVertex2i(1250+(50*i),1250+(50*i));//derecha
  72. 72. glVertex2i(1200+(50*i),1200+(50*i));//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,1100);glVertex2i(1100,1200);//arrivaglVertex2i(1100+(50*i),1200+(50*i));glVertex2i(1200+(50*i),1200+(50*i));//derechaglVertex2i(1200+(50*i),1200+(50*i));glVertex2i(1200+(50*i),1100+(50*i));//abajoglVertex2i(1200,1100);glVertex2i(1100,1100);//diagonal derecha esquina arrivaglVertex2i(1150+(50*i),1250+(50*i));glVertex2i(1100+(50*i),1200+(50*i));//linea cuadro atras
  73. 73. //linea cuadro atrasglVertex2i(1150+(50*i),1250+(50*i));glVertex2i(1250+(50*i),1250+(50*i));//linea derecha atrasglVertex2i(1250+(50*i),1250+(50*i));glVertex2i(1250+(50*i),1150+(50*i));//linea abajo derecha diagonalglVertex2i(1200+(50*i),1100+(50*i));glVertex2i(1250+(50*i),1150+(50*i));//linea arriva derecha diagonalglVertex2i(1200+(50*i),1200+(50*i));glVertex2i(1250+(50*i),1250+(50*i));glEnd();}//////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,0.0 );
  74. 74. glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(200,100+a*i);glVertex2i(200,200+a*i);//arrivaglVertex2i(250,250+a*i);//derechaglVertex2i(250,150+a*i);glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,100+a*i);glVertex2i(100,200+a*i);//arriva
  75. 75. glVertex2i(200,200+a*i);//derechaglVertex2i(200,100+a*i);//abajoglEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(100,200+a*i);glVertex2i(150,250+a*i);//arrivaglVertex2i(250,250+a*i);//derechaglVertex2i(200,200+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);
  76. 76. glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(100,100+a*i);glVertex2i(100,200+a*i);//arrivaglVertex2i(100,200+a*i);glVertex2i(200,200+a*i);//derechaglVertex2i(200,200+a*i);glVertex2i(200,100+a*i);//abajoglVertex2i(200,100+a*i);glVertex2i(100,100+a*i);//diagonal derecha esquina arrivaglVertex2i(150,250+a*i);glVertex2i(100,200+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(150,250+a*i);glVertex2i(250,250+a*i);//linea derecha atrasglVertex2i(250,250+a*i);glVertex2i(250,150+a*i);
  77. 77. //linea abajo derecha diagonalglVertex2i(200,100+a*i);glVertex2i(250,150+a*i);//linea arriva derecha diagonalglVertex2i(200,200+a*i);glVertex2i(250,250+a*i);glEnd();}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,1100);glVertex2i(1200,1200);
  78. 78. //arrivaglVertex2i(1250,1250);//derechaglVertex2i(1250,1150);glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,1100);glVertex2i(1100-a*i,1200);//arrivaglVertex2i(1200-a*i,1200);//derechaglVertex2i(1200-a*i,1100);//abajoglEnd();
  79. 79. glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,1200);glVertex2i(1150-a*i,1250);//arrivaglVertex2i(1250-a*i,1250);//derechaglVertex2i(1200-a*i,1200);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100-a*i,1100);glVertex2i(1100-a*i,1200);//arriva
  80. 80. glVertex2i(1100-a*i,1200);glVertex2i(1200-a*i,1200);//derechaglVertex2i(1200-a*i,1200);glVertex2i(1200-a*i,1100);//abajoglVertex2i(1200-a*i,1100);glVertex2i(1100-a*i,1100);//diagonal derecha esquina arrivaglVertex2i(1150-a*i,1250);glVertex2i(1100-a*i,1200);//linea cuadro atras//linea cuadro atrasglVertex2i(1150-a*i,1250);glVertex2i(1250-a*i,1250);//linea derecha atrasglVertex2i(1250,1250);glVertex2i(1250,1150);//linea abajo derecha diagonalglVertex2i(1200,1100);glVertex2i(1250,1150);//linea arriva derecha diagonal
  81. 81. glVertex2i(1200-a*i,1200);glVertex2i(1250-a*i,1250);glEnd();}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=9;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,100);glVertex2i(1200,200);
  82. 82. //arrivaglVertex2i(1250,250);//derechaglVertex2i(1250,150);glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,100);glVertex2i(1100-a*i,200);//arrivaglVertex2i(1200-a*i,200);//derechaglVertex2i(1200-a*i,100);//abajoglEnd();glColor3f(1.0 ,0.0 ,0.0 );
  83. 83. glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100-a*i,200);glVertex2i(1150-a*i,250);//arrivaglVertex2i(1250-a*i,250);//derechaglVertex2i(1200-a*i,200);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100-a*i,100);glVertex2i(1100-a*i,200);//arrivaglVertex2i(1100-a*i,200);
  84. 84. glVertex2i(1200-a*i,200);//derechaglVertex2i(1200-a*i,200);glVertex2i(1200-a*i,100);//abajoglVertex2i(1200-a*i,100);glVertex2i(1100-a*i,100);//diagonal derecha esquina arrivaglVertex2i(1150-a*i,250);glVertex2i(1100-a*i,200);//linea cuadro atras//linea cuadro atrasglVertex2i(1150-a*i,250);glVertex2i(1250-a*i,250);//linea derecha atrasglVertex2i(1250,250);glVertex2i(1250,150);//linea abajo derecha diagonalglVertex2i(1200,100);glVertex2i(1250,150);//linea arriva derecha diagonal
  85. 85. glVertex2i(1200-a*i,200);glVertex2i(1250-a*i,250);glEnd();}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////for(i=0;i<=10;i++){glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//izquierdaglVertex2i(1200,100+a*i);glVertex2i(1200,200+a*i);//arrivaglVertex2i(1250,250+a*i);//derechaglVertex2i(1250,150+a*i);
  86. 86. glEnd();glColor3f(1.0 ,1.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,100+a*i);glVertex2i(1100,200+a*i);//arrivaglVertex2i(1200,200+a*i);//derechaglVertex2i(1200,100+a*i);//abajoglEnd();glColor3f(1.0 ,0.0 ,0.0 );glLineWidth(8);glBegin(GL_QUADS);//cuadro//izquierdaglVertex2i(1100,200+a*i);
  87. 87. glVertex2i(1150,250+a*i);//arrivaglVertex2i(1250,250+a*i);//derechaglVertex2i(1200,200+a*i);//abajoglEnd();//cuadroglColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);//cuadro//izquierdaglVertex2i(1100,100+a*i);glVertex2i(1100,200+a*i);//arrivaglVertex2i(1100,200+a*i);glVertex2i(1200,200+a*i);//derechaglVertex2i(1200,200+a*i);glVertex2i(1200,100+a*i);//abajoglVertex2i(1200,100+a*i);glVertex2i(1100,100+a*i);
  88. 88. //diagonal derecha esquina arrivaglVertex2i(1150,250+a*i);glVertex2i(1100,200+a*i);//linea cuadro atras//linea cuadro atrasglVertex2i(1150,250+a*i);glVertex2i(1250,250+a*i);//linea derecha atrasglVertex2i(1250,250+a*i);glVertex2i(1250,150+a*i);//linea abajo derecha diagonalglVertex2i(1200,100+a*i);glVertex2i(1250,150+a*i);//linea arriva derecha diagonalglVertex2i(1200,200+a*i);glVertex2i(1250,250+a*i);glEnd();}
  89. 89. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////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("cubo3d"); //nombre de la ventanainicializa();glutDisplayFunc(dibuja); //Envia los graficos a la ventana devisualizaciónglutMainLoop(); //muestra todo y esperareturn 0; //retorna un valor de cero}
  90. 90. Muñeco con Formas.Presentación o descripción:En esta práctica realizamos un muñeco con muchas figuras, como triángulos,cuadrados, rectángulos, círculos, etc.Debemos realizar esta practica en una clase solamente ya que es como unexamen para ver como trabajamos y todo lo que hemos aprendido sobre esteprograma.En esta práctica podemos utilizar las siguientes instrucciones que ya hemosaprendido como se utilizan en todas las clases anteriores:GlBegin (GL_QUADS);GlBegin (GL_TRIANGLES);GlBegin (GL_POLYGON);GlBegin (GL_LINES);Circulo ();El código que utilizamos en esta práctica es el siguiente:Void dibuja (void) //función dibuja{GlClear (GL_COLOR_BUFFER_BIT);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (350,450);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (325,500);//cabelloglColor3f (0.0, 0.0, 0.0);
  91. 91. GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (300,500);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (250,500);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (200,500);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (150,400);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (100,400);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (75,400);//cabelloglColor3f (0.0, 0.0, 0.0);GlBegin (GL_TRIANGLES);glVertex2i (280,400);glVertex2i (290,400);glVertex2i (50,400);GlEnd ();//cabezaglColor3f (1.0, 0.8, 0.7); //borra pantallaCírculo (250, 350,75);//sonrisaglColor3f (0.0, 0.0, 0.0); //borra pantallaCirculo (250, 300,15);
  92. 92. //sonrisaglColor3f (1.0, 0.8, 0.7); //borra pantallacirculo(250,310,15);//ojosglColor3f(1.0,1.0,1.0); //borra pantallacirculo(225,375,10);//ojosglColor3f(0.2,0.8,1.0); //borra pantallacirculo(225,375,5);//ojosglColor3f(1.0,1.0,1.0); //borra pantallacirculo(275,375,10);//ojosglColor3f(0.2,0.8,1.0); //borra pantallacirculo(275,375,5);//orejasglColor3f(1.0,0.8,0.7); //borra pantallacirculo(325,375,15);//orejasglColor3f(1.0,0.8,0.7); //borra pantallacirculo(173,375,15);//cuelloglColor3f(1.0,0.8,0.7);//cuerpoglBegin(GL_QUADS);glColor3f(1.0,0.0,0.0);glVertex2i(200,275);glVertex2i(325,275);glVertex2i(325,125);glVertex2i(200,125);//cuelloglColor3f(1.0,0.8,0.7);glVertex2i(245,285);glVertex2i(275,285);glVertex2i(275,260);glVertex2i(245,260);//brazoglVertex2i(200,275);glVertex2i(200,245);glVertex2i(150,150);glVertex2i(130,150);glVertex2i(325,275);glVertex2i(325,245);glVertex2i(370,150);glVertex2i(390,150);glEnd();circulo(140,150,25);
  93. 93. circulo(380,150,25);glColor3f(1.0,1.0,.0);glBegin(GL_POLYGON);glVertex2i(325,175);glVertex2i(200,175);glVertex2i(160,10);glVertex2i(180,10);glVertex2i(245,125);glVertex2i(330,10);glVertex2i(350,10);glEnd();glColor3f(0.0,0.0,0.0);circulo(340,10,20);circulo(170,10,20);glFlush(); //forza dibujo}Salida:
  94. 94. ANIMACION CÍRCULO.Presentación o descripción:En esta práctica realizaremos una animación en Dev c++ esta vez no utilizaremoscuadrados ni triángulos ahora solo utilizaremos un circulo y unas nuevasinstrucciones que el profesor nos dio.Lo que tenemos que realizar es que un circulo avance hacia enfrente, hacia abajo,hacia atrás, hacia arriba, en este orden una y otra vez.Nos tenemos que guiar con un trabajo que el profesor nos dio pero que soloavanza hacia enfrente, ahora tenemos que cambiar el código para que realice lassiguientes acciones.La instrucción que utilizamos fue la siguiente:if(y>=1 && y<600 && x==1000){circulo(1000,700-y,40);glFlush();y++;}El código de toda la práctica es el siguiente:glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);if(x>=1 && x<1000){circulo(2+1*x,700,40);glFlush();x++;}if(y>=1 && y<600 && x==1000){circulo(1000,700-y,40);glFlush();y++;}if(w>=1 && w<1000 && y==600 && x==1000){circulo(1000-w,100,40);glFlush();w++;}if(z>=1 && z<1000 && y==600 && x==1000 && w==1000){circulo(5,100+z,40);glFlush();z++;if(z==600) {z=1;x=1;y=1;w=1;}}
  95. 95. glutSwapBuffers();} SALIDA:
  96. 96. ANIMACION DEL SISTEMA SOLAR.Presentación o descripción:En esta practica también vamos a realizar una animación en Dev c++ pero ahorarealizaremos un sistema solar realizaremos nuestro sistema solar con movimientotanto de los planetas como de las orbitas.Podemos ponerle el diseño que nosotros deseemos, tenemos que guiarnos conuna instrucción que el profesor nos pasó y también con su ayuda.La instrucción que utilizamos fue la siguiente:int angulo=0; glBegin(GL_TRIANGLE_FAN); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo++){ glVertex2f(x +sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();El código de toda la práctica fue el siguiente:void circulo(int x, int y, int radio){ int angulo=0; glBegin(GL_TRIANGLE_FAN); glVertex2f(x,y); for (angulo=0;angulo<=360; angulo++){ glVertex2f(x +sin(angulo) * radio, y + cos(angulo) * radio);} glEnd();}void dibuja(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto//solglColor3f (1.0, 1.0, 0.0);circulo( 500,500,50);
  97. 97. //mercurioglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,100);glColor3f (1.0, 0.0, 0.0);circulo( 500+ sin(b) * 100,500 + cos(b) * 100,10);//venusglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,150);glColor3f (0.5, 0.2, 0.1);circulo( 500+ sin(a) * 150,500 + cos(a) * 150,15);//tierraglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,200);glColor3f (0.08, 0.6, 0.9);circulo( 500+ sin(c) * 200,500 + cos(c) * 200,20);//marteglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,250);glColor3f (1.0, 0.0, 0.0);circulo( 500+ sin(d) * 250,500 + cos(d) * 250,22);//jupiterglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,300);glColor3f (0.4, 0.2, 0.6);circulo( 500+ sin(e) * 300,500 + cos(e) * 300,23);//saturnoglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,350);glColor3f (0.3, 0.9, 0.6);circulo( 500+ sin(f) * 350,500 + cos(f) * 350,20);//uranoglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,400);glColor3f (0.7, 0.1, 0.6);circulo( 500+ sin(g) * 400,500 + cos(g) * 400,22);//neptunoglColor3f (1.0, 1.0, 1.0);circuloc(500,500,2,450);glColor3f (0.8, 0.3, 0.2);circulo( 500+ sin(k) * 450,500 + cos(k) * 450,23);a=a+0.09;b=b+0.08;c=c+0.07;d=d+0.06;e=e+0.05;f=f+0.04;
  98. 98. g=g+0.03;k=k+0.02;ang=ang+0.01; //velocidad entre mas grande mas rapido y entre menos mas lentofor(int j=1;j<=10000000;j++){}//pausaif(ang==360){ang=0;}// se repite idefinidamenteglFlush(); //forzar dibujadoglutSwapBuffers(); //y esto}SALIDA:
  99. 99. MOVIMIENTO EN OCHO.Presentación o descripción:En esta practica también realizaremos una animación pero ahora será con doscírculos, lo que haremos será que en un dibujo parecido en ocho y ahora tenemosque hacer que dos círculos se muevan como si fueran un carro en una pista.La instrucción que utilizamos en esta practica es: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++) {}El código completo de esta práctica es el siguiente:{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glColor3f(1.0, 1.0, 0.0);circulo(300, 300, 70);circulo(300,180,70);glColor3f(1.0,1.0,1.0);circulo(300,300,50);circulo(300,180,50);glColor3f(0.0,0.0,0.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);
  100. 100. b=b + 0.01;if(b>12.4){a=6.15;b=6.15;}for(int j=0; j<=10; j++) {}}glFlush();glutSwapBuffers();}SALIDA.:
  101. 101. SEMAFORO:Presentación o descripción:En esta practica realizaremos un semáforo, logrando que se cambien de color yque cuando este en verde parpadee un poco después el amarillo y por ultimo encolor rojo.El profesor nos paso un trabajo ya terminado y después nos explico comorealizarlo además de que igual nos paso un video tutorial de cómo realizarlo.El código completo de esta practica es el siguiente:#include <GL/glut.h>#include <GL/gl.h>#include <math.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, 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);}
  102. 102. glEnd();}void dibuja(void) //funcion dibuja{glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.0,0.0,1.0);glBegin(GL_QUADS);glVertex2i(200,500);glVertex2i(300,500);glVertex2i(300,200);glVertex2i(200,200);glEnd();//rojoglColor3f(1.0,0.0,1.0); //borra pantallacirculo(250,400,50);//amarilloglColor3f(1.0,0.0,1.0); //borra pantallacirculo(250,300,50);//amarilloglColor3f(1.0,0.0,1.0); //borra pantallacirculo(250,200,50);glFlush(); //forza dibujo}SALIDA:
  103. 103. PIRAMIDE.Presentación o Descripción:En esta practica realizaremos una pirámide que solo se vera por la parte de arribapara esto tenemos que guiarnos con la instrucción que el profesor ya nos pasoanteriormente.También con su ayuda realizaremos lo que falta de la práctica.Esta práctica se realizara más fácilmente con la instrucción Ford para que seamás fácil.El código completo de esta práctica es el siguiente:void dibuja(void) //funcion dibuja{int i,a=20;glClear(GL_COLOR_BUFFER_BIT); //borra pantallaglColor3f(0.0 , 0.0 , 0.0);glLineWidth(2);glBegin(GL_LINES);//valor inicial----valor finalfor(i=1;i<=10;i++){//abajoglVertex2i(240-20*i,240-20*i);glVertex2i(260+20*i,240-20*i);//derechaglVertex2i(260+20*i,240-20*i);glVertex2i(260+20*i,260+20*i);//IzquierdaglVertex2i(240-20*i,240-20*i);glVertex2i(240-20*i,260+20*i);//arribaglVertex2i(240-20*i,260+20*i);glVertex2i(260+20*i,260+20*i);}
  104. 104. int c,s=40;glColor3f(0.0 ,0.0 ,0.0 );glLineWidth(4);glBegin(GL_LINES);for(c=0;c<=4;c++){glVertex2i(280+s*c,280+s*c);glVertex2i(300+s*c,300+s*c);glVertex2i(200-s*c,200-s*c);glVertex2i(220-s*c,220-s*c);glVertex2i(220-s*c,280+s*c);glVertex2i(200-s*c,300+s*c);glVertex2i(280+s*c,220-s*c);glVertex2i(300+s*c,200-s*c);}glEnd();SALIDA:

×