Hola, quiero hacer una funcion que me dije una line con SDL en la pantalla, que para trabajar en el ordenador tengo a 800x600.
He probado varias funciones y todas me van bien si los puntos son aproximados, ejmp:p1(0,0), p2(300,300) o p1(250,250), p2(0,0).
El probema es si le meto p1(200, 350),p2(800, 0) que lo dibuja mal.
Esta es la funcion que he creado:
void putline(SDL_Surface *screen, int xa, int ya, int xb, int yb, Uint32 color)
{
int xx;
float yy;
if (xa<=xb)
{
for (xx=xa;xx<=xb;xx++)
{
yy=((((yb-ya)/(xb-xa))*xx)+((ya-(xa*((yb-ya)/(xb-xa))))));
putpixel (screen,xx,(int) yy,color);
}
}
else
{
for (xx=xa;xx>=xb;xx--)
{
yy=((((yb-ya)/(xb-xa))*xx)+((ya-(xa*((yb-ya)/(xb-xa))))));
putpixel (screen,xx,yy,color);
}
}
}
y la linea la dibujo llamando a la funcion:
putline (screen, 200, 350, 800, 0, SDL_MapRGB(screen->format, 0, 0, 0));
Gracias y un saludo!
Edito: la funcion putpixel dibuja un pixel, xx es la coordenada x e yy es la coordenada y.