EXAMEN DE GRAFICACION
-
Upload
marco-antonio-hernandez -
Category
Documents
-
view
223 -
download
1
description
Transcript of EXAMEN DE GRAFICACION
INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES
Organismo Público Descentralizado del Gobierno del Estado de Puebla
ING. EN SISTEMAS COMPUTACIONALES
GRAFICACIÓN
“EJEMPLOS DE 2 POLIGONOS CON LA LIBRERÍA
OPENGL EN LA PLATATAFORMA .NET”
DOCENTE
LIC. DIANA MARICELA GONZÁLEZ DELGADO
PRESENTA:
HERNÁNDEZ JACINTO MARCO ANTONIO
LIBRES, PUEBLA, 17 DE FEBRERO 2012
QUE ES RECURSIVIDAD
La recursividad es un concepto fundamental en matemáticas y en
computación.
Es una alternativa diferente para implementar estructuras de repetición
(ciclos). Los módulos se hacen llamadas recursivas.
Se puede usar en toda situación en la cual la solución pueda ser
expresada como una secuencia de movimientos, pasos o
transformaciones gobernadas por un conjunto de reglas no ambiguas.
Las funciones recursivas se componen de:
Caso base: una solución simple para un caso particular (puede
haber más de un caso base). La secuenciación, iteración
condicional y selección son estructuras válidas de control que
pueden ser consideradas como enunciados.
NOTA: Regla recursiva Las estructuras de control que se pueden formar
combinando de manera válida la secuenciación, iteración condicional y
selección también son válidos.
¿Cuándo usar recursividad?
Para simplificar el código.
Cuando la estructura de datos es recursiva ejemplo : árboles.
¿Cuándo no usar recursividad?
Cuando los métodos usen arreglos largos.
Cuando el método cambia de manera impredecible de campos.
Cuando las iteraciones sean la mejor opción.
CODIGO DEL EXAMEN PRESENTANDO 2 POLIGONOS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tao.FreeGlut;
using Tao.OpenGl;
namespace ConsoleApplication1
{
class Program
{
static double x1, y1, x2, y2, x3, y3;
static double x9, y9, x8, y8, x7, y7,x6,y6,x5,y5;
static void Main(string[] args)
{
//INSERCION DELOS VLORES PARA EL TRUANGULO
Console.WriteLine("................PRIMER EXAMEN PARCIAL
DE GRAFICACION................");
Console.WriteLine("................EL
TRIANGULO................");
Console.WriteLine("INSERTE EL VALOR DE X1");
x1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DEe Y1");
y1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X2");
x2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y2");
y2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X3");
x3 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y3");
y3 = Convert.ToDouble(Console.ReadLine());
//---INSERCION DE VALORES PARA EL PENTAGONO---------------
----------
Console.WriteLine("..................EL
PÈNTAGONO.............");
Console.WriteLine("INSERTE EL VALOR DE X1");
x9 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y1");
y9 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X2");
x8 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y2");
y8 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X3");
x7 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y3");
y7 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X4");
x6 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y4");
y6 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE X5");
x5 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("INSERTE EL VALOR DE Y5");
y5 = Convert.ToDouble(Console.ReadLine());
Glut.glutInit();//funciones propias de opengl
Glut.glutInitDisplayMode(Glut.GLUT_SINGLE |
Glut.GLUT_RGB);
Glut.glutInitWindowSize(660, 500);//creamos una ventana
Glut.glutCreateWindow("...............EXAMEN DE
GRAFICACION ............ ");//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 pantall
Gl.glColor3f(0.0F, 0.0F, 1.0F);//poner color a los pixeles
Gl.glLoadIdentity();//''muy importante;
Gl.glPointSize(6.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++)
{
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(6.0f);//sirve para el tamaño de los pixeles
Gl.glColor3f(0.0F, 0.0F, 1.0F);//poner color a los pixeles
//DIBUJAR EL TRIANGULO ddaDibujar(x1, y1, x2, y2);
ddaDibujar1(x2, y2, x3, y3);
ddaDibujar2(x3, y3, x1, y1);
//---------------------------------------------
-------------------
//DIBUJAR EL PENTAGONO
ddaDibujar3(x9, y9, x8, y8);
ddaDibujar4(x8, y8, x7, y7);
ddaDibujar5(x7, y7, x6, y6);
ddaDibujar6(x6, y6, x5, y5);
ddaDibujar7(x5, y5, x9, y9);
}
public static void ddaDibujar(double x1, double y1, double x2,
double y2)
{
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();
//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
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);
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
}
//APARTIR DE AKA ES EL PENTAGONO
//--------------------------------------
public static void ddaDibujar3(double x9, double y9, double x8,
double y8)
{
double xinicial = x9, yinicial = y9, 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;
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 ddaDibujar4(double x8, double y8, double x7,
double y7)
{
double xinicial = x8, yinicial = y8, 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);
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 ddaDibujar5(double x7, double y7, double x6,
double y6)
{
double xinicial = x7, yinicial = y7, 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);
y = (y + yincremento);
Gl.glVertex2d(x, y);
}
Gl.glEnd();
//termina dda
}
public static void ddaDibujar6(double x6, double y6, double x5,
double y5)
{
double xinicial = x6, yinicial = y6, xfinal = x5, yfinal =
y5, 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();
//termina dda
}
public static void ddaDibujar7(double x5, double y5, double x9,
double y9)
{
double xinicial = x5, yinicial = y5, xfinal = x9, yfinal =
y9, 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();
//termina dda
}
}
}
EJEMPLO EJECUTADO
Fuentes de información
DEFINICIÓN DE RECURSIVIDAD
1.- http://ocw.udem.edu.mx/cursos-de...de...recursividad/Recursividad.ppt