Professional Documents
Culture Documents
Se efecta un muestreo de la lnea en intervalos unitarios en una coordenada y se determinan los valores enteros correspondientes ms prximos a la trayectoria de la lnea para la siguiente coordenada.
Se aceptan como datos de entradas las dos posiciones de los pixeles correspondientes a los extremos de la lnea 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 parmetro Pasos. Se procede a determinar la compensacin necesaria(incremento), para generar la posicin del pixel siguiente a lo largo de la trayectoria de la lnea. Luego, se ilumina la posicin en la pantalla. y se repite este proceso cclico Pasos Veces, hasta obtener la lnea deseada. Pseucodigo
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)
Ejercicio: Escribe un programa que dibuje una lnea en pantalla. Sigue leyendo para ver el resultado: Para ejecutar el ejemplo es necesario tener la librera "graphics.h" de Borland.
#include <dos.h> #include <stdio.h> #include <graphics.h> #include <math.h> void DDA (int x1,int y1,int x2,int y2) { float ax,ay,x,y,luz; int i;
x=(float)x1; y=(float)y1;
i=1;