Correcciones Actividad 3

14
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

description

Pdf corregido

Transcript of Correcciones Actividad 3

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/