Necesito una mano con el algoritmo para dibujar la linea bressenham en MFC para todos los casos ya que hasta ahora tengo el algoritmo para pendientes entre 0 y 1
necesito casos para pendientes entre 1 e infinito y menores a cero
void CLinea::DibujarBressenham(CClientDC *dc)
{
int dx, dy,dy2,dxy2,dyx2,x,y,p,endx,incy;
dx=puntofinal.getx()-puntoinicial.getx(); // diferencial de x
dy=puntofinal.gety()-puntoinicial.gety(); // diferencial de y
dy2=2*dy;//cambio de float a int
dyx2=2*(dy-dx);
p=dy2-dx;
if(puntoinicial.getx()<puntofinal.getx())
{
x=puntoinicial.getx();
y=puntoinicial.gety();
endx=puntofinal.getx();
}
else
{
x=puntofinal.getx();
y=puntofinal.gety();
endx=puntoinicial.getx();
}
if(puntoinicial.gety()<puntofinal.gety())
{
incy=1;
y+=incy;
}
else
{
incy=-1;
}
dc->SetPixel(x,y,RGB(0,0,0));
while(x<=endx)
{
x=x+1;
if(p<0)
{
p+=dy2;
}
else
{
p+=dyx2;
y++;
}
if(dy<0)
{
y--;
}
dc->SetPixel(x,y,RGB(0,0,0));
}
}