manual de prácticas belmonte & ponce
DESCRIPTION
TRANSCRIPT
![Page 1: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/1.jpg)
CECyTEM PLANTEL TECÁMAC
Manual de prácticas en OPEN GL “Dev C++”
Alumnos: Belmonte Vargas Baruch Isaí
Ponce Serrano Carlos Andrés
Prof.: René Domínguez Escalona
Grupo: 303
![Page 2: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/2.jpg)
Introducción. En este manual se podrá apreciar algunas de las principales funciones del lenguaje de programación de OPEN GL y así se podrá aplicar para diseño gráfico, se mostraran funciones principales o primitivas del programa para la realización de objetos en el programa se verá desde lo más básico hasta lo más avanzado como puede ser desde la elaboración de un cuadro hasta la animación de un objeto en 2D & 3D.
![Page 3: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/3.jpg)
Índice.
1°- Tablero de Ajedrez
2°-Estrella
3°- Cubo con líneas
4°-Cubo delineado
5°-Muñeco con triángulos
6°-Piramide
7°-Casita
8°- Oso
9°-Cubo con Cubitos
10°-Muñeco con formas
11°-Animación circulo
12°- Nombre 3D
13°-Animación sistema solar
14°-Movimiento en ocho
15°-Semaforo
16°- Cubo 3D con líneas.
![Page 4: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/4.jpg)
1° TABLERO DE AJEDREZ
En esta práctica aremos un tablero de ajedrez con cuadros unos negro y uno blanco de 8*8. La realizaremos con la primitiva GL_POINTS, comenzaremos por definir el color de cada cuadro con glColor3f(0.0 , 0.0 , 0.0) que sería negro, luego el tamaño del punto glPointSize(50) y en seguida anotaremos la primitiva ya mencionada glBegin(GL_POINTS).
Luego de esto se pondrán las coordenadas glVertex2i(100,800); por ejemplo deberán de ser 4 coordenadas para insertar un cuadro
glVertex2i(100,500);
glVertex2i(100,600);
glVertex2i(100,700);
glVertex2i(100,800);
y así lo haremos consecutivamente hasta lograr hacer el tablero indicado.
CODIGO:
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(100,500);
glVertex2i(100,600);
![Page 5: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/5.jpg)
glVertex2i(100,700);
glVertex2i(100,800);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(150,500);
glVertex2i(150,600);
glVertex2i(150,700);
glVertex2i(150,800);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(100,550);
glVertex2i(100,650);
glVertex2i(100,750);
glVertex2i(100,850);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(150,550);
glVertex2i(150,650);
![Page 6: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/6.jpg)
glVertex2i(150,750);
glVertex2i(150,850);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(200,500);
glVertex2i(200,600);
glVertex2i(200,700);
glVertex2i(200,800);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(200,500);
glVertex2i(200,600);
glVertex2i(200,700);
glVertex2i(200,800);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(200,550);
glVertex2i(200,650);
![Page 7: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/7.jpg)
glVertex2i(200,750);
glVertex2i(200,850);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(250,500);
glVertex2i(250,600);
glVertex2i(250,700);
glVertex2i(250,800);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(250,550);
glVertex2i(250,650);
glVertex2i(250,750);
glVertex2i(250,850);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(300,500);
glVertex2i(300,600);
![Page 8: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/8.jpg)
glVertex2i(300,700);
glVertex2i(300,800);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(300,550);
glVertex2i(300,650);
glVertex2i(300,750);
glVertex2i(300,850);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(350,500);
glVertex2i(350,600);
glVertex2i(350,700);
glVertex2i(350,800);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(350,550);
glVertex2i(350,650);
![Page 9: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/9.jpg)
glVertex2i(350,750);
glVertex2i(350,850);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(400,500);
glVertex2i(400,600);
glVertex2i(400,700);
glVertex2i(400,800);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(400,550);
glVertex2i(400,650);
glVertex2i(400,750);
glVertex2i(400,850);
glColor3f(1.0 , 1.0 , 1.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(450,500);
glVertex2i(450,600);
![Page 10: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/10.jpg)
glVertex2i(450,700);
glVertex2i(450,800);
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_POINTS);
glVertex2i(450,550);
glVertex2i(450,650);
glVertex2i(450,750);
glVertex2i(450,850);
glEnd();
![Page 11: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/11.jpg)
2° ESTRELLA
En esta práctica haremos una estrella a base de líneas con la primitiva glBegin(GL_LINES), definiremos en tamaño de la línea y el color con:
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
y comenzaremos a anotar cada una de las coordenadas para así llegar a la forma de la estrella.
CODIGO:
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glBegin(GL_LINES);
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(174,300);
glVertex2i(425,300);
glBegin(GL_LINES);
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(200,150);
glVertex2i(425,300);
glBegin(GL_LINES);
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
![Page 12: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/12.jpg)
glVertex2i(200,150);
glVertex2i(300,400);
glBegin(GL_LINES);
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(300,400);
glVertex2i(400,150);
glBegin(GL_LINES);
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(400,150);
glVertex2i(175,300);
glEnd();
![Page 13: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/13.jpg)
3° CUBO CON LÍNEAS
En esta práctica utilizaremos 2 primitivas glBegin(GL_QUADS) para hacer cuadros y glBegin(GL_LINES); para hacer las líneas igual que practicas anteriores definiremos el color de la línea o cuadro con glColor3f(1.0 , 0.0 , 0.0);.
Primero haremos la parte trasera del cubo para que se noten las líneas de enfrente y no estén cubiertas por las demás líneas o cuadros.
Y de igual forma definiremos cada coordenada hasta lograr el cubo con líneas.
CODIGO:
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glColor3f(0.0 , 0.0 , 0.0);
glPointSize(50);
glBegin(GL_LINES);
glVertex2i(200, 100);
glVertex2i(300, 100);
glVertex2i(200, 100 );
glVertex2i(200, 200);
glVertex2i(200, 200);
glVertex2i(300, 200);
glVertex2i(300, 200);
glVertex2i(300, 100);
![Page 14: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/14.jpg)
glVertex2i(250, 150);
glVertex2i(200, 100);
glVertex2i(250, 150);
glVertex2i(350, 150);
glVertex2i(350, 150);
glVertex2i(300, 100);
glVertex2i(250, 150);
glVertex2i(250, 250);
glVertex2i(250, 250);
glVertex2i(200, 200);
glVertex2i(250, 250);
glVertex2i(350, 250);
glVertex2i(350, 250);
glVertex2i(300, 200);
glVertex2i(350, 250);
glVertex2i(350, 150);
glEnd();
![Page 15: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/15.jpg)
4°CUBO DELINEADO
Esta práctica la haremos como la práctica de CUBO CON LÍNEAS lo único que modificaremos será el grosor de la línea con la instrucción glLineWidth(3) el tamaño de la línea será colocado dentro del paréntesis y le modificaremos el color de cada lado para ver así la separación de cada lado.
CODIGO:
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glLineWidth(5);
//enfrente
glBegin(GL_QUADS);
glColor3f(1.0 , 0.0 , 0.0);
glVertex2i(200,200);
glVertex2i(300,200);
glVertex2i(300,200);
![Page 16: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/16.jpg)
glVertex2i(300,100);
glVertex2i(300,100);
glVertex2i(200,100);
glVertex2i(200,100);
glVertex2i(200,200);
//derecha
glColor3f(0.0 , 0.0 , 1.0);
glVertex2i(300,200);
glVertex2i(350,250);
glVertex2i(350,250);
glVertex2i(350,150);
glVertex2i(350,150);
glVertex2i(300,100);
glVertex2i(300,100);
glVertex2i(300,200);
//arriba
glColor3f(.0 , 1.0 , 0.0);
glVertex2i(200,200);
glVertex2i(250,250);
glVertex2i(250,250);
glVertex2i(350,250);
glVertex2i(350,250);
glVertex2i(300,200);
glVertex2i(300,200);
glVertex2i(200,200);
![Page 17: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/17.jpg)
glEnd();
//enfrente
glLineWidth(5);
glBegin(GL_LINES);
glColor3f(0.0 , 0.0 , 0.0);
glVertex2i(200,200);
glVertex2i(300,200);
glVertex2i(300,200);
glVertex2i(300,100);
glVertex2i(300,100);
glVertex2i(200,100);
glVertex2i(200,100);
glVertex2i(200,200);
//derecha
glVertex2i(300,200);
glVertex2i(350,250);
glVertex2i(350,250);
glVertex2i(350,150);
glVertex2i(350,150);
glVertex2i(300,100);
glVertex2i(300,100);
glVertex2i(300,200);
//arriba
![Page 18: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/18.jpg)
glVertex2i(200,200);
glVertex2i(250,250);
glVertex2i(250,250);
glVertex2i(350,250);
glVertex2i(350,250);
glVertex2i(300,200);
glVertex2i(300,200);
glVertex2i(200,200);
glEnd();
![Page 19: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/19.jpg)
5°MUÑECO CON TRIÁNGULOS
En esta práctica haremos un muñeco utilizando una nueva primitiva glBegin(GL_TRIANGLES) y también primitivas ya utilizadas antes.
Para esta instrucción se necesitan 3 coordenadas ya no 2 como en las instrucciones glBegin(GL_QUADS) o glBegin(GL_LINES)
De igual forma trataremos de encontrar cada una de las coordenadas para lograr el dibujo a base de triángulos y si es necesario ocuparemos otras primitivas.
Como en el caso del balón también se utiliza una nueva primitiva glBegin(GL_POLYGON) a base de 8 coordenadas.
También utilizamos colores degradados. Estos se logran colocando la instrucción de color entre las coordenadas y no solo poniéndole hasta arriba de cada grupo de coordenadas por ejemplo:
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(320,100);
glVertex2i(340,100);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(360,80);
glVertex2i(360,60);
glVertex2i(340,40);
glVertex2i(320,40);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(300,60);
glVertex2i(300,80);
CODIGO:
void dibuja(void) //funcion dibuja
{
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
![Page 20: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/20.jpg)
glPointSize(10);
//pasto
glBegin(GL_QUADS);
glColor3f(0.0 , 1.0 , 0.0);
glVertex2i(0,60);
glVertex2i(1000,60);
glVertex2i(1000,0);
glVertex2i(0,0);
glEnd();
// pie izquierdo
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 0.0 , 0.0);
glVertex2i(140,40);
glVertex2i(200,40);
glVertex2i(160,60);
//pie derecho
glColor3f(1.0 , 0.0 , 0.0);
glVertex2i(300,100);
glVertex2i(320,120);
glVertex2i(360,100);
glEnd();
![Page 21: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/21.jpg)
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 0.0 , 1.0);
//pierna izquierda
glVertex2i(200,40);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(160,160);
glVertex2i(200,200);
glEnd();
//muslo derecho
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(240,200);
glVertex2i(240,160);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(320,160);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 1.0 , 0.0);
//brazo izquierdo
![Page 22: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/22.jpg)
glVertex2i(160,320);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(100,260);
glVertex2i(120,200);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0 , 1.0 , 0.0);
//brazo derecho
glVertex2i(280,320);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(340,260);
glVertex2i(320,200);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 0.0 , 1.0);
//chamorro derecho
glVertex2i(320,160);
glVertex2i(280,140);
glVertex2i(300,100);
//mano izq
glVertex2i(100,260);
![Page 23: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/23.jpg)
glVertex2i(60,240);
glVertex2i(80,280);
//mano derecha
glVertex2i(340,260);
glVertex2i(360,280);
glVertex2i(380,240);
//cabeza
glVertex2i(220,320);
glVertex2i(260,400);
glVertex2i(180,400);
glEnd();
//gorro
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(140,400);
glVertex2i(220,440);
glVertex2i(300,400);
glEnd();
//base trofeo
![Page 24: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/24.jpg)
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(400,200);
glVertex2i(440,180);
glVertex2i(360,180);
//trofeo izq
glVertex2i(400,200);
glVertex2i(340,340);
glVertex2i(360,320);
glVertex2i(360,320);
glVertex2i(380,340);
glVertex2i(340,340);
//trofeo der
glVertex2i(400,200);
glVertex2i(460,340);
glVertex2i(440,320);
glVertex2i(440,320);
glVertex2i(460,340);
glVertex2i(420,340);
//trofeo
glVertex2i(400,200);
![Page 25: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/25.jpg)
glVertex2i(420,340);
glVertex2i(380,340);
glEnd();
glBegin(GL_QUADS);
glColor3f(0.0 , 1.0 , 0.0);
//cuerpo
glVertex2i(160,320);
glVertex2i(280,320);
glVertex2i(280,200);
glVertex2i(160,200);
glEnd();
//cuello
glBegin(GL_TRIANGLES);
glColor3f(1.0 , 0.0 , 1.0);
glVertex2i(200,320);
glVertex2i(240,320);
glVertex2i(220,300);
glEnd();
glBegin(GL_POLYGON);
glColor3f(1.0 , 1.0 , 0.0);
![Page 26: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/26.jpg)
//balon
glVertex2i(320,100);
glVertex2i(340,100);
glColor3f(1.0 , 1.0 , 1.0);
glVertex2i(360,80);
glVertex2i(360,60);
glVertex2i(340,40);
glVertex2i(320,40);
glColor3f(1.0 , 1.0 , 0.0);
glVertex2i(300,60);
glVertex2i(300,80);
glEnd();
![Page 27: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/27.jpg)
6° PIRAMIDE
Esta práctica la haremos con una nueva instrucción llamada FOR: for (i=0;i<=10;i++){ dentro de ella podemos cambiar los valores, esta instrucción funciona para repetir alguna primitiva, ya sea cuadros, líneas etc….
En esta ocasión la utilizaremos para repetir un cuadro pero que vaya aumentando su tamaño a cierta distancia
La instrucción va antes de que empecemos a colocar las coordenadas, y pondremos la variable dentro de las coordenadas, en este caso la variable es i y colocando esta variable hará la instrucción for.
Por ejemplo:
glVertex2i(240-20*i,240-20*i);
glVertex2i(260+20*i,240-20*i);
El 240 en el valor de x, el -20 es la separación entre el cuadro y se multiplicara por i que es la variable con la cual se efectuara el mismo cuadro.
Luego de Esto haremos las líneas diagonales para simular la pirámide vista desde arriba.
CODIGO:
void dibuja(void) //funcion dibuja
{
int i;
glClear(GL_COLOR_BUFFER_BIT); //borra pantalla
glPointSize(10);
glColor3f(0.0 , 0.0 , 0.0);
glBegin(GL_LINES);
for (i=0;i<=10;i++){
//ABAJO
![Page 28: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/28.jpg)
glVertex2i(240-20*i,240-20*i);
glVertex2i(260+20*i,240-20*i);
//derecha
glVertex2i(260+20*i,240-20*i);
glVertex2i(260+20*i,260+20*i);
//izquierda
glVertex2i(240-20*i,240-20*i);
glVertex2i(240-20*i,260+20*i);
//ARRIBA
glVertex2i(240-20*i,260+20*i);
glVertex2i(260+20*i,260+20*i);
}
glVertex2i(240,240);
glVertex2i(220,220);
glVertex2i(260,240);
glVertex2i(280,220);
glVertex2i(220,280);
glVertex2i(240,260);
glVertex2i(280,280);
glVertex2i(260,260);
glVertex2i(200, 300);
glVertex2i(180, 320);
![Page 29: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/29.jpg)
glVertex2i(160, 340);
glVertex2i(140, 360);
glVertex2i(120, 380);
glVertex2i(100, 400);
glVertex2i(80, 420);
glVertex2i(60, 440);
glVertex2i(300, 300);
glVertex2i(320, 320);
glVertex2i(340, 340);
glVertex2i(360, 360);
glVertex2i(380, 380);
glVertex2i(400, 400);
glVertex2i(420, 420);
glVertex2i(440, 440);
glVertex2i(240, 240);
glVertex2i(220, 220);
![Page 30: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/30.jpg)
glVertex2i(200, 200);
glVertex2i(180, 180);
glVertex2i(160, 160);
glVertex2i(140, 140);
glVertex2i(120, 120);
glVertex2i(100, 100);
glVertex2i(80, 80);
glVertex2i(60, 60);
glVertex2i(300,200);
glVertex2i(320,180);
glVertex2i(340,160);
glVertex2i(360,140);
glVertex2i(380,120);
glVertex2i(400,100);
glVertex2i(420,80);
glVertex2i(440,60);
glEnd();
![Page 31: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/31.jpg)
7° CASITA.
Esta práctica es como un repaso de todas las primitivas e instrucciones vistas anteriormente. Para lograr dicho dibujo empezaremos por hacer los objetos de atrás para delante para que se puedan notar todas las figuras.
Por ejemplo primero haremos la cerca con la instrucción for y se haga repetitiva la figura y esta figura será hecha con la primitiva POLYGON.
De igual forma ocuparemos for para los pinos, pero primero tenemos que hacer el pasto como ya antes mencionamos haremos primero lo que se encuentra atrás.
Rejas, pasto, banqueta, calle, piedras y así sucesivamente, hasta llegar a los detalles de la casa que serían las ultimas figuras que haremos.
CODIGO:
void dibuja(void)
{
int i,j=0;
![Page 32: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/32.jpg)
/* borra la pantalla */
glClear(GL_COLOR_BUFFER_BIT);
//rejas
for(i=0;i<50;i++){
glBegin(GL_POLYGON);
glColor3f (2.0, 0.3, 0.0);
glVertex2f(0+20*i,292);
glVertex2f(5+20*i,300);
glVertex2f(10+20*i,292);
glVertex2f(10+20*i,240);
glVertex2f(0+20*i,240);
glEnd();
}
glBegin(GL_QUADS);
glVertex2i(0,289);
glVertex2i(1000,289);
glVertex2i(1000,280);
glVertex2i(0,280);
//pasto
glColor3f (0.0, 0.5, 0.0);
glVertex2i(0,240);
glVertex2i(1000,240);
glVertex2i(1000,120);
![Page 33: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/33.jpg)
glVertex2i(0,120);
//banqueta
glColor3f (0.6, 0.6, 0.6);
glVertex2i(0,120);
glVertex2i(1000,120);
glVertex2i(1000,90);
glVertex2i(0,90);
glColor3f (1.0, 1.0, 0.0);
glVertex2i(0,90);
glVertex2i(1000,90);
glVertex2i(1000,82);
glVertex2i(0,82);
//calle
glColor3f (0.3, 0.3, 0.3);
glVertex2i(0,82);
glVertex2i(1000,82);
glVertex2i(1000,0);
glVertex2i(0,0);
//piedras
glColor3f (0.6, 0.6, 0.6);
glVertex2i(105,180);
glVertex2i(135,180);
glVertex2i(135,165);
glVertex2i(105,165);
![Page 34: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/34.jpg)
glVertex2i(165,180);
glVertex2i(195,180);
glVertex2i(195,165);
glVertex2i(165,165);
glVertex2i(105,150);
glVertex2i(135,150);
glVertex2i(135,135);
glVertex2i(105,135);
glVertex2i(165,150);
glVertex2i(195,150);
glVertex2i(195,135);
glVertex2i(165,135);
//entrada
glVertex2i(345,195);
glVertex2i(405,195);
glVertex2i(405,120);
glVertex2i(345,120);
// Casa
glColor3f (0.2, 0.5, 1.0);
glVertex2i(210,450);
glVertex2i(540,450);
glVertex2i(540,195);
![Page 35: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/35.jpg)
glVertex2i(210,195);
// Techo casa
glColor3f (0.7, 0.6, 1.0);
glVertex2i(210,495);
glVertex2i(540,495);
glVertex2i(585,450);
glVertex2i(165,450);
// Techo cochera
glVertex2i(75,345);
glVertex2i(210,345);
glVertex2i(210,315);
glVertex2i(60,315);
//Cortina
glColor3f (0.9, 0.9, 0.9);
glVertex2i(90,315);
glVertex2i(210,315);
glVertex2i(210,195);
glVertex2i(90,195);
//Puerta
glColor3f (1.0, 1.0, 1.0);
glVertex2i(345,300);
glVertex2i(405,300);
glVertex2i(405,195);
glVertex2i(345,195);
![Page 36: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/36.jpg)
//Columnas
glColor3f (0.0, 1.0, 1.0);
glVertex2i(75,315);
glVertex2i(90,315);
glVertex2i(90,195);
glVertex2i(75,195);
glVertex2i(210,330);
glVertex2i(540,330);
glVertex2i(540,315);
glVertex2i(210,315);
glVertex2i(330,435);
glVertex2i(345,435);
glVertex2i(345,195);
glVertex2i(330,195);
glVertex2i(405,435);
glVertex2i(420,435);
glVertex2i(420,195);
glVertex2i(405,195);
//Ventanas izq
glColor3f (0.8, 0.8, 1.0);
![Page 37: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/37.jpg)
glVertex2i(240,435);
glVertex2i(300,435);
glVertex2i(300,375);
glVertex2i(240,375);
glVertex2i(240,300);
glVertex2i(300,300);
glVertex2i(300,240);
glVertex2i(240,240);
//Ventanas der
glVertex2i(450,435);
glVertex2i(510,435);
glVertex2i(510,375);
glVertex2i(450,375);
glVertex2i(450,300);
glVertex2i(510,300);
glVertex2i(510,240);
glVertex2i(450,240);
//Ventanas balcon
glVertex2i(345,435);
glVertex2i(405,435);
glVertex2i(405,330);
glVertex2i(345,330);
![Page 38: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/38.jpg)
//Ventanas puerta
glVertex2i(360,285);
glVertex2i(390,285);
glVertex2i(390,210);
glVertex2i(360,210);
//Tallos
glColor3f (0.6, 0.4, 0.2);
glVertex2i(670,225);
glVertex2i(700,225);
glVertex2i(700,150);
glVertex2i(670,150);
glVertex2i(875,225);
glVertex2i(905,225);
glVertex2i(905,150);
glVertex2i(875,150);
glEnd();
glBegin(GL_TRIANGLES);
// Techo balcon
glColor3f (0.7, 0.3, 1.0);
glVertex2i(375,480);
glVertex2i(435,435);
![Page 39: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/39.jpg)
glVertex2i(315,435);
glEnd();
//arboles
glLineWidth (4);
glBegin(GL_LINES);
glColor3f (0.0, 0.7, 0.0);
for(i=0;i<32;i++){
glVertex2i(680-3*i,540-10*j);
glVertex2i(690+3*i,540-10*j);
glVertex2i(685-3*i,535-10*j);
glVertex2i(695+3*i,535-10*j);
glVertex2i(885-3*i,540-10*j);
glVertex2i(895+3*i,540-10*j);
glVertex2i(890-3*i,535-10*j);
glVertex2i(900+3*i,535-10*j);
j=j+1;
}
glEnd();
//Linea Calle
glLineWidth (4);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_LINES);
for(i=0;i<50;i++){
![Page 40: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/40.jpg)
glVertex2i(0+120*i,41);
glVertex2i(90+120*i,41);
}
//Barandal
glVertex2i(344,375);
glVertex2i(406,375);
for(i=0;i<7;i++){
glVertex2i(345+10*i,375);
glVertex2i(345+10*i,330);
}
//Divicion Ventana
glVertex2i(240,262);
glVertex2i(300,262);
glVertex2i(240,397);
glVertex2i(300,397);
glVertex2i(450,397);
glVertex2i(510,397);
glVertex2i(450,262);
glVertex2i(510,262);
glVertex2i(375,434);
glVertex2i(375,375);
glVertex2i(270,397);
glVertex2i(270,375);
glVertex2i(270,262);
glVertex2i(270,240);
![Page 41: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/41.jpg)
glVertex2i(480,397);
glVertex2i(480,375);
glVertex2i(480,262);
glVertex2i(480,240);
glEnd();
//Contorno ventanas
glBegin(GL_LINE_LOOP);
glVertex2i(240,435);
glVertex2i(300,435);
glVertex2i(300,375);
glVertex2i(240,375);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2i(240,300);
glVertex2i(300,300);
glVertex2i(300,240);
glVertex2i(240,240);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2i(450,435);
glVertex2i(510,435);
glVertex2i(510,375);
![Page 42: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/42.jpg)
glVertex2i(450,375);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2i(450,300);
glVertex2i(510,300);
glVertex2i(510,240);
glVertex2i(450,240);
glEnd();
//Chapa
glPointSize(4);
glColor3f (0.0, 0.0, 0.0);
glBegin(GL_POINTS);
glVertex2i(352,247);
glVertex2i(352,245);
glEnd();
![Page 43: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/43.jpg)
8°- Oso
Esta practica la logramos hacer por medio de una nueva instruccion, la instruccion la llamaremos circulo.
Para lograr esto incluiremos la paqueteria #include <math.h> para que formule nuestras operaciones matematicas.
nuestras instrucción se llamara circuloc devido a que solo será la circunferencia
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();
}
y con circulo haremos un circulo con area
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);
![Page 44: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/44.jpg)
for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}
glEnd();
}
Y así juntaremos las coordenadas hasta lograr hacer un oso.
CODIGO:
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);
![Page 45: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/45.jpg)
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);
//panza
glColor3f(0.6,0.4,0.2); //borra pantalla
circulo(280,200,100);
glColor3f(0.7,0.5,0.4);
circulo(280,200,60);
//pie izq
glColor3f(0.6,0.4,0.2);
circulo(190,100,40);
glColor3f(0.7,0.5,0.4);
circulo(190,100,20);
//pie der
glColor3f(0.6,0.4,0.2);
circulo(370,100,40);
glColor3f(0.7,0.5,0.4);
circulo(370,100,20);
![Page 46: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/46.jpg)
//mano derecha
glColor3f(0.6,0.4,0.2);
circulo(390,280,40);
glColor3f(0.7,0.5,0.4);
circulo(390,280,20);
//mano izq
glColor3f(0.6,0.4,0.2);
circulo(170,280,40);
glColor3f(0.7,0.5,0.4);
circulo(170,280,20);
//cabeza
glColor3f(0.6,0.4,0.2);
circulo(280,350,60);
//oreja izq
glColor3f(0.6,0.4,0.2);
circulo(220,400,20);
glColor3f(0.7,0.5,0.4);
circulo(220,400,10);
//oreja dere
glColor3f(0.6,0.4,0.2);
circulo(340,400,20);
glColor3f(0.7,0.5,0.4);
circulo(340,400,10);
//ojo izq
![Page 47: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/47.jpg)
glColor3f(1.0,1.0,1.0);
circulo(260,370,20);
glColor3f(0.0,0.5,0.4);
circulo(260,370,5);
//ojo der
glColor3f(1.0,1.0,1.0);
circulo(300,370,10);
glColor3f(0.0,0.5,0.4);
circulo(300,370,5);
//nariz
glColor3f(0.0,0.0,0.0);
circulo(280,340,10);
glEnd();
glBegin(GL_LINES);
glColor3f(0.0,0.0,0.0);
glVertex2i(280,330);
glVertex2i(280,310);
glVertex2i(250,310);
glVertex2i(310,310);
glEnd();
![Page 48: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/48.jpg)
9°-Cubo con Cubitos
Esta practica esta un poco complicada devido a que utilizaremos una funcion for pero multiplicaremos todo un cubo. para arriba a los lados creando solo el prerimetro de uno más grande pero tenemos que tomar en cuenta los cubos que ya estan hechos para que no se deformen o salga una linea más grande que otra.
10°-Muñeco con formas.
Este muñeco es facil de hacer ya que utilizaremos todas las primitivas he instruciones ya vistas pero las uniremos y cambiaremos su color.
11°-Animación circulo
Haremos que un circulo se mueva alrededor de la pantalla con una instruccion nueva.
CODIGO:
void circulo
(int x, int y, int radio)
{
![Page 49: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/49.jpg)
int angulo=0;
glBegin(GL_TRIANGLE_FAN);
glColor3f (0.12, 0.48, 0.62);
glVertex2f(x,y);
glColor3f(0.20,0.84,0.23);
for (angulo=0;angulo<=360; angulo+=6)
{
glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);
}
glEnd();
}
void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(x>=1 && x<600){
circulo(100+x,100,40);
glFlush();
x++;
![Page 50: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/50.jpg)
}
if(y>=1 && y<600 && x==600){
circulo(700,100+y,40);
glFlush();
y++;
}
if(z>=1 && z<600 && x==600 && y==600 ){
circulo(700-z,700,40);
glFlush();
z++;
}
if(i>=1 && i<600 && x==600 && y==600 && z==600){
circulo(100,700-i,40);
glFlush();
i++;
if(i==600){i=1;z=1;x=1; y=1;}
}
glutSwapBuffers();
![Page 51: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/51.jpg)
12°- Nombre 3D Este nombre se hará a base se cubitos se ira poniendo uno tras otro, aquí las coordenadas cambiaran, cada que se haga un cubo ese cubo tendra las coordenadas 0,0 y al ultimo solo modificaremos los colores.
![Page 52: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/52.jpg)
CODIGO:
void mover(void){
glTranslated(0,0,zoom);
glRotated(girax,1.0,0.0,0.0);
glRotated(giray,0.0,1.0,0.0);
}
void creaMalla(void){
int i, long_eje=10;
glColor3f(1.0,1.0,0.0);
glBegin(GL_LINES);
for(i=-long_eje;i<=long_eje;i++){
glVertex3f(i,-long_eje,0);
glVertex3f(i,long_eje,0);
glVertex3f(-long_eje,i,0);
glVertex3f(long_eje,i,0);
glVertex3f(i,0,-long_eje);
glVertex3f(i,0,long_eje);
glVertex3f(-long_eje,0,i);
glVertex3f(long_eje,0,i);
}
glEnd();
}
void creaEjes(void){
![Page 53: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/53.jpg)
glColor3f(0.0,0.0,0.0);
glBegin(GL_LINES);
glColor3f(0.0,0.0,1.0);
glVertex3f(-11.0,0.0,0.0);
glVertex3f(11.0,0.0,0.0);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,-11.0,0.0);
glVertex3f(0.0,11.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,-11.0);
glVertex3f(0.0,0.0,11.0);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0,0.0,1.0);
glVertex3f(11.0,0.0,0.0);
glVertex3f(10.5,0.0,-.50);
glVertex3f(10.5,0.0,.50);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,11.0,0.0);
glVertex3f(-.50,10.5,0.0);
glVertex3f(.50,10.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,11.0);
glVertex3f(-.50,0.0,10.5);
![Page 54: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/54.jpg)
glVertex3f(.50,0.0,10.5);
//puntas otras
glColor3f(0.0,0.0,1.0);
glVertex3f(-11.0,0.0,0.0);
glVertex3f(-10.5,0.0,.50);
glVertex3f(-10.5,0.0,-.50);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,-11.0,0.0);
glVertex3f(.50,-10.5,0.0);
glVertex3f(-.50,-10.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,-11.0);
glVertex3f(.50,0.0,-10.5);
glVertex3f(-.50,0.0,-10.5);
glEnd();
![Page 55: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/55.jpg)
13°-Animación sistema solar.
Esta animacion se podra hacer por medio de un movimiento del circulo pero circular.
comenzaremos por definir el sol, y aspi susecivamente hasta hacer todos los planetas le modificaremos el color y la hubicacion de hacia donde dará la vuelta.
CODIGO:
void circulo(int x, int y, int radio)
{
int angulo=0;
glBegin(GL_TRIANGLE_FAN);
//glColor3f (0.5, 0.5, 0.5);
glVertex2f(x,y);
//glColor3f(0,0.0,0.0);
for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}
glEnd();
}
void circuloc(int x, int y, int t, int radio)
{
int angulo=0;
glPointSize(t);
glBegin(GL_POINTS);
glVertex2f(x,y);
![Page 56: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/56.jpg)
for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}
glEnd();
}
void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esta
glColor3f (1.0,1.0,1.0);
circuloc(1000,1000,1,150);
circuloc(1000,1000,1,250);
circuloc(1000,1000,1,350);
circuloc(1000,1000,1,450);
circuloc(1000,1000,1,570);
circuloc(1000,1000,1,690);
circuloc(1000,1000,1,820);
circuloc(1000,1000,1,930);
//Sol
glColor3f (1.0, 1.0, 0.0);
circulo( 1000,1000,100); //funcion circulo
glEnd();
//Mercurio
glColor3f (0.65, 0.93, 0.69);
circulo( 1000+ sin(ang) * 150,1000 + cos(ang) * 150,25);
ang==ang+0.05;
![Page 57: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/57.jpg)
glEnd();
//Venus
glColor3f (0.50, 0.0, 1.0);
circulo( 1000- sin(ang) * 250,1000 - cos(ang) * 250,30);
ang==ang+0.01;
glEnd();
//Tierra
glColor3f (0.0, 0.0, 0.19);
circulo( 1000 + sin(ang) * 350,1000 - cos(ang) * 350,40);
ang==ang+0.01;
glEnd();
//Marte
glColor3f (1.0, 0.30, 0.0);
circulo( 1000+ sin(ang) * 450,1000 + cos(ang) * 450,41);
ang=ang+0.01;
glEnd();
//Jupiter
glColor3f (0.72, 0.19, 0.34);
circulo( 1000- sin(ang) * 570,1000 - cos(ang) * 570,60);
ang=ang+0.01;
glEnd();
//Saturno
glColor3f (1.0, 0.0, 0.0);
circulo( 1000+ sin(ang) * 690,1000 + cos(ang) * 690,50);
![Page 58: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/58.jpg)
ang=ang+0.01;
glEnd();
//Urano
glColor3f (0.0, 1.0, 1.0);
circulo( 1000- sin(ang) * 820,1000 - cos(ang) * 820,40);
ang=ang+0.01;
glEnd();
//Neptuno
glColor3f (0.08, 0.67, 0.83);
circulo( 1000- sin(ang) * 930,1000 + cos(ang) * 930,20);
ang=ang+0.003;
glEnd();
for(int j=1;j<=10000000;j++){}//pausa
if(ang==360){ang=0;}// se repite idefinidamente
glFlush(); //forzar dibujado
glutSwapBuffers(); //y esto
}
![Page 59: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/59.jpg)
14°-Movimiento en ocho
Esta practica la haremos haciendo 4 circulos 2 seran solo la circunferencia y los pondremos pegados, los otros 2 seran con area y los pondremos encima de modo que se de la forma de un 8, haremos un circulo más pequeño que recorrera la circunferencia de los primeros 2 circulos. Y así su recorrido será continuo.
CODIGO:
15°-Semaforo.
El objetivo de este será hacer la simulacion de un semaforo, dibujremos la estructura de un semaforo normal y haremso que prenda de rojo a verde de verde a amarillo y a rojo, y así sucesivamente.
CODIGO:
void circuloc(int x, int y, int t, int radio)
{
int angulo=0;
glPointSize(t);
![Page 60: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/60.jpg)
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);
for (angulo=0;angulo<=360; angulo++){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}
glEnd();
}
void dibuja(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//esto
glBegin(GL_QUADS);//Cuadros fondo semaforo
glColor3f(0.2 , 0.2 , 0.0);
glVertex2i(170,437);
glVertex2i(320,437);
![Page 61: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/61.jpg)
glVertex2i(320,182);
glVertex2i(170,182);
glVertex2i(229,183);
glVertex2i(278,183);
glVertex2i(278,3);
glVertex2i(229,3);
glEnd();
glColor3f(0.0,0.0,0.0);//Luces Roja
circulo(247,226,34);
glColor3f(0.0,0.0,0.0);//Luces Amarrilla
circulo(247,302,34);
glColor3f(0.0,0.0,0.0);//Luces Verde
circulo(247,381,34);
a=a+1; //velocidad entre mas grande mas rapido y entre menos mas lento
for(int j=1;j<=10000000;j++){}//pausa
if(a>1 && a<20){
glColor3f(1.0,0.0,0.0);//Luces Roja
![Page 62: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/62.jpg)
circulo(247,381,34);
}// se repite idefinidamente
// se repite idefinidamente
if(a>20 && a<40){
glColor3f(0.0,1.0,0.0);//Luces Roja
circulo(247,226,34);
}
if(a>40 && a<45){
glColor3f(0.0,1.0,0.0);//Luces Roja
circulo(247,226,34);
}
if(a>45 && a<50){
glColor3f(0.0,1.0,0.0);//Luces Roja
circulo(247,226,34);
}// se repite idefinidamente
if(a>50 && a<60){
glColor3f(1.0,1.0,0.0);//Luces Roja
circulo(247,302,34);
}// se repite idefinidamente
if(a>60){a=0;}
glFlush(); //forzar dibujado
![Page 63: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/63.jpg)
glutSwapBuffers(); //y esto
}
![Page 64: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/64.jpg)
![Page 65: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/65.jpg)
16°- Cubo 3D con líneas.
Este cubo se lograra hacer con una malla, y con la intervencion del teclado la malla se multiplicara y hará un cubo. y se podra mover con el teclado.
De igual forma tedra teclas para hacer un zoom.
CODIGO:
void mover(void){
glTranslated(0,0,zoom);
glRotated(girax,1.0,0.0,0.0);
glRotated(giray,0.0,1.0,0.0);
}
void creaMalla(void){
int i, long_eje=10,j;
glColor3f(1.0,1.0,0.0);
glBegin(GL_LINES);
for(i=-long_eje;i<=long_eje;i++){
for(j=-long_eje;j<=long_eje;j++){
glVertex3f(j,-long_eje,i);
glVertex3f(j,long_eje,i);
glVertex3f(-long_eje,j,i);
glVertex3f(long_eje,j,i);
glVertex3f(j,i,-long_eje);
glVertex3f(j,i,long_eje);
glVertex3f(-long_eje,j,i);
glVertex3f(long_eje,j,i);
![Page 66: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/66.jpg)
}}
glEnd();
}
void creaEjes(void){
glColor3f(0.0,0.0,0.0);
glBegin(GL_LINES);
glColor3f(0.0,0.0,1.0);
glVertex3f(-11.0,0.0,0.0);
glVertex3f(11.0,0.0,0.0);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,-11.0,0.0);
glVertex3f(0.0,11.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,-11.0);
glVertex3f(0.0,0.0,11.0);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.0,0.0,1.0);
glVertex3f(11.0,0.0,0.0);
glVertex3f(10.5,0.0,-.50);
glVertex3f(10.5,0.0,.50);
glColor3f(1.0,0.0,0.0);
![Page 67: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/67.jpg)
glVertex3f(0.0,11.0,0.0);
glVertex3f(-.50,10.5,0.0);
glVertex3f(.50,10.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,11.0);
glVertex3f(-.50,0.0,10.5);
glVertex3f(.50,0.0,10.5);
//puntas otras
glColor3f(0.0,0.0,1.0);
glVertex3f(-11.0,0.0,0.0);
glVertex3f(-10.5,0.0,.50);
glVertex3f(-10.5,0.0,-.50);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,-11.0,0.0);
glVertex3f(.50,-10.5,0.0);
glVertex3f(-.50,-10.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,-11.0);
glVertex3f(.50,0.0,-10.5);
glVertex3f(-.50,0.0,-10.5);
glEnd();
}
void init ( void )
![Page 68: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/68.jpg)
{
glClearColor(1.0,1.0,1.0,0.0) ;// Definimos el negro como color de fondo
glEnable(GL_DEPTH_TEST); // Activamos el z-Buffer
glEnable(GL_LIGHTING); // Activamos la iluminación
glEnable(GL_LIGHT0); // Activamos la luz 0
glMatrixMode(GL_PROJECTION); // set the view volume shape
glLoadIdentity(); glOrtho(-15,15,-15,15,-30,30);
glMatrixMode(GL_MODELVIEW); // position and aim the camera
glLoadIdentity();
gluLookAt(5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0);
}
void dibuja( void )
{
glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable(GL_DEPTH_TEST); // Activamos el z-Buffer
glEnable(GL_LIGHTING); // Activamos la iluminación
glEnable(GL_LIGHT0); // Activamos la luz 0
//glShadeModel(GL_FLAT);
glShadeModel (GL_SMOOTH);
// Cargamos la matriz identidad para reiniciar las transformaciones
/* float angulo;
![Page 69: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/69.jpg)
int i;
glLineWidth(20);
glBegin(GL_LINES);
glColor3d(1,1,1);
for (i=0; i<360; i+=10) {
angulo = (GLfloat)i*3.14159f/180.0f; // grados a radianes
glColor3d(1,1,1);
glVertex3i(0,0,-3);
glVertex3f(0+cos(angulo)*45, 0+sin(angulo)*45,0);
}
glEnd();*/
// Colocamos una luz
glLightfv(GL_LIGHT0,GL_DIFFUSE,(GLfloat []){0.0f,2.0f,2.0f,1.0f}); // Color de la luz
glLightfv(GL_LIGHT0,GL_AMBIENT,(GLfloat []){1.0, 1.0, 1.0, 4.0}); // Luz ambiente
glLightfv(GL_LIGHT0,GL_POSITION,(GLfloat []){0.0f,12.0f,5.0f,0.0f}); // Posición de la luz
glLightfv(GL_LIGHT0,GL_EMISSION,(GLfloat []){0.5,0.5,0.5,1.0});
//glShadeModel (GL_SMOOTH);
// esfera
glPushMatrix();
mover();
if(malla) creaMalla();
if(ejes) creaEjes();
//glRotatef(anguloEsfera, 1.0f, 1.0f,0.0f);
![Page 70: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/70.jpg)
glPopMatrix ();
glFlush();
glutSwapBuffers ();
//anguloEsfera+=2.0f;
}
void reshape(int w, int h){
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15,15,-15,15,-30,30);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_DEPTH_TEST);
}
void activo(int x,int y){
// x= e;
//y= f;
girax=y;
giray=700-x;
glutPostRedisplay();
}
void teclado(unsigned char key, int x, int y){
![Page 71: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/71.jpg)
switch(key){
case 27:
exit(0);
case '+':
zoom++;
break;
case '-':
zoom--;
break;
case 'p':
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,1,10,100);
zoom=-40;
break;
case 'o':
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15,15,-15,15,-30,30);
zoom=0;
break;
case 'm':
malla= !malla;
break;
![Page 72: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/72.jpg)
case 'e':
ejes= !ejes;
default: break;
}
glutPostRedisplay();
}
void flechas(int key,int x ,int y){
switch(key){
case GLUT_KEY_LEFT:
giray+=3;
break;
case GLUT_KEY_RIGHT:
giray-=3;
break;
case GLUT_KEY_UP:
girax-=3;
break;
case GLUT_KEY_DOWN:
girax+=3;
break;
default: break;
}
glutPostRedisplay();
![Page 73: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/73.jpg)
}
![Page 74: Manual de prácticas belmonte & ponce](https://reader033.vdocuments.pub/reader033/viewer/2022050816/54b4da2a4a7959ce608b459e/html5/thumbnails/74.jpg)