/*COMPLIED BY SANDESH.PROGRAN FOR BRESAMHEN'S ALGORITHM*/ #include #include #include #include int gd=DETECT,gm; int Xa,Ya,Xb,Yb,dx,dy,x,y,xend,yend; long int p; void main() { detectgraph(&gm,&gd); initgraph(&gm,&gd,"C:\\TC\\BGI"); printf("\nSTART POINT"); printf("\nENTER THE Xa-COORDINATE->"); scanf("%d",&Xa); printf("\nENTER THE Ya-COORDINATE ->"); scanf("%d",&Ya); printf("\nFOR END POINT"); printf("\nENTER THE Xb-COORDINATE ->"); scanf("%d",&Xb); printf("\nENTER THE Yb-COORDINATE ->"); scanf("%d",&Yb); dx=Xb-Xa; dy=Yb-Ya; if(((dy>=0&&dx>0)||(dy<=0&&dx<0))&&(abs(dx)>=abs(dy))) gentle_p(); else if(((dy>0&&dx>=0)||(dy<0&&dx<=0))&&(abs(dy)>abs(dx))) steep_p(); else if(((dy>0&&dx<0)||(dy<0&&dx>0))&&(abs(dy)<=abs(dx))) gentle_n(); else if(((dy>0&&dx<0)||(dy<0&&dx>0))&&(abs(dy)>abs(dx))) steep_n(); getch(); closegraph(); } gentle_p() { /*start of func*/ line(Xa,Ya,Xb,Yb); printf("\nGENTLE POSITIVE"); getch(); clrscr(); p=2*abs(dy)-abs(dx); if(dx>0) { x=Xa; y=Ya; xend=Xb; } else { x=Xb; y=Yb; xend=Xa; } putpixel(x,y,GREEN); while(x<=xend) { x=x+1; if(p<=0) p=p+2*abs(dy); else { y=y+1; p=p+2*(abs(dy)-abs(dx)); } putpixel(x,y,GREEN); } /*end ofwhile*/ return(0); } /*end of func*/ steep_p() { /*start of func*/ line(Xa,Ya,Xb,Yb); printf("\nSTEEP POSITIVE"); getch(); clrscr(); p=2*abs(dx)-abs(dy); if(dy>0) { x=Xa; y=Ya; yend=Yb; } else { x=Xb; y=Yb; yend=Ya; } putpixel(x,y,BLUE); while(y<=yend) { y=y+1; if(p<=0) p=p+2*abs(dx); else { x=x+1; p=p+2*(abs(dx)-abs(dy)); } putpixel(x,y,BLUE); } /*end ofwhile*/ return(0); } /*end of func*/ gentle_n() { /*start of func*/ line(Xa,Ya,Xb,Yb); printf("\nGENTLE NEGATIVE"); getch(); clrscr(); if(dx>0) { x=Xa; y=Ya; xend=Xb; } else { x=Xb; y=Yb; xend=Xa; } if(dx<0) { dx=-dx; dy=-dy; } p=2*dy+dx; putpixel(x,y,RED); while(x<=xend) { x=x+1; if(p>0) p=p+2*dy; else { y=y-1; p=p+2*(dy+dx); } putpixel(x,y,RED); } /*end ofwhile*/ return(0); } /*end of func*/ steep_n() { /*start of func*/ line(Xa,Ya,Xb,Yb); printf("\nSTEEP NEGATIVE"); getch(); clrscr(); if(dy>0) { x=Xa; y=Ya; yend=Yb; } else { x=Xb; y=Yb; yend=Ya; } if(dy<0) { dx=-dx; dy=-dy; } p=2*dx+dy; putpixel(x,y,CYAN); while(y<=yend) { y=y+1; if(p>0) p=p+2*dx; else { x=x-1; p=p+2*(dx+dy); } putpixel(x,y,CYAN); } /*end ofwhile*/ return(0); } /*end of func*/