Algoritmo de Bresenham y DDA
Algoritmo
de Bresenham
Es un algoritmo que
determina los puntos en un mapa de bits de n-dimensiones que deben ser trazados
con el fin de formar una aproximación a una línea recta entre dos puntos dados.
Es uno de los
primeros algoritmos desarrollados en el campo de gráficos por ordenador, también
se ocupa de dibujar círculos.
Partimos de que las coordenadas de los pixeles en una imagen son coordenadas enteras y que conocemos los extremos del segmento que forma la línea siendo sus coordenadas (x0,y0) y (x1,y1).
Partimos de que las coordenadas de los pixeles en una imagen son coordenadas enteras y que conocemos los extremos del segmento que forma la línea siendo sus coordenadas (x0,y0) y (x1,y1).
El
algoritmo de Bresenham selecciona el entero 'y' correspondiente al pixel
central que está más cercano del que sería calculado con fracciones y lo mismo
para la coordenada 'x'. En las sucesivas columnas la coordenada 'y' puede
permanecer con el mismo valor o incrementarse en cada paso a una unidad.
Puesto
que conocemos la columna, 'x', la fila 'y' del pixel se calcula redondeando
esta cantidad al entero más cercano según la siguiente fórmula:
Algoritmo DDA
Digital
Differential Analyzer, 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.
Se efectúa un muestreo de la línea en
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 siguiente
coordenada.
Se aceptan como datos de entradas las
dos posiciones de los pixeles correspondientes a los extremos de la línea
P1(Xinicial,Yinicial) y P2(Xfinal,Yfinal). Las diferencias horizontal y
vertical entre las posiciones de los extremos dados, se asignan a las
varialbles DeltaX y DeltaY respectivamente. La diferencia con la mayor magnitud
determina el valor del parámetro Pasos. Se procede a determinar la compensación
necesaria(incremento), para generar la posición del pixel siguiente a lo largo
de la trayectoria de la línea. Luego, se ilumina la posición en la pantalla y
se repite este proceso cíclico Pasos Veces, hasta obtener la línea deseada.
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
Fin de Algoritmo(DDA)
Comentarios
Publicar un comentario