[Código en C++], (Línea DDA, Línea Bresenham,
Circunferencia, etc.)
Los objetos presentes en una imagen se
componen de primitivas simples (líneas, puntos) y que para poder graficarlas se
hacen uso de algoritmos como DDA, Bresenham,
etc., el sistema gráfico dibuja estas primitivas transformándolos en pixels
-> Rasterización
Algoritmos DDA:
DeltaX = DeltaY / m
DeltaY = m * DeltaX
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.
Ejemplo:
Sigue leyendo para ver el resultado:
Para ejecutar el ejemplo es necesario tener
la librería "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;
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;
i=1;
while(i<=luz)
{
putpixel((319+floor(x)),(239-floor(y)),9);
x=x+ax;
y=y+ay;
i=i+1;
}
}
No hay comentarios:
Publicar un comentario