DRAW A LINE USING DDA ALGORITHM
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<dos.h>
#define ROUND(a)((int)(a+0.5))
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int xa,xb,ya,yb;
// int y=0,x=0,i;
char msg[25];
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
printf("Enter the value for x1,y1:\n");
scanf("%d%d",&xa,&ya);
printf("Enter the value for x2,y2:\n");
scanf("%d%d",&xb,&yb);
linedda(xa,ya,xb,yb);
getch();
closegraph();
return 0;
}
void linedda(int xa,int ya,int xb,int yb)
{
int dx=xb-xa,dy=yb-ya,steps,k;
float xincr,yincr,x=xa,y=ya;
if(abs(dx)>abs(dy))
steps=abs(dy);
else
steps=abs(dy);
xincr=dx/(float)steps;
yincr=dy/(float)steps;
putpixel(ROUND(x),ROUND(y),GREEN);
for(k=0;k<steps;k++)
{
x+=xincr;
y+=yincr;
putpixel(ROUND(x),ROUND(y),GREEN);
}
}
OUTPUT:-
Enter the value for x1,y1:
100
100
Enter the value for x2,y2:
250
300
No comments:
Post a Comment