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:
Post a Comment