# C – Digital Differential Analyzer Program in C

The digital differential analyzer ( DDA ) is a scan-conversion line algorithm based on calculating either dx or dy, using the equations dy=m*dx and dx=dy/m.

In this algorithm, the line is sampled at unit intervals in one coordinate and determine corresponding integer values nearest the path for another coordinate.

If slope m<1, we sample at unit x intervals ( dx=1) and compute each successive y value as Yk+1=Yk+m. If m>1 we reverse the role of x andy.

We sample at unity intervals and calculate each succeeding x value as Xk+1=Xk+1/m.

## Algorithm

- Input the values of ( x1,y1 ) and ( x2,y2 ) .
- Compute the slope m=dy/dx=( y2-y1 )/( x2-x1 ) .
- If m<1, increment x 1by 1.then y1=y1+m.
- Plot ( x1 , y1 ).
- Repeat the step3,4 till x1<=x2 .
- If m>1, increment y1 by 1 and x1=x1+1/m
- Plot (x1, y1 ) .
- Repeat the sep 6,7 till y1<=y2 .

## Source Code

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<dos.h>voidmain()

{

intgd=DETECT,gm;

floati,x1,y1,x2,y2,dy,dx,m;

initgraph(&gd,&gm,"c:\tc\bgi");

printf("Direct line drawing algorithmn");

printf("put the values of x1 and y1n");

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

printf("put the values of x2 and y2n");

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

dx=x2-x1;

dy=y2-y1;

m=dy/dx;

if(m<=1)

{

for(i=1;i<=x2;i++)

{

x1=x1+1;

y1=y1+m;

putpixel(x1,y1,RED);

}

}

if(m>1)

{

while(y1<=y2)

{

x1=x1+1/m;

y1=y1+1;

putpixel(x1,y1,RED);

}

}

getch();

}