Tuesday, November 6, 2007

Bresenham's Line Drawing

Program : Bresenham's Line Drawing


#include<stdio.h>

#include<math.h>

#include<conio.h>

#include<graphics.h>

void main()

{

int gdriver=DETECT,gmode,errorcode;

int x1,y1,x2,y2,l=0;

clrscr();

initgraph(&gdriver,&gmode,"c:\\TurboC3");

printf("enter the first endpoint:");

scanf("%d%d",&x1,&y1);

printf("\nenter the second endpoint:");

scanf("%d%d",&x2,&y2);


if((x1>x2)&&(y2>y1))

l=1;

else if((x2>x1)&&(y1>y2))

l=1;

else

l=0;

linebres(x1,y1,x2,y2,l);

getch();

closegraph();

}

linebres(int xa,int ya,int xb,int yb,int l)

{

int dx=abs(xa-xb);

int dy=abs(ya-yb);

int p=dy-dx;

int twody=2*dy;

int twodydx=2*(dy-dx);

int x,y,xend;

if(xa>xb)

{

x=xb;

y=yb;

xend=xa;

}

else

{

x=xa;

y=ya;

xend=xb;

}

putpixel(x,y,10);

while(x<xend)

{

x++;

if(p<0)

p+=twody;

else

{

if(l==0)

y++;

else

y--;

p+=twodydx;

}

putpixel(x,y,10) ;

}

return(0);

}

0 comments: