Linea Dda
DeltaX = DeltaY / m DeltaY = m * DeltaX
Se efectúaun 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.
Seaceptan 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 lasposiciones 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 lacompensació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íclicoPasos Veces, hasta obtener la línea deseada. Pseucodigo Leer Coordenadas P1(Xinicial, Yinicial) Leer Coordenadas P2(Xfinal,Yfinal) Asignar a DeltaX la diferencia de Xfinal - Xinicial Asignar a DeltaY ladiferencia 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 Asignara 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 línea en pantalla.
#include #include #include#include void DDA (int x1,int y1,int x2,int y2) { float ax,ay,x,y,luz; int i; if(abs(x2-x1)>=abs(y2-y1)) luz=abs(x2-x1); else luz=abs(y2-y1); ax=(x2-x1)/luz; ay=(y2-y1)/luz; x=(float)x1; y=(float)y1;...
Regístrate para leer el documento completo.