Algoritmo DDA.

El Algoritmo DDA es un algoritmo de línea de conversión de rastreo que se basa en el cálculo ya sea en el incremento de X o en el incremento de Y. La finalidad de este algoritmo es determinar los valores enteros correspondientes más próximos a la trayectoria de la línea para la otra coordenada y se basa en el cálculo ya sea de Δy, o de Δx, por medio de las siguientes ecuaciones:

Δy = m Δx      y     Δx = Δy/m

Se efectúa un muestreo de la línea e 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 otra coordenada.
Se debe considerar primero una línea con pendiente positiva. Si la pendiente es menor o igual que 1, se lleva a cabo un muestreo de x intervalos unitarios (Δx = 1) y se calcula cada valor sucesivo de “y” como: yk+1 = yk + m.

El subíndice k toma valores enteros a partir de 1 y aumenta a razón de 1 hasta que se alcance el valor final. Ya que m puede ser cualquier número real entre 0 y 1, los valores calculados de y deben redondearse al entero más cercano.

Para las líneas con una pendiente positiva mayor que 1, se revierten la funciones de “x” y de “y”. Es decir, se realiza un muestreo de y en intervalos unitarios (Δy = 1 ) y se calcula cada valor sucesivo de “x” como: xk+1 = xk + 1/m.

Las ecuaciones anteriores se basan en la suposición de que las líneas deben procesarse del extremo izquierdo al derecho. Si este procesamiento se revierte, de manera que sea el extremo derecho donde se inicia, entonces se tiene ya sea Δx = –1 y yk+1 = yk – m o (cuando la pendiente es mayor que 1 ) Δy – 1 con xk+1 = xk – 1/m

Pseudocódigo:
Leer Coordenadas P1(Xinicial, Yinicial)
Leer Coordenadas P2(Xfinal,Yfinal)
Asignar a  DeltaX la diferencia de Xfinal – Xinicial
Asignar a  DeltaY la diferencia de Yfinal – Yinicial
Si ABS( DeltaX) > ABS(DeltaY)
Asignar a Pasos el ABS(DeltaX)
De lo contrario
Asignar a Pasos el ABS(DeltaY)
Asignar a Xincremento el resultado de DeltaX / Pasos
Asignar a Yincremento el resultado de DeltaY / Pasos
Asignar a X el valor de Xinicial
Asignar a Y el valor de Yinicial
Iluminar pixel en coordenada X,Y
Desde k=1 hasta Pasos
Asignar a X la suma de X + Xincremento
Asignar a Y la suma de Y + Yincremento
Iluminar pixel en Coodenada X,Y

Comentarios