Bresenham’s Line Drawing Algorithm

8 months ago
Computer Graphics

Bresenham’s line algorithm is an algorithm which determines which order to form a close approximation to a straight line between two given points. Write a C program for determining pixel activation list between two given points in order to draw line segment using bresenham’s Line drawing algorithm?


Aim: To implement Bresenham’s line drawing algorithm for drawing a line segment between two

given endpoints A (x1, y2) and B(x2, y2).


Basic Concept:

  • Move across the x axis in unit intervals and at each step choose between two different y coordinates

  • For example, from position (2, 3) we have to choose between (3, 3) and (3, 4). We would like the point that is closer to the original line
  • So we have to take decision to choose next So next pixels are selected based on the value of decision parameter p. The equations are given in below algorithm.



  1. Input the two line end-points, storing the left end-point in (x0, y0)
  2. Plot the point (x0, y0)
  3. Calculate the constants Δx, Δy, 2Δy, and (2Δy - x) and get the first value for the decision parameter as:

                                              p     = 2 D y - D x

  1. At each xk along the line, starting at k = 0, perform the following If pk < 0, the next point to plot is (xk+1, yk ) and:

                                p k + 1 =p    + 2 D y

                   Otherwise, the next point to plot is (xk+1, yk+1) and:

                                         p k + 1 =p k   + 2 D y - 2 D x


5. Repeat step 4 (Δx – 1) times

NOTE: The algorithm and derivation above assumes slopes are less than 1. For other slopes we need to adjust the algorithm slight






void main()


int x,y,x1,y1,x2,y2,p,dx,dy;

int gd=DETECT,gm;


printf("\nEnter the x-coordinate of the first point ::"); scanf("%d",&x1);

printf("\nEnter the y-coordinate of the first point ::"); scanf("%d",&y1);

printf("\nEnter the x-coordinate of the second point ::"); scanf("%d",&x2);

printf("\nEnter the y-coordinate of the second point ::"); scanf("%d",&y2);

x=x1; y=y1; dx=x2-x1; dy=y2-y1;


p=(2*dy-dx); while(x<=x2)







x=x+1; p=p+2*dy;

x=x+1; y=y+1;





getch(); closegraph();




Rusma Khadka
Jan 1, 2023
More related questions

Questions Bank

View all Questions