Graficacion Algoritmo DDA

14
INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES INGENIERÍA EN SISTEMAS COMPUTACIONALES WebQuest: Ejecución del Algoritmo DDAPRESENTA: Ramírez Muñoz Diego Alfonso Salgado Benito Ivonne LIBRES, PUEBLA, FEBRERO 2011. S.E.P D.G.E.S.T D.I.T.D. Organismo Público Descentralizado del Gobierno del Estado de Puebla

description

How to use DDA Algorithm

Transcript of Graficacion Algoritmo DDA

Page 1: Graficacion Algoritmo DDA

INSTITUTO TECNOLÓGICO SUPERIOR DE LIBRES

INGENIERÍA EN SISTEMAS COMPUTACIONALES

“WebQuest: Ejecución del Algoritmo DDA”

PRESENTA:

Ramírez Muñoz Diego Alfonso

Salgado Benito Ivonne

LIBRES, PUEBLA, FEBRERO 2011.

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

Organismo Público Descentralizado del Gobierno del Estado de Puebla

Page 2: Graficacion Algoritmo DDA

FUNDAMENTO TEÓRICO DEL ALGORITMO DDA

Definición 1 [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).

Definición 2 [2].

El concepto cartesiano de la ecuación pendiente-intersección de una línea recta es

y = mx + b ------ (1)

con

m-> pendiente

b-> intersección

Los 2 puntos extremos de un segmento de línea se especifican en una

posición (x1, y1).

Page 3: Graficacion Algoritmo DDA

Determinar los valores de la pendiente y la intersección m b con el siguiente

cálculo.

aquí, pendiente m:

m = (y2 - y1) / (x2 - x1)

m = dy / dx ------ (2)

intersección con el eje b

b = y1-MX1 ------ (3)

Algoritmos para la visualización de línea recta sobre la base de esta ecuación

y Dy intervalo de la ecuación

m = dy / dx

Dy = m. Dx ------ (4)

Del mismo modo el intervalo Dx x de la ecuación

m = dy / dx

Dx = Dy / m

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.

Dx = 1

m = dy / dx

Page 4: Graficacion Algoritmo DDA

m = (y2-y1) / 1

m = (yk +1 - yk) / 1

yk +1 = yk + m -------- (6)

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.

Dy = 1

m = dy / dx

m = 1 / (x2-x1)

m = 1 / (xk +1 - xk)

xk +1 = xk + (1 / m) ------- (7)

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.

Dx = -1

m = dy / dx

m = (y2 - y1) / -1

yk +1 = yk - m -------- (8)

Intervalos Dy = 1 y calcular cada uno de los valores y los sucesivos.

Page 5: Graficacion Algoritmo DDA

Paso: 4.

Aquí, Dy = -1

m = dy / dx

m = -1 / (x2 - x1)

m = -1 / (xk +1 - xk)

xk +1 = xk + (1 / m) -------- (9)

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 mas 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 (int xa, int ya, int xb, yb int) {

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);

Page 6: Graficacion Algoritmo DDA

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.

Page 7: Graficacion Algoritmo DDA

PASOS.

Descompresion de Archivos.

Referencia a los archivos Tao.FreeGlut.dll y Tao.OpenGl.dll.

Page 8: Graficacion Algoritmo DDA

Ejecucion por primera vez.

Page 9: Graficacion Algoritmo DDA

Correcciones.

Cambio de Grosor.

Page 10: Graficacion Algoritmo DDA
Page 11: Graficacion Algoritmo DDA

Línea Punteada

Page 12: Graficacion Algoritmo DDA
Page 13: Graficacion Algoritmo DDA
Page 14: Graficacion Algoritmo DDA

BIBLIOGRAFÍA

[1] Andrés Iglesias. Computer-Aided Geometric Design and Computer Graphics:

Line Drawing Algorithms. Department of Applied Mathematics and 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#