1. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
UTILIZACION DE SOFTWARE DE
DISEÑO
MANUAL DE OPEN GL
PROFESOR: RENE DOMINGUEZ ESCALONA
ALUMNOS: EDUARDO TAPIA HERNANDEZ Y
CESAR RAFAEL ESCOBAR SANCHEZ
GRUPO: 303
TURNO: MATUTINO
ESPECIALIDAD: INFORMATICA
Página 1
2. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
INTRODUCCION:
En este manual podremos dibujar en Open GL
atravez de códigos en los cuales se apreciaran
desde los más sencillos como hacer formas
geométricas tales como el rectángulo, triangulo,
circulo, cuadrado etc. Hasta los más complicados
como hacer figuras en 3D con movimiento
Este manual será de gran ayuda para aquellos que
cursen la materia de informática ya que viene
mucha información acerca de este programa de
Open GL.
Página 2
3. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Tablero de ajedrez
En esta práctica tenemos que hacer un tablero de
ajedrez en el programa de Open GL Dev c++ no
olvidemos que cada tablero de ajedrez tiene 8
cuadrados x 8 cuadrados así que tenemos que ser
muy precisos con nuestras coordenadas y poner
un cuadrado de color negro y uno de color blanco
tal y como es un ajedrez real.
Borrador con coordenadas utilizadas:
glBegin(GL_POINTS)
glPointSize();
Código:
//mi primer ventana
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
void inicializa(void)
{
Página 3
4. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glClearColor(0.0,0.0,1.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1050.0, 0.0, 1000.0); //vista ortogonal
}
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(60);
glBegin(GL_POINTS);
glVertex2i(100,100);
glVertex2i(347,100);
glVertex2i(597,100);
glVertex2i(848,100);
glVertex2i(220,220);
glVertex2i(473,220);
glVertex2i(723,220);
glVertex2i(970,220);
glVertex2i(100,340);
glVertex2i(347,340);
glVertex2i(597,340);
glVertex2i(848,340);
glVertex2i(220,460);
glVertex2i(473,460);
Página 4
5. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(723,460);
glVertex2i(970,460);
glVertex2i(100,580);
glVertex2i(347,580);
glVertex2i(597,580);
glVertex2i(848,580);
glVertex2i(220,700);
glVertex2i(473,700);
glVertex2i(723,700);
glVertex2i(970,700);
glVertex2i(100,820);
glVertex2i(347,820);
glVertex2i(597,820);
glVertex2i(848,820);
glEnd();
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(60);
glBegin(GL_POINTS);
glVertex2i(220,100);
glVertex2i(473,100);
glVertex2i(723,100);
glVertex2i(970,100);
glVertex2i(100,220);
glVertex2i(347,220);
glVertex2i(597,220);
glVertex2i(848,220);
Página 5
6. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(220,340);
glVertex2i(473,340);
glVertex2i(723,340);
glVertex2i(970,340);
glVertex2i(100,460);
glVertex2i(347,460);
glVertex2i(597,460);
glVertex2i(848,460);
glVertex2i(220,580);
glVertex2i(473,580);
glVertex2i(723,580);
glVertex2i(970,580);
glVertex2i(100,700);
glVertex2i(347,700);
glVertex2i(597,700);
glVertex2i(848,700);
glVertex2i(220,820);
glVertex2i(473,820);
glVertex2i(723,820);
glVertex2i(970,820);
glEnd();
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
Página 6
7. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página 7
8. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Estrella
En esta nueva práctica tenemos que hacer una
estrella de 5 picos utilizando la instrucción ya
antes mencionada gl lines.
Borrador con coordenadas utilizadas:
glBegin(Gl _LINES);
Código:
//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 fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
}
void dibuja(void) //funcion dibuja
{
Página 8
9. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
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 GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
Página 9
10. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
10
11. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Cubo con líneas
En esta ocasión realizaremos un cubo como en
efecto 3D utilizando la misma función de la
actividad pasada.
Borrador con coordenadas utilizadas:
glBegin(GL_LINES)
Código
//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 fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
Página
11
12. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
}
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
glBegin(GL_LINES);
glVertex2i(200,300);
glVertex2i(400,300);
glVertex2i(200,300);
glVertex2i(200,500);
glVertex2i(400,300);
glVertex2i(400,500);
glVertex2i(400,500);
glVertex2i(200,500);
glVertex2i(200,300);
glVertex2i(300,400);
glVertex2i(400,300);
glVertex2i(500,400);
glVertex2i(300,400);
glVertex2i(500,400);
glVertex2i(500,400);
glVertex2i(500,600);
glVertex2i(500,600);
glVertex2i(300,600);
glVertex2i(300,600);
Página
12
13. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(300,400);
glVertex2i(300,600);
glVertex2i(200,500);
glVertex2i(400,500);
glVertex2i(500,600);
glEnd();
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
inicializa();
Página
13
14. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
14
15. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Pirámide
En esta nueva practica tenemos que hacer una
pirámide que se vea como si alguien la estuviera
viendo desde arriba pueden ser varios cuadrados
del más grande al más chico o al contrario pero
tienen que ser 10 cuadrados.
Borrador con coordenadas utilizadas:
glBegin(GL_LINES);
for(i=1;i<=11;i++)
Código
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
void inicializa(void)
{
glClearColor(1.0,0.0,0.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
}
Página
15
16. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
void dibuja(void) //funcion dibuja
{
int i,a=25;
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(1.0 , 1.0 , 1.0);
glLineWidth(2);
glBegin(GL_LINES);
//valor inicial ---- valor final o condicion ---- incremento
for(i=1;i<=11;i++){
//abajo
glVertex2i (250-a*i,250-a*i);
glVertex2i (270+a*i,250-a*i);
//derecha
glVertex2i (270+a*i,250-a*i);
glVertex2i (270+a*i,270+a*i);
//izquierda
glVertex2i (250-a*i,250-a*i);
glVertex2i (250-a*i,270+a*i);
//arriba
glVertex2i (250-a*i,270+a*i);
glVertex2i (270+a*i,270+a*i);
}
glEnd();
glFlush(); //forza dibujo
}
Página
16
17. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(400,400); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("Cuadros"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
17
18. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Cubo delineado
Esta vez haremos un cubo como ya lo habíamos
hecho antes pero esta vez cada una de sus caras
tendrá que ir de un color deferente y el grosor de
las líneas tendrá que cambiar.
Borrador con coordenadas utilizadas
glBegin(GL_QUADS);
glLineWidth();
glBegin(GL_LINES);
Código
//mi primer ventana
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
void inicializa(void)
{
glClearColor(0.0,1.0,0.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
Página
18
20. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glBegin(GL_LINES);
glVertex2i(200,300);
glVertex2i(400,300);
glVertex2i(200,300);
glVertex2i(200,500);
glVertex2i(400,300);
glVertex2i(400,500);
glVertex2i(400,500);
glVertex2i(200,500);
glVertex2i(200,300);
glVertex2i(300,400);
glVertex2i(400,300);
glVertex2i(500,400);
glVertex2i(300,400);
glVertex2i(500,400);
glVertex2i(500,400);
glVertex2i(500,600);
glVertex2i(500,600);
glVertex2i(300,600);
glVertex2i(300,600);
glVertex2i(300,400);
glVertex2i(300,600);
glVertex2i(200,500);
glVertex2i(400,500);
glVertex2i(500,600);
Página
20
21. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glEnd();
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
21
22. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Muñeco con triángulos
Esta vez haremos un muñeco en forma de
humano pero de puros triángulos utilizaremos una
nueva instrucción.
Borrador con coordenadas utilizadas:
glBegin(GL_TRIANGLES);
glBegin(GL_LINES);
glBegin(GL_QUADS);
Código
//mi primer ventana
#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 fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
Página
22
26. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(710,270);
glColor3f(1.0 ,1.0 ,1.0);
glVertex2i(540,370);
glVertex2i(540,270);
glEnd();
glColor3f(1.0 ,1.0 ,0.0);
glBegin(GL_TRIANGLES);
glVertex2i(680,130);
glVertex2i(710,270);
glVertex2i(650,210);
glEnd();
glColor3f(1.0 ,0.0 ,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(680,130);
glVertex2i(760,190);
glVertex2i(840,130);
glEnd();
glColor3f(0.0 ,0.0 ,0.0);
glBegin(GL_POLYGON);
glVertex2i(720,130);
glVertex2i(780,130);
glVertex2i(840,80);
glVertex2i(840,40);
glVertex2i(780,0);
glVertex2i(720,0);
glVertex2i(660,40);
Página
26
27. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(660,80);
glEnd();
glColor3f(0.0 ,1.0 ,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(770,730);
glVertex2i(890,400);
glVertex2i(910,750);
glEnd();
glColor3f(0.0 ,1.0 ,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(840,350);
glVertex2i(890,400);
glVertex2i(950,370);
glEnd();
glColor3f(0.0 ,0.0 ,0.0);
glBegin(GL_LINES);
glVertex2i(880,700);
glVertex2i(880,730);
glVertex2i(880,730);
glVertex2i(850,730);
glVertex2i(850,730);
glVertex2i(850,700);
glEnd();
glColor3f(0.0 ,0.0 ,0.0);
glBegin(GL_LINES);
glVertex2i(850,670);
Página
27
28. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(880,670);
glVertex2i(880,670);
glVertex2i(880,640);
glVertex2i(880,640);
glVertex2i(850,640);
glVertex2i(850,640);
glVertex2i(850,670);
glEnd();
glColor3f(0.0 ,0.0 ,0.0);
glBegin(GL_LINES);
glVertex2i(840,610);
glVertex2i(880,610);
glVertex2i(880,610);
glVertex2i(880,590);
glVertex2i(880,590);
glVertex2i(860,590);
glVertex2i(860,590);
glVertex2i(860,610);
glEnd();
glColor3f(0.0 ,0.0 ,0.0);
glBegin(GL_LINES);
glVertex2i(880,550);
glVertex2i(850,560);
glVertex2i(880,550);
glVertex2i(850,540);
glVertex2i(865,555);
Página
28
29. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(865,540);
glEnd();
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
29
30. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Casita
Ahora realizaremos una casa con todo lo
aprendido hasta ahora esta casa tiene que tener
cuadrados, carretera, triángulos, etc.
Borrador con coordenadas utilizadas:
glBegin(GL_QUADS);
glBegin(GL_LINES);
glBegin(GL_POLYGON);
glBegin(GL_TRIANGLES);
Código
//mi primer ventana
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
void inicializa(void)
{
glClearColor(0.0,1.0,1.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0,0.0, 1000.0); //vista ortogonal
Página
30
31. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
}
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
//carretera
glBegin(GL_QUADS);
glVertex2i(0,200);
glVertex2i(0,0);
glVertex2i(1000,0);
glVertex2i(1000,200);
glEnd();
glColor3f(1.0 , 1.0 , 1.0);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2i(10,100);
glVertex2i(100,100);
glVertex2i(200,100);
glVertex2i(300,100);
glVertex2i(400,100);
glVertex2i(500,100);
glVertex2i(600,100);
glVertex2i(700,100);
glVertex2i(800,100);
Página
31
44. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glBegin(GL_POLYGON);
glVertex2i(90,660);
glVertex2i(60,600);
glVertex2i(300,600);
glVertex2i(300,660);
glEnd();
//pinos
glColor3f(0.5 , 0.3 , 0.3);
glBegin(GL_QUADS);
glVertex2i(850,450);
glVertex2i(900,450);
glVertex2i(900,530);
glVertex2i(850,530);
glEnd();
int i,a=9;
glColor3f(0.1 , 0.3 , 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
Página
44
45. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("MI primer ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
45
46. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Oso
En esta práctica haremos un la forma de un oso
aplicando un nuevo código.
Borrador con coordenadas utilizadas:
void circulo(int x, int y, int radio)
Código
//mi primer ventana
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
void inicializa(void)
{
glClearColor(1.0,1.0,1.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 1000.0, 0.0, 1000.0); //vista ortogonal
}
void circuloc(int x, int y, int t, int radio)
{
int angulo=0;
glPointSize(t);
glBegin(GL_POINTS);
Página
46
47. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//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); //borra pantalla
glColor3f(1.0,0.0,0.0);
circuloc(250,250,5,150);
circuloc(150,100,5,50);
Página
47
48. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
circuloc(350,100,5,50);
circuloc(100,350,5,50);
circuloc(400,350,5,50);
circuloc(250,450,5,125);
circuloc(175,600,5,55);
circuloc(325,600,5,55);
glColor3f(0.0,0.0,0.0);
circuloc(200,500,5,25);
glColor3f(1.0,1.0,0.5);
circulo(250,250,150);
circulo(350,100,50);
circulo(150,100,50);
circulo(250,450,125);
circulo(400,350,50);
circulo(100,350,50);
circulo(325,600,55);
circulo(175,600,55);
///////////////////////////////////////////////////////////////////////////////
glColor3f(0.0,0.0,0.0);
circuloc(200,500,1,25);
circuloc(300,500,1,25);
glColor3f(1.0,1.0,1.0);
circulo(200,500,25);
glColor3f(0.0,0.0,0.0);
circulo(200,500,15);
Página
48
49. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glColor3f(1.0,1.0,1.0);
circulo(300,500,25);
circulo(325,600,40);
circulo(175,600,40);
glColor3f(0.0,0.0,0.0);
circulo(300,500,15);
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(100,100); //posicion inicial de la ventana
glutCreateWindow("Ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
49
50. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Página
50
51. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Cubo con cubitos
En este ejercicio hacer un cubo como el que ya
hicimos anteriormente pero esta vez en vez de
líneas será hecho por puros cubitos chiquitos.
Borrador con coordenadas utilizadas:
glBegin(GL_LINES);
glBegin(GL_QUADS);
for(i=0;i<=10;i++){
for(i=0;i<=10;i++){
Código
//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 fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 2000.0, 0.0, 2000.0); //vista ortogonal
Página
51
52. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
}
void dibuja(void) //funcion dibuja
{
int i,a=100;
glClear(GL_COLOR_BUFFER_BIT);
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
for(i=0;i<=10;i++){
glColor3f(6.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(700,600+a*i);
glVertex2i(700,700+a*i);
//arriva
glVertex2i(750,750+a*i);
//derecha
Página
52
53. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(750,650+a*i);
glEnd();
glColor3f(0.0 ,0.8 ,6.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(600,600+a*i);
glVertex2i(600,700+a*i);
//arriva
glVertex2i(700,700+a*i);
//derecha
glVertex2i(700,600+a*i);
//abajo
glEnd();
glColor3f(0.0 ,6.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
Página
53
54. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//cuadro
//izquierda
glVertex2i(600,700+a*i);
glVertex2i(650,750+a*i);
//arriva
glVertex2i(750,750+a*i);
//derecha
glVertex2i(700,700+a*i);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,6.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(600,600+a*i);
glVertex2i(600,700+a*i);
//arriva
glVertex2i(600,700+a*i);
glVertex2i(700,700+a*i);
//derecha
glVertex2i(700,700+a*i);
glVertex2i(700,600+a*i);
//abajo
Página
54
55. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(700,600+a*i);
glVertex2i(600,600+a*i);
//diagonal derecha esquina arriva
glVertex2i(650,750+a*i);
glVertex2i(600,700+a*i);
//linea cuadro atras
//linea cuadro atras
glVertex2i(650,750+a*i);
glVertex2i(750,750+a*i);
//linea derecha atras
glVertex2i(750,750+a*i);
glVertex2i(750,650+a*i);
//linea abajo derecha diagonal
glVertex2i(700,600+a*i);
glVertex2i(750,650+a*i);
//linea arriva derecha diagonal
glVertex2i(700,700+a*i);
glVertex2i(750,750+a*i);
glEnd();
}
Página
55
56. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
////////////////////////////////////////////////////////////////////////
for(i=0;i<=10;i++){
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(1700,1600);
glVertex2i(1700,1700);
//arriva
glVertex2i(1750,1750);
//derecha
glVertex2i(1750,1650);
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
Página
56
57. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//izquierda
glVertex2i(1600-a*i,1600);
glVertex2i(1600-a*i,1700);
//arriva
glVertex2i(1700-a*i,1700);
//derecha
glVertex2i(1700-a*i,1600);
//abajo
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1600-a*i,1700);
glVertex2i(1650-a*i,1750);
//arriva
glVertex2i(1750-a*i,1750);
//derecha
glVertex2i(1700-a*i,1700);
//abajo
glEnd();
Página
57
58. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(1600-a*i,1600);
glVertex2i(1600-a*i,1700);
//arriva
glVertex2i(1600-a*i,1700);
glVertex2i(1700-a*i,1700);
//derecha
glVertex2i(1700-a*i,1700);
glVertex2i(1700-a*i,1600);
//abajo
glVertex2i(1700-a*i,1600);
glVertex2i(1600-a*i,1600);
//diagonal derecha esquina arriva
glVertex2i(1650-a*i,1750);
glVertex2i(1600-a*i,1700);
//linea cuadro atras
//linea cuadro atras
glVertex2i(1650-a*i,1750);
glVertex2i(1750-a*i,1750);
//linea derecha atras
Página
58
59. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1750,1750);
glVertex2i(1750,1650);
//linea abajo derecha diagonal
glVertex2i(1700,1600);
glVertex2i(1750,1650);
//linea arriva derecha diagonal
glVertex2i(1700-a*i,1700);
glVertex2i(1750-a*i,1750);
glEnd();
}
///////////////////////////////////////////////////////////////////////
for(i=0;i<=9;i++){
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
Página
59
60. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//izquierda
glVertex2i(1700,600);
glVertex2i(1700,700);
//arriva
glVertex2i(1750,750);
//derecha
glVertex2i(1750,650);
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1600-a*i,600);
glVertex2i(1600-a*i,700);
//arriva
glVertex2i(1700-a*i,700);
//derecha
glVertex2i(1700-a*i,600);
//abajo
Página
60
61. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1600-a*i,700);
glVertex2i(1650-a*i,750);
//arriva
glVertex2i(1750-a*i,750);
//derecha
glVertex2i(1700-a*i,700);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(1600-a*i,600);
glVertex2i(1600-a*i,700);
Página
61
74. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(200+(50*i),1100+(50*i));
glVertex2i(200+(50*i),1200+(50*i));
//arriva
glVertex2i(250+(50*i),1250+(50*i));
//derecha
glVertex2i(250+(50*i),1150+(50*i));
glEnd();
glColor3f(0.0 ,0.8 ,11.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(100,1100);
glVertex2i(100,1200);
//arriva
glVertex2i(200,1200);
Página
74
75. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//derecha
glVertex2i(200,1100);
//abajo
glEnd();
glColor3f(0.0 ,11.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(100+(50*i),1200+(50*i));
glVertex2i(150+(50*i),1250+(50*i));
//arriva
glVertex2i(250+(50*i),1250+(50*i));
//derecha
glVertex2i(200+(50*i),1200+(50*i));
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,11.0 );
glLineWidth(4);
glBegin(GL_LINES);
Página
75
76. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//cuadro
//izquierda
glVertex2i(100,1100);
glVertex2i(100,1200);
//arriva
glVertex2i(100+(50*i),1200+(50*i));
glVertex2i(200+(50*i),1200+(50*i));
//derecha
glVertex2i(200+(50*i),1200+(50*i));
glVertex2i(200+(50*i),1100+(50*i));
//abajo
glVertex2i(200,1100);
glVertex2i(100,1100);
//diagonal derecha esquina arriva
glVertex2i(150+(50*i),1250+(50*i));
glVertex2i(100+(50*i),1200+(50*i));
//linea cuadro atras
//linea cuadro atras
glVertex2i(150+(50*i),1250+(50*i));
glVertex2i(250+(50*i),1250+(50*i));
//linea derecha atras
glVertex2i(250+(50*i),1250+(50*i));
glVertex2i(250+(50*i),1150+(50*i));
//linea abajo derecha diagonal
glVertex2i(200+(50*i),1100+(50*i));
Página
76
77. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(250+(50*i),1150+(50*i));
//linea arriva derecha diagonal
glVertex2i(200+(50*i),1200+(50*i));
glVertex2i(250+(50*i),1250+(50*i));
glEnd();
}
////////////////////////////////////////////////////////////
for(i=0;i<=9;i++){
glColor3f(11.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(1200+(50*i),1100+(50*i));
glVertex2i(1200+(50*i),1200+(50*i));
//arriva
glVertex2i(1250+(50*i),1250+(50*i));
//derecha
glVertex2i(1250+(50*i),1150+(50*i));
Página
77
78. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glEnd();
glColor3f(0.0 ,0.8 ,11.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100,1100);
glVertex2i(1100,1200);
//arriva
glVertex2i(1200,1200);
//derecha
glVertex2i(1200,1100);
//abajo
glEnd();
glColor3f(0.0 ,11.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100+(50*i),1200+(50*i));
Página
78
79. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1150+(50*i),1250+(50*i));
//arriva
glVertex2i(1250+(50*i),1250+(50*i));
//derecha
glVertex2i(1200+(50*i),1200+(50*i));
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,11.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(1100,1100);
glVertex2i(1100,1200);
//arriva
glVertex2i(1100+(50*i),1200+(50*i));
glVertex2i(1200+(50*i),1200+(50*i));
//derecha
glVertex2i(1200+(50*i),1200+(50*i));
glVertex2i(1200+(50*i),1100+(50*i));
//abajo
glVertex2i(1200,1100);
glVertex2i(1100,1100);
//diagonal derecha esquina arriva
Página
79
80. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1150+(50*i),1250+(50*i));
glVertex2i(1100+(50*i),1200+(50*i));
//linea cuadro atras
//linea cuadro atras
glVertex2i(1150+(50*i),1250+(50*i));
glVertex2i(1250+(50*i),1250+(50*i));
//linea derecha atras
glVertex2i(1250+(50*i),1250+(50*i));
glVertex2i(1250+(50*i),1150+(50*i));
//linea abajo derecha diagonal
glVertex2i(1200+(50*i),1100+(50*i));
glVertex2i(1250+(50*i),1150+(50*i));
//linea arriva derecha diagonal
glVertex2i(1200+(50*i),1200+(50*i));
glVertex2i(1250+(50*i),1250+(50*i));
glEnd();
}
//////////////////////////////////////////////////////////////////////
Página
80
81. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
for(i=0;i<=10;i++){
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(200,100+a*i);
glVertex2i(200,200+a*i);
//arriva
glVertex2i(250,250+a*i);
//derecha
glVertex2i(250,150+a*i);
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(100,100+a*i);
glVertex2i(100,200+a*i);
Página
81
82. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//arriva
glVertex2i(200,200+a*i);
//derecha
glVertex2i(200,100+a*i);
//abajo
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(100,200+a*i);
glVertex2i(150,250+a*i);
//arriva
glVertex2i(250,250+a*i);
//derecha
glVertex2i(200,200+a*i);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
Página
82
83. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(100,100+a*i);
glVertex2i(100,200+a*i);
//arriva
glVertex2i(100,200+a*i);
glVertex2i(200,200+a*i);
//derecha
glVertex2i(200,200+a*i);
glVertex2i(200,100+a*i);
//abajo
glVertex2i(200,100+a*i);
glVertex2i(100,100+a*i);
//diagonal derecha esquina arriva
glVertex2i(150,250+a*i);
glVertex2i(100,200+a*i);
//linea cuadro atras
//linea cuadro atras
glVertex2i(150,250+a*i);
glVertex2i(250,250+a*i);
//linea derecha atras
glVertex2i(250,250+a*i);
glVertex2i(250,150+a*i);
Página
83
84. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//linea abajo derecha diagonal
glVertex2i(200,100+a*i);
glVertex2i(250,150+a*i);
//linea arriva derecha diagonal
glVertex2i(200,200+a*i);
glVertex2i(250,250+a*i);
glEnd();
}
//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
for(i=0;i<=9;i++){
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(1200,1100);
glVertex2i(1200,1200);
//arriva
Página
84
85. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1250,1250);
//derecha
glVertex2i(1250,1150);
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100-a*i,1100);
glVertex2i(1100-a*i,1200);
//arriva
glVertex2i(1200-a*i,1200);
//derecha
glVertex2i(1200-a*i,1100);
//abajo
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
Página
85
86. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100-a*i,1200);
glVertex2i(1150-a*i,1250);
//arriva
glVertex2i(1250-a*i,1250);
//derecha
glVertex2i(1200-a*i,1200);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(1100-a*i,1100);
glVertex2i(1100-a*i,1200);
//arriva
glVertex2i(1100-a*i,1200);
glVertex2i(1200-a*i,1200);
//derecha
glVertex2i(1200-a*i,1200);
Página
86
87. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1200-a*i,1100);
//abajo
glVertex2i(1200-a*i,1100);
glVertex2i(1100-a*i,1100);
//diagonal derecha esquina arriva
glVertex2i(1150-a*i,1250);
glVertex2i(1100-a*i,1200);
//linea cuadro atras
//linea cuadro atras
glVertex2i(1150-a*i,1250);
glVertex2i(1250-a*i,1250);
//linea derecha atras
glVertex2i(1250,1250);
glVertex2i(1250,1150);
//linea abajo derecha diagonal
glVertex2i(1200,1100);
glVertex2i(1250,1150);
//linea arriva derecha diagonal
glVertex2i(1200-a*i,1200);
glVertex2i(1250-a*i,1250);
Página
87
88. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glEnd();
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
for(i=0;i<=9;i++){
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(1200,100);
glVertex2i(1200,200);
//arriva
glVertex2i(1250,250);
//derecha
glVertex2i(1250,150);
Página
88
89. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100-a*i,100);
glVertex2i(1100-a*i,200);
//arriva
glVertex2i(1200-a*i,200);
//derecha
glVertex2i(1200-a*i,100);
//abajo
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100-a*i,200);
Página
89
90. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1150-a*i,250);
//arriva
glVertex2i(1250-a*i,250);
//derecha
glVertex2i(1200-a*i,200);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
glBegin(GL_LINES);
//cuadro
//izquierda
glVertex2i(1100-a*i,100);
glVertex2i(1100-a*i,200);
//arriva
glVertex2i(1100-a*i,200);
glVertex2i(1200-a*i,200);
//derecha
glVertex2i(1200-a*i,200);
glVertex2i(1200-a*i,100);
//abajo
glVertex2i(1200-a*i,100);
glVertex2i(1100-a*i,100);
//diagonal derecha esquina arriva
Página
90
91. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1150-a*i,250);
glVertex2i(1100-a*i,200);
//linea cuadro atras
//linea cuadro atras
glVertex2i(1150-a*i,250);
glVertex2i(1250-a*i,250);
//linea derecha atras
glVertex2i(1250,250);
glVertex2i(1250,150);
//linea abajo derecha diagonal
glVertex2i(1200,100);
glVertex2i(1250,150);
//linea arriva derecha diagonal
glVertex2i(1200-a*i,200);
glVertex2i(1250-a*i,250);
glEnd();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(i=0;i<=10;i++){
Página
91
92. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glColor3f(1.0 ,0.8 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//izquierda
glVertex2i(1200,100+a*i);
glVertex2i(1200,200+a*i);
//arriva
glVertex2i(1250,250+a*i);
//derecha
glVertex2i(1250,150+a*i);
glEnd();
glColor3f(0.0 ,0.8 ,1.0 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100,100+a*i);
glVertex2i(1100,200+a*i);
//arriva
Página
92
93. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(1200,200+a*i);
//derecha
glVertex2i(1200,100+a*i);
//abajo
glEnd();
glColor3f(0.0 ,1.0 ,0.5 );
glLineWidth(8);
glBegin(GL_QUADS);
//cuadro
//izquierda
glVertex2i(1100,200+a*i);
glVertex2i(1150,250+a*i);
//arriva
glVertex2i(1250,250+a*i);
//derecha
glVertex2i(1200,200+a*i);
//abajo
glEnd();
//cuadro
glColor3f(0.0 ,0.0 ,1.0 );
glLineWidth(4);
glBegin(GL_LINES);
Página
93
94. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//cuadro
//izquierda
glVertex2i(1100,100+a*i);
glVertex2i(1100,200+a*i);
//arriva
glVertex2i(1100,200+a*i);
glVertex2i(1200,200+a*i);
//derecha
glVertex2i(1200,200+a*i);
glVertex2i(1200,100+a*i);
//abajo
glVertex2i(1200,100+a*i);
glVertex2i(1100,100+a*i);
//diagonal derecha esquina arriva
glVertex2i(1150,250+a*i);
glVertex2i(1100,200+a*i);
//linea cuadro atras
//linea cuadro atras
glVertex2i(1150,250+a*i);
glVertex2i(1250,250+a*i);
//linea derecha atras
glVertex2i(1250,250+a*i);
glVertex2i(1250,150+a*i);
Página
94
95. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
//linea abajo derecha diagonal
glVertex2i(1200,100+a*i);
glVertex2i(1250,150+a*i);
//linea arriva derecha diagonal
glVertex2i(1200,200+a*i);
glVertex2i(1250,250+a*i);
glEnd();
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
Página
95
96. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(500,500); //tamaño de la ventana
glutInitWindowPosition(0,0); //posicion inicial de la ventana
glutCreateWindow("cubo3d"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
96
97. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Muñeco con formas
En esta actividad realizaremos un muñeco con la
que ya hemos aprendido pero ahora más detallado
Borrador con coordenadas utilizadas:
glBegin(GL_POINTS);
glBegin(GL_TRIANGLE_FAN);
glBegin(GL_QUADS);
glBegin(GL_POLYGON);
glBegin(GL_TRIANGLES);
glBegin(GL_LINES);
Código
//mi primer ventana
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
void inicializa(void)
{
glClearColor(1.0,1.0,1.0,0.0); //color de fondo
glMatrixMode(GL_PROJECTION); //Modo de proyeccion
Página
97
98. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glLoadIdentity(); //Establece los parametros de proyeccion
gluOrtho2D(0.0, 800.0, 0.0, 800.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();
Página
98
103. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
circulo(595,330,35);
circulo(110,330,35);
glFlush(); //forza dibujo
}
int main (int argc, char** argv) //metodo main
{
glutInit(&argc, argv); //incializa GLUT
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //establece el modo de
visualización
glutInitWindowSize(700,700); //tamaño de la ventana
glutInitWindowPosition(100,100); //posicion inicial de la ventana
glutCreateWindow("Ventana"); //nombre de la ventana
inicializa();
glutDisplayFunc(dibuja); //Envia los graficos a la ventana de visualización
glutMainLoop(); //muestra todo y espera
return 0; //retorna un valor de cero
}
Página
103
104. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Página
104
105. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Sistema solar
En este ejercicio tenemos que hacer un sistema
solar con el sol y sus planetas girando alrededor
de este.
Borrador con coordenadas utilizadas
glBegin(GL_POINTS);
for (angulo=0;angulo<=360; angulo+=1){
glVertex2f(x + sin(angulo) * radio, y +
cos(angulo) * radio);}
glEnd();
glBegin(GL_TRIANGLE_FAN);
Código
#include <unistd.h>w
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int rad=500;
double ang=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;
void inicializa(void)
{
Página
105
106. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1800.0, 0.0, 1800.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);
glVertex2f(x,y);
Página
106
107. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
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
glColor3f(1.0,1.0,0.0);
circulo( 900,900,60); //funcion circulo
glColor3f(0.0,0.0,1.0);
circulo( 900+ sin(ang) * 120,900 + cos(ang) * 120,5);
circuloc(900,900,1,120);
glColor3f(0.0,1.0,0.1);
circulo( 900+ sin(a) * 250,900 + cos(a) * 250,10);
circuloc(900,900,2,250);
glColor3f(0.4,0.0,1.0);
circulo( 900+ sin(b) * 350,900 + cos(b) * 350,15);
circuloc(900,900,2,350);
Página
107
109. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
a=a+0.09;
b=b+0.08;
c=c+0.07;
d=d+0.06;
e=e+0.05;
f=f+0.04;
g=g+0.03;
h=h+0.02;
i=i+0.03;
ang=ang+0.01; //velocidad entre mas grande mas rapido y entre menos mas lento
for(int j=1;j<=10000000;j++){}//pausa
if(ang==360){ang=0;}// se repite idefinidamente
glFlush(); //forzar dibujado
glutSwapBuffers(); //y esto
}
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);//esto
tambien
glutInitWindowSize(1000,1000);
glutInitWindowPosition(10,10);
Página
109
110. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glutCreateWindow("Ventana");
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);//esto es lo que cambia
glutMainLoop();
return 0;
}
Página
110
111. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Movimiento en 8
En esta actividad tenemos que hacer como una
pista de carreras en donde salga un circulo
moviéndose por todo el ocho son salirse se la
línea limite.
Borrador con coordenadas utilizadas:
glBegin(GL_TRIANGLE_FAN);
for (angulo=0;angulo<=360; angulo+=6){
glVertex2f(x + sin(angulo) * radio, y +
cos(angulo) * radio);}
Código
#include <unistd.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <math.h>
int x=1, x2=1,y=1;
double a=6.15, b=6.15;
void inicializa(void){
glClearColor(0.8,0.5,0.3,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
Página
111
112. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
gluOrtho2D(0.0, 700.0, 0.0, 700.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.0, 0.5, 0.1);
circulo(310, 310, 80);
circulo(310,190,80);
glColor3f(1.0,0.0,0.0);
circulo(310,310,40);
circulo(310,190,40);
glColor3f(0.0,0.0,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);
Página
112
113. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
b=b + 0.25;
if(b>12.4){a=6.15;b=6.15;}
for(int j=0; j<=10000000; j++) {}
}
glFlush();
glutSwapBuffers();
}
int main (int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA| GLUT_DEPTH);
glutInitWindowSize(700,700);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
inicializa();
Página
113
114. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
Página
114
115. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
Semáforo
En esta práctica lo que tenemos que hacer es un
semáforo que cambie de color como si fuera un
semáforo real de verde, amarillo y rojo y asi
sucesivamente.
Borrador con coordenadas utilizadas;
glBegin(GL_TRIANGLE_FAN);
for (angulo=0;angulo<=360; angulo+=6){
glVertex2f(x + sin(angulo) * radio, y +
cos(angulo) * radio);}
glBegin(GL_QUADS);
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,0.0,0.0);
glMatrixMode(GL_PROJECTION);
Página
115
116. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glLoadIdentity();
gluOrtho2D(0.0, 1800.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);
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.0,0.0,0.0);
if(x>=1 && x<800){
circulo(100+1*x,700,20);
glFlush();
x++;
}
glColor3f(.0,0.0,0.0);
if(y>=1 && y<600 && x==800){
circulo(900,700-y,20);
glFlush();
Página
116
118. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
glVertex2i(800,0);
glVertex2i(900,0);
glVertex2i(900,290);
glEnd();
glFlush();
glColor3f(0.0,0.0,0.0);
circulo(850,600,50);
glColor3f(0.0,0.0,0.0);
circulo(850,480,50);
circulo(850,350,50);
glColor3f(1.0,0.0,0.0);
if(x>=1 && x<800){
circulo(850,600,50);
glFlush();
x++;
}
glColor3f(1.0,1.0,0.0);
if(y>=1 && y<600 && x==800){
circulo(850,480,50);
glFlush();
y++;
Página
118
119. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
}
glColor3f(0.0,1.0,0.0);
if(w>=1 && w<800 && y==600 && x==800){
circulo(850,350,50);
glFlush();
w++;
}
glColor3f(0.0,1.0,0.0);
if(z>=1 && z<600 && y==600 && x==800 && w==800){
circulo(950,450,60);
glFlush();
z++;
{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(1200,600);
glutInitWindowPosition(10,10);
glutCreateWindow("Ventana");
Página
119
120. COLEGIO DE ESUDIOS CIENTIFICOS Y TECNOLOGICOS DEL
ESTADO DE MEXCO
inicializa();
glutDisplayFunc(dibuja);
glutIdleFunc(dibuja);
glutMainLoop();
return 0;
}
Página
120