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)
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
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
Asignar a X la suma de X + Xincremento
Asignar a Y la suma de Y + Yincremento
Iluminar pixel en Coodenada X,Y
Comentarios
Publicar un comentario