• Miércoles 20 de Noviembre de 2024, 14:39

Autor Tema:  Linea Bressenham  (Leído 1024 veces)

jpnl87

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Linea Bressenham
« en: Jueves 22 de Febrero de 2007, 21:31 »
0
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));
   }
}