manual de practicas de opengl

24
CECyTEM PLANTEL TECÁMAC Manual de prácticas en OPEN GL “Dev C++” Alumna: López Bautista Mariela Profesor: René Domínguez Escalona Grupo: 303 Nº De lista: 19

Transcript of manual de practicas de opengl

Page 1: manual de practicas de opengl

CECyTEM PLANTEL TECÁMAC

Manual de prácticas en OPEN GL “Dev C++”

Alumna: López Bautista Mariela

Profesor: René Domínguez Escalona

Grupo: 303

Nº De lista: 19

Page 2: manual de practicas de opengl

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.

Í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

Page 3: manual de practicas de opengl

15°-Semaforo

16°- Cubo 3D con líneas.

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.

Page 4: manual de practicas de opengl

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.

Page 5: manual de practicas de opengl

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.

Page 6: manual de practicas de opengl

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.

Page 7: manual de practicas de opengl

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);

Page 8: manual de practicas de opengl

glVertex2i(300,80);

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);

Page 9: manual de practicas de opengl

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.

Page 10: manual de practicas de opengl

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.

Page 11: manual de practicas de opengl

8°- Oso

Para esta practica utilizamos una nueva instrucción que es la de el circulo

void circulo(int x, int y, int radio)

y el oso lo formamos con un for for (angulo=0;angulo<=360; angulo+=1){ glVertex2f(x + sin(angulo) * radio, y + cos(angulo) * radio);}

glEnd();

Page 12: manual de practicas de opengl

9°-Cubo con Cubitos

Esta práctica yo la exente dando una coordenada de una líneas y solo le pedí a uno de mis compañeros que me prestaran su impresión de pantalla

Page 13: manual de practicas de opengl

10º MUÑECO CON FORMAS

En esta practica aremos un muñeco con todas las funciones y primitivas que utilizamos anteriormente

Podemos utilizar un triangulo para su cabello, nariz Un circulo para su cabeza, cuadrados para sus ojos, botones, Líneas para su bica sus zapatos podría ser igual para el cinturón etc.

Page 14: manual de practicas de opengl

11°-Animación circulo

Esta es la primera animación que relizamos y en esta utilizaremos doble buffer

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

if(x>=1 && x<500){

circulo(100+1*x,100,40);

glFlush();

x++;

}

Para que se repita constantemente la función deveras colocar lo siguiente

//Reptir

if(h==500){

x=1;

y=1;

a=1;

h=1;

}

Page 15: manual de practicas de opengl

12°- Nombre 3D

Aquí realizaremos nuestro nombre en 3D para que podamos interactuar con el

Para eso necesitamos esta instrucción

void mover(void){

glTranslated(0,0,zoom);

glRotated(girax,1.0,0.0,0.0);

glRotated(giray,0.0,1.0,0.0);

}

Y una nueva instrucción que se llama creaMalla(void)

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();

Page 16: manual de practicas de opengl

}

Page 17: manual de practicas de opengl

13°-Animación sistema solar

En esta practica lo que tenemos que realizar es una animación parecida a la de animación de circulo pero con diferentes pelotas en diferente velocidad

Para esto es necesario utilizar diferentes variables en cada una de las pelotas y para que el movimiento sea distinto se pondrá de la siguiente forma

a=a+0.02;

l=l+0.03;

d=d+0.04;

o=o+0.05;

t=t+0.06;

e=t+0.07;

q=q+0.08;

m=m+0.09;

Page 18: manual de practicas de opengl

14°-Movimiento en ocho

Esta practica es muy sencilla ya sabemos utilizar la instrucción de circulo y la animación solo hay que ponerle dirección a la pelota para que se ejecute y le de vueltas al 8

else{

circulo(300 + sin (b) *60,180-cos(b)*-60,10);

b=b + 0.14;

if(b>12.4){a=6.15;b=6.15;}

for(int j=0; j<=10000000; j++) {}

}

Page 19: manual de practicas de opengl

15°-Semaforo

En esta practica realizaremos la animación de un semáforo en secuencia como se prende el botón verde luego el rojo y el amarillo

glColor3f(0.0,1.0,0.0);

if(z>=1 && z<600 && y==600 && x==800 && w==800){

circulo(850,350,50);

glFlush();

z++;

{z=1;x=1;y=1;w=1;}

}

glutSwapBuffers();

}

Page 20: manual de practicas de opengl

16°- Cubo 3D con líneas.

Esta es una de las practicas mas interesantes y un poco compleja a mi parecer utilizaremos una funcion que ya teníamos creaMalla(void)

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();

}

Page 21: manual de practicas de opengl