Libreria OPENGL

Page 1

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

“INTALACION Y LIBRERIAS DE OPENGL”

PRESENTA:

ANTONIO LIMÓN MARTÍNEZ

LIBRES, PUEBLA, ENERO 2012


1.1.2 Algoritmo de Línea DDA El analizador diferenciador digital (DDA - Digital Differential Analyzer) es un algoritmo de conversión de rastreo que se basa en el calculo ya sea de Dy o Dx por medio de las ecuaciones. Explicación del algoritmo Es un algoritmo que se basa en el cálculo y la evaluación de un DeltaX (X) y un DeltaY(Y). Por medio de las siguientes ecuaciones:

DeltaX

=

DeltaY

DeltaY

=

m

/ *

m DeltaX

Se efectúa un muestreo de la línea en intervalos unitarios en una coordenada y se determinan los valores enteros correspondientes más próximos a la trayectoria de la línea para la siguiente coordenada.

Se aceptan como datos de entradas las dos posiciones de los pixeles correspondientes a los extremos de la línea P1 (Xinicial,Yinicial) y P2(Xfinal,Yfinal). Las diferencias horizontal y vertical entre las posiciones de los extremos dados, se asignan a las variables DeltaX y DeltaY respectivamente. La diferencia con la mayor magnitud determina el valor del parámetro Pasos. Se procede a determinar la compensación necesaria (incremento), para generar la posición del pixel siguiente a lo largo de la trayectoria de la línea. Luego, se ilumina la posición en la pantalla y se repite este proceso cíclico Pasos Veces, hasta obtener la línea deseada.

http://www.nosolounix.com/2010/04/algoritmo-dda-dibujar-linea.html Modificaciones correspondientes para el trazo de líneas de los siguientes tipos a. Aumento del grosor b. Línea punteada




C贸digo using using using using using using

System; System.Collections.Generic; System.Linq; System.Text; Tao.OpenGl; Tao.FreeGlut;

namespace ConsoleApplication6 { class Program { static double x1, y1, x2, y2; static void Main(string[] args) { Console.WriteLine("introduzca el valor de X1"); x1 = Convert.ToDouble(Console.ReadLine()); 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()); Glut.glutInit();//funciones propias de opengl Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB); Glut.glutInitWindowSize(640, 480);//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 pantall Gl.glColor3f(0.6F, 0.6F, 0.6F);//poner color a los pixeles Gl.glLoadIdentity();//''muy importante; Gl.glPointSize(2.0f);//medida de los puntos Gl.glBegin(Gl.GL_POINTS);//funcion para dibujar puntos //dibujando el plano float z = -1, w = 1, c = 0; 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(5.0f);//sirve para el tama単o de los pixeles Gl.glColor3f(0.6f, 1.0f, 0.6f);//sirve para el color de los pixeles ddaDibujar(x1, y1, x2, y2); } 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) / 5; yincremento = (deltay / pasos) / 5; x = xinicial; y = yinicial; Gl.glBegin(Gl.GL_POINTS); Gl.glVertex2d(x, y); for (double k = .1; k <= pasos; k += .1) { x = (x + xincremento); y = (y + yincremento); Gl.glVertex2d(x, y); } Gl.glEnd(); //termina dda


} } }


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.