Actividad de Examen

17
S.E.P. D.G.E.S.T. D.I.T.D. INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES Organismo Público Descentralizado del Gobierno del Estado de Puebla INGENIERÍA EN SISTEMAS COMPUTACIONALES “GRAFICACIÓN” EXAMEN PRESENTA: LARIOS VÁZQUEZ EDGAR LIBRES, PUEBLA, FEBRERO DE 2012.

description

dibujando poligonos con opengl

Transcript of Actividad de Examen

Page 1: Actividad de Examen

S.E.P. D.G.E.S.T. D.I.T.D.

INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES Organismo Público Descentralizado del Gobierno del Estado de Puebla

INGENIERÍA EN SISTEMAS COMPUTACIONALES

“GRAFICACIÓN”

EXAMEN

PRESENTA:

LARIOS VÁZQUEZ EDGAR

LIBRES, PUEBLA, FEBRERO DE 2012.

Page 2: Actividad de Examen

CONCEPTO DE RECURSIVIDAD [1]

La recursividad es una técnica de diseño de algoritmos que se basa en

solucionar versiones más pequeñas de un problema para de esta manera se

pueda encontrar la solución general. Existen dos tipos de algoritmos recursivos:

recursión directa y recursión indirecta.

Esta actividad fue realizada en la plataforma libre MonoDevelop de Ubuntu por

lo cual no se encontró la correcta ubicación de las coordenadas.

Page 3: Actividad de Examen

using System;

using Tao.FreeGlut;

using Tao.OpenGl;

namespace EXAMEN

{

class Program

{

static double x1, y1, x2, y2, x3, y3;

static double x4, y4, x5, y5, x6, y6,x7,y7,x8,y8;

static void Main(string[] args)

{

Console.WriteLine("INTRODUZCA LOS VALORES PARA PINTAR EL

TRIANGULO");

Console.WriteLine("introduzca el valor de X1");

x1 = Convert.ToDouble(Console.ReadLine());

Page 4: Actividad de Examen

Console.WriteLine("introduzca el valor de Y1");

y1 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X2");

x2 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y2");

y2 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X3");

x3 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y3");

y3 = Convert.ToDouble(Console.ReadLine());

//pidiendo valores para el poligono

Console.WriteLine("INTRODUZCA LOS VALORES PARA EL

POLIGONO");

Console.WriteLine("introduzca el valor de X1");

x4 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y1");

y4 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X2");

x5 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y2");

y5 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X3");

x6 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y3");

y6 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X4");

x7 = Convert.ToDouble(Console.ReadLine());

Page 5: Actividad de Examen

Console.WriteLine("introduzca el valor de Y4");

y7 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de X5");

x8 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("introduzca el valor de Y5");

y8 = Convert.ToDouble(Console.ReadLine());

Glut.glutInit();//funciones propias de opengl

Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB);

Glut.glutInitWindowSize(840, 680);//creamos una ventana

Glut.glutCreateWindow("**************Algoritmo

DDA**************");//colocamos titulo a la ventana

//llamamos a la funcion dda

Glut.glutDisplayFunc(dda);

Glut.glutMainLoop();

}

public static void dda()

{

//componentes necesarios de opengl

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);//limpia el buffer de la pantalla

Gl.glColor3f(0.6F, 0.6F, 0.6F);//poner color a los pixeles

Gl.glLoadIdentity();//''muy importante;

Gl.glPointSize(4.0f);//medida de los puntos

Gl.glBegin(Gl.GL_POINTS);//funcion para dibujar puntos

//dibujando el plano

float z = -1, w = 1, c = 1;

for (int i = 0; i < 200; i++)

Page 6: Actividad de Examen

{

Gl.glColor3f(w, c, z);

Gl.glVertex2d(z, 0);

Gl.glVertex2d(0, w);

z += .01f;

w -= .01f;

c += .1f;

}

Gl.glEnd();//termina funcion para dibujar puntos

///pasamos las

Gl.glPointSize(9.0f);//sirve para el tamaño de los pixeles

Gl.glColor3f(0.6f, 1.0f, 0.6f);//sirve para el color de los pixeles

//para dibujar el triangulo

ddaDibujar(x1, y1, x2, y2);

ddaDibujar(x2, y2, x3, y3);

ddaDibujar(x3, y3, x1, y1);

//para dibujar el poligono

ddaDibujar(x4, y4, x5, y5);

ddaDibujar(x5, y5, x6, y6);

ddaDibujar(x6, y6, x7, y7);

ddaDibujar(x7, y7, x8, y8);

ddaDibujar(x8, y8, x4, y4);

}

public static void ddaDibujar(double x1, double y1, double x2, double y2)

{

Page 7: Actividad de Examen

double xinicial = x1, yinicial = y1, xfinal = x2, yfinal = y2, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

Page 8: Actividad de Examen

//termina dda

}

public static void ddaDibujar1(double x2, double y2, double x3, double y3)

{

double xinicial = x2, yinicial = y2, xfinal = x3, yfinal = y3, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

Page 9: Actividad de Examen

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

public static void ddaDibujar2(double x3, double y3, double x1, double y1)

{

double xinicial = x3, yinicial = y3, xfinal = x1, yfinal = y1, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

Page 10: Actividad de Examen

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

//pintar poligono

public static void ddaDibujar3(double x4, double y4, double x5, double y5)

{

double xinicial = x4, yinicial = y4, xfinal = x5, yfinal = y5, x, y;

double deltax, deltay, xincremento, yincremento;

Page 11: Actividad de Examen

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

Page 12: Actividad de Examen

}

public static void ddaDibujar4(double x5, double y5, double x6, double y6)

{

double xinicial = x5, yinicial = y5, xfinal = x6, yfinal = y6, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

Page 13: Actividad de Examen

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

public static void ddaDibujar5(double x6, double y6, double x7, double y7)

{

double xinicial = x6, yinicial = y6, xfinal = x7, yfinal = y7, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Page 14: Actividad de Examen

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

public static void ddaDibujar6(double x7, double y7, double x8, double y8)

{

double xinicial = x7, yinicial = y7, xfinal = x8, yfinal = y8, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

Page 15: Actividad de Examen

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

public static void ddaDibujar7(double x8, double y8, double x4, double y4)

{

double xinicial = x8, yinicial = y8, xfinal = x4, yfinal = y4, x, y;

double deltax, deltay, xincremento, yincremento;

double pasos;

deltax = xfinal - xinicial;

deltay = yfinal - yinicial;

Page 16: Actividad de Examen

if (Math.Abs(deltax) > Math.Abs(deltay))

pasos = Math.Abs(deltax);

else

pasos = Math.Abs(deltay);

xincremento = (deltax / pasos) / 10;

yincremento = (deltay / pasos) / 10;

x = xinicial;

y = yinicial;

Gl.glBegin(Gl.GL_POINTS);

Gl.glVertex2d(x, y);//funcion que pinta un pixel en las coordenadas

especificadas

for (double k = .11; k <= pasos; k += .11)

{

x = (x + xincremento);

y = (y + yincremento);

Gl.glVertex2d(x, y);

}

Gl.glEnd();

//termina dda

}

}

}

Page 17: Actividad de Examen

Fuente de información

http://www.infor.uva.es/~belar/Ampliacion/Curso%202008_2009/T2_Programac

ion_Recursiva.pdf [1]