Draw Line using DDA Algorithm
Rohan Sakhale 11/12/2011 code-examplecpp
# Summary
This is a computer graphics related algorithm that draws line using graphics in C language.
Using this algorithm we won't get the exact required line, there are in-built graphics functions present in graphics.h header that gives a more better line. But in-order to master algorithms we need to get a start with whatever we can learn with.
# Code
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
#include "math.h"
#define ROUND(a) ((int)(a+0.5))
void dda_line(int xa,int xb,int ya,int yb)
{
int dx,dy,i,length;
float ddx,ddy,x,y;
dx = xb - xa;
dy = yb - ya;
x = xa;
y = ya;
if(abs(dx) > abs(dy))
{
length = abs(dx);
}
else
{
length = abs(dy);
}
ddx = abs(dx)/length;
ddy = abs(dy)/length;
putpixel(ROUND(x),ROUND(y),RED);
i=0;
while(i<=length)
{
x = x + ddx;
y = y + ddy;
putpixel(ROUND(x),ROUND(y),RED);
i++;
}
putpixel(ROUND(x),ROUND(y),RED);
}
void main()
{
int xa,xb,ya,yb;
int gd,gm;
detectgraph(&gd,&gm);
gd = DETECT;
initgraph(&gd,&gm,"C:\TC\BGI");
printf("Enter start & end points:=> ");
scanf("%d %d",&xa,&ya);
scanf("%d %d",&xb,&yb);
dda_line(xa,xb,ya,yb);
getch();
closegraph();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56