Here you will learn about dda line drawing algorithm in C and C++.

In Computer Graphics the first basic line drawing algorithm is Digital Differential Analyzer (DDA) Algorithm.

A line connects two points. It is a basic element in graphics. To draw a line, you need two points between which you can draw a line.

**Also Read: Bresenham’s Line Drawing Algorithm in C and C++**

### Digital Differential Analyzer (DDA) Algorithm

**Step 1: **Read the input of the 2 end points of the line as (x1, y1) & (x2, y2) such that x1 != x2 and y1 != y2

**Step 2: **Calculate dx = x2 – x1 and dy = y2 – y1

**Step 3:**

if(dx>=dy)

step=dx

else

step=dy

**Step 4: **xin = dx / step & yin = dy / step

**Step 5:** x = x1 + 0.5 & y = y1 + 0.5

**Step 6: **

for(k = 0; k < step; k++)

{

x = x + xin

y = y + yin

putpixel(x, y)

}

## Program for DDA Line Drawing Algorithm in C

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 |
#include <graphics.h> #include <stdio.h> #include <math.h> #include <dos.h> void main( ) { float x,y,x1,y1,x2,y2,dx,dy,step; int i,gd=DETECT,gm; initgraph(&gd,&gm,"c:\\turboc3\\bgi"); printf("Enter the value of x1 and y1 : "); scanf("%f%f",&x1,&y1); printf("Enter the value of x2 and y2: "); scanf("%f%f",&x2,&y2); dx=abs(x2-x1); dy=abs(y2-y1); if(dx>=dy) step=dx; else step=dy; dx=dx/step; dy=dy/step; x=x1; y=y1; i=1; while(i<=step) { putpixel(x,y,5); x=x+dx; y=y+dy; i=i+1; delay(100); } closegraph(); } |

**Outptut**

## Program for DDA Line Drawing Algorithm in C++

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 |
#include <graphics.h> #include <iostream.h> #include <math.h> #include <dos.h> void main( ) { float x,y,x1,y1,x2,y2,dx,dy,step; int i,gd=DETECT,gm; initgraph(&gd,&gm,"c:\\turboc3\\bgi"); cout<<"Enter the value of x1 and y1 : "; cin>>x1>>y1; cout<<"Enter the value of x2 and y2: "; cin>>x2>>y2; dx=abs(x2-x1); dy=abs(y2-y1); if(dx>=dy) step=dx; else step=dy; dx=dx/step; dy=dy/step; x=x1; y=y1; i=1; while(i<=step) { putpixel(x,y,5); x=x+dx; y=y+dy; i=i+1; delay(100); } closegraph(); } |

Comment below if you have any doubts related above algorithm.

No such file or directory

#include

^

compilation terminated.

this error is encountered while compilation of the above written program

which compiler you are using?

all programs are awesome, Thanks for such a nice blog, where can I get all the commands used in graphics.h ??? I want to know, making circle, and the arguments of circle, what is first one? Or x and y are used to give it postiion, you things like that,

Tq, works well

A simple way to explain this might be that you’re simply counting the number of ‘steps’ to take between Point 1 and Point 2, calculating the x-axis length and y-axis of each ‘step’, and then looping to add that step length to X and Y respectively for each step between point 1 to point 2.

Unless I’m mistaken, your algorithm here (and your Bresenham algorithm too) only works when X2 > X1 and Y2 > Y1. It’s easy to fix for any two arbitrary points: simply subtract the axis length instead of adding it (dx or dy), in the case that X1 > X2 or Y1 > Y2 respectively.

no error………………output wiil not display…………..

change the bgi path

how to do that??

file>>Change directory >> [set to bgi] >> click Change

i faced the same problem….

Bresenham’s algorithm for square

{

putpixel(x,y,5);

x=x+dx;

y=y+dy;

i=i+1;

delay(100);

}

ye smjh nhi aaya ki kya use h iska.

graphics.h Error why no such file

use turbo c++ instead of other softwares.

THanks a lot brother

THanks a lot brother

not running

How to run this on macOS or Linux?? The BGI(Borland Graphics Library) was created for Windows. This code doesn’t work on macOS or Linux?