Post on 30-Mar-2016
description
INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES
INGENIERÍA EN SISTEMAS COMPUTACIONALES
“WEBQUEST: EJECUCIÓN DEL ALGORITMO DDA”
PRESENTAN:
RAMÍREZ MUÑOZ DIEGO ALFONSO
SALGADO BENITO IVONNE
LIBRES, PUEBLA, FEBRERO 2012.
S.E.P D.G.E.S.T D.I.T.D.
Organismo Público Descentralizado del Gobierno del Estado de Puebla
FUNDAMENTO TEÓRICO DEL ALGORITMO DDA
Definición 1
La ecuación diferencial de una línea recta está dada por:
La solución de la aproximación de diferencias finitas es:
xi+1 = xi + x
yi+1 = yi +
y
El algoritmo de DDA se ejecuta muy lentamente debido a que requiere mucha
aritmética (operaciones de punto flotante) [1].
Definición 2
El concepto cartesiano de la ecuación pendiente-intersección de una línea recta
es:
Los 2 puntos extremos de un segmento de línea se especifican en una
posición (x1, y1).
Determinar los valores de la pendiente y la intersección m b con el siguiente
cálculo.
Aquí, pendiente m:
intersección con el eje b
Algoritmos para la visualización de línea recta sobre la base de esta ecuación
y Dy intervalo de la ecuación
Del mismo modo el intervalo Dx x de la ecuación
Algoritmo DDA
El analizador diferencial digital (DDA) es un algoritmo de conversión de línea de
exploración basada en el cálculo ya sea Dy o DX.
La línea en intervalos unitarios coordina y determina la línea correspondiente al
número entero más próximo a los valores de la otra coordenada.
Consideremos en primer lugar una recta con pendiente positiva.
Paso: 1.
Si la pendiente es menor o igual a 1, los intervalos x unidad Dx = 1 y calcular
valores de y cada uno sucesivas.
El subíndice k toma valores enteros a partir de 1, para el primer punto y el
incremento en 1 hasta el punto final definitiva.
M-> todos los números reales entre 0 y 1.
Calcular los valores de y debe ser redondeado al entero más cercano
Paso: 2.
Si la pendiente es mayor que 1, los papeles de x cualquier y en la unidad y los
intervalos de Dy = 1 y calcular cada uno de los valores y los sucesivos.
Ecuación 6 y 7 Ecuación que las líneas se van a procesar desde el punto extremo
izquierdo hasta el punto extremo de la derecha.
Paso: 3.
Si el procesamiento se invierte, el punto de partida a la derecha.
Intervalos Dy = 1 y calcular cada uno de los valores y los sucesivos.
Paso: 4.
Ecuación 6 y la ecuación 9 se usa para calcular la posición de píxel a lo largo de
una línea con-ve pendiente.
Ventaja: Método más rápido para el cálculo de la posición del pixel a continuación,
la ecuación de una posición de pixel.
Y = mx + b
Desventaja: La acumulación de ronda de error es adición sucesiva de los
incrementos en coma flotante se utiliza para encontrar la posición de pixel, pero
toma mucho tiempo para calcular la posición del píxel.
Algoritmo: Un ingenuo dibujo lineal del algoritmo.
dx = x2 - x1
dy = y2 - y1
para x en x1 a x2 {
y = y1 + (dy) * (x - x1) / (dx)
píxel (x, y)
}
Programación en C:
linedda vacío (intxa, int ya, intxb, ybint) { int dx = xb-xa, dy = YB-ya, los pasos, k; xincrement flotador, yincrement, x = xa, y = ya; if (abs (dx)>abs (dy)) pasos = abs (dx); medidas ELSE = abs (dy); xincrement = dx / (float) pasos; yincrement = dy / (float) pasos; putpixel (round (x), redondo (y), 2) para k = 0; K <pasos; k + +) { x + = xincrement; y + = yincrement; putpixel (round (x), redondo (y), 2); } } Ejemplo: xa, ya => (2,2) xb, yb => (8,10) dx = 6 dy = 8 xincrement = 6/8 = 0,75 yincrement = 8/8 = 1 1) para (k = 0; k <8; k + +) xincrement = 0,75 0,75 = 1,50 yincrement = 1 +1 = 2 1 => (2,2) 2) para (k = 1, k <8; k + +) xincrement = 1,50 0,75 = 2,25 yincrement = 2 +1 = 3 2 => (3,3)
Que se incrementa hasta el punto final. [2]
CREACIÓN DEL ALGORITMO DDA EN OPENGL
Procedimiento
1. Se debe tener es instalado el visual studio 2005 o visual c# 2005 express
edition. Y descargar la libreria de clases The tao framework.
2.Descompresion de los Archivos.
3. Buscar en la carpeta lib el archivo llamado freeglut.dll, lo copian y lo pengan en
widows\system.
4. Referencia a los archivos Tao.FreeGlut.dll y Tao.OpenGl.dll.
5. Creación de un nuevo proyecto en c# de consola y posteriormente agregar las
referencias hacia los archivos .FreeGlut.dll y Tao.OpenGl.dll.
6. Ejecución por primera vez.
[3]
Modificaciones
Cambio de Grosor: En esta parte modificamos el tamaño de los pixeles en
diferentes tamaños y los puntos se establecieron mas unidos y lograr una línea
continua como se muestra en las siguientes figuras,
Línea Punteada: En el algoritmo DDA se cambiaron los valores del intervalo en el
que se iba a dibujar la línea para determinar el espacio entre de los puntos. Como
se muestra a continuación.
BIBLIOGRAFÍA
[1] Andrés Iglesias. Computer-Aided Geometric Design and Computer Graphics:
Line Drawing Algorithms. Department of Applied Mathematicsand Computational
Sciences. University of Cantabria.
http://personales.unican.es/iglesias/CD-CG/LineAlgorithms.pdf
[2] DDA Line Algorithm. DDA Line Drawing Algorithm In C Programming
Language.Computer Graphics Collection.
http://knol.google.com/k/dda-line-algorithm#
[3] Opengl: csgl y the tao framework en csharp. Publicado en el Blogspot.es del
profesor Jesús miembro del Instituto Tecnológico Superior de Libres.
http://opengl.blogspot.es/