SoloCodigo
		Programación General => C/C++ => Visual C++ => Mensaje iniciado por: jpnl87 en Jueves 22 de Febrero de 2007, 21:31
		
			
			- 
				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));
 }
 }