DDA Line Drawing Algorithm in C and C++

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

Outptut

DDA Line Drawing Algorithm in C and C++

Program for DDA Line Drawing Algorithm in C++

Comment below if you have any doubts related above algorithm.

11 thoughts on “DDA Line Drawing Algorithm in C and C++

  1. vishalmadheshiya

    No such file or directory
    #include
    ^
    compilation terminated.

    this error is encountered while compilation of the above written program

    Reply
  2. Hassan javed

    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,

    Reply
  3. Mark V

    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.

    Reply
  4. aravind

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

    Reply
  5. vivek

    {
    putpixel(x,y,5);
    x=x+dx;
    y=y+dy;
    i=i+1;
    delay(100);
    }

    ye smjh nhi aaya ki kya use h iska.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *