×

Algorithms Tutorial

Searching Algorithms

Dynamic Programming

Graph Algorithms

Backtracking Algorithms

Recursion

Operating System Algorithms

Miscellaneous Topics

Line Drawing Algorithm

In this article, we are going to learn about Line-Drawing algorithms by DDA (Digital Differential analyzer) algorithms and Bresenham's algorithm in computer graphics.
Submitted by Abhishek Kataria, on July 27, 2018

Line drawing algorithms

  • The equation for a straight line is y=mx+b
  • In this m represent a slope of a line which can be calculated by the m=y2-y1/x2-x1 where (x1, y1) are the starting position of the points and (x2, y2) are the end positions of the points.
  • There are generally three cases arises, which are:
    1. If an angle is greater than 45 degree then it means the slope is greater than 1 which also mean that dy/dx>1.
    2. If an angle is less than 45 degree then it means the slope is less than 1 which also mean that dy/dx<1.
    3. If an angle is equal to 45 degrees then it means the slope is 1 which also means that dy/dx=1.
  • The increment in x can be calculated by the x2-x1 divided by a total number of steps. Similarly increment of y can be calculated by the y2-y1 divided by the total number of steps.

DDA Algorithm

This is a line drawing algorithm which is named as Digital Differential Analyzer (DDA). Basically, it uses the floor function which takes the extra time for generating a line. The DDA algorithm is a faster method for calculating a pixel position for a direct use of it. In some cases, the line drawn by the DDA algorithm is not smooth.

    Algorithm DDA (x1, y1, x2, y2)
    {
        dx=x2-x1;
        dy=y2-y1;

        if (abs(dx)>abs(dy))
            step=abs(dx)
        else
            step=abs(dy)
    
        x increment= dx/step
        y increment= dy/step
    
        for(i=1;i<=step;i++)
        {
            putpixel (x1,y1);
            x1=x1+increment;
            y1=y1+increment;
        }
    }

Conclusion:

In this algorithm for finding a position of a point, there can be an increment in both x coordinate or can be in a y coordinate. On the basis of it, there are three cases generated which are as given below:

  1. If the value of m is less than 1, then x=x+1 and y=y+m.
  2. If the value of m is greater than 1, then x=x+m and y=y+1.
  3. If the value of m is equal to 1, then x=x and y=y.

Bresenham's Algorithm

This is an algorithm which is used for drawing a line accurately and efficiently which was developed by Bresenham's. Here generally, decision parameter is used for finding the next value from the initial one. According to this algorithm value of x will always be incremented but the value of y will be incremented or not it depends upon the decision parameter. This is a faster algorithm and less expensive to implement. There are no criteria of a round of the value in this algorithm which makes this algorithm faster and accurate.

Steps for implementing Bresenham's algorithm:

    1.	Read the end points (x1, y1) and (x2, y2).
    2.	dx=x2-x1 
        dy=y2-y1
    3.	x=x1, y=y1
    4.	e=2dy-dx where, e is a decision parameter.
    5.	While(e>=0)
        {
          y=y+1
          e=e-2dx
        }
        X=x+1
        e=e+2dy
    6.	i<=dx , here i is only dependent upon the value of x. 

Related Tutorials



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.