0% found this document useful (0 votes)
72 views22 pages

Bresenham's Line Drawing Algorithm: Nehrurevathy Department of Bca

Bresenham's line algorithm is an efficient method for drawing lines on a digital display. It uses only integer arithmetic like addition, subtraction and multiplication, which can be performed rapidly in hardware. The algorithm works by calculating the next pixel position along the line based on error terms, generating points without duplicates. It is faster than other line drawing algorithms as it avoids floating point calculations.

Uploaded by

raji thangu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views22 pages

Bresenham's Line Drawing Algorithm: Nehrurevathy Department of Bca

Bresenham's line algorithm is an efficient method for drawing lines on a digital display. It uses only integer arithmetic like addition, subtraction and multiplication, which can be performed rapidly in hardware. The algorithm works by calculating the next pixel position along the line based on error terms, generating points without duplicates. It is faster than other line drawing algorithms as it avoids floating point calculations.

Uploaded by

raji thangu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Bresenham's Line Drawing

Algorithm
NEHRUREVATHY
DEPARTMENT OF BCA
Bresenham's Line Algorithm

• This algorithm is used for scan converting a


line.
• It was developed by Bresenham.
• It is an efficient method because it involves
only integer addition, subtractions, and
multiplication operations.
• These operations can be performed very
rapidly so lines can be generated quickly.
The method work as follows:
• Starting point is (x0,y0)
• Pixel point is (xk,yk)
• Next pixel position is {(xk+1,yk) and
(xk+1,yk+1)}
• The position xk+1 is calculated as
Y=m(xk+1)+b-----------Equation-1.
Bresenham's Line Algorithm
Bresenham's Line Algorithm(contd..)
• Calculate d1 and d2:
• d1= y-yk
• d2= (yk+1)-y
• Subtract d1-d2:
d1-d2 = y - yk – yk -1+y [sub y=m(xk+1)+b]
= m(xk+1)-yk - yk -1 + m(xk+1)+b+b
= 2m(xk +1)+2b-2yk -1
Bresenham's Line Algorithm(contd..)
• For Kth term:
Pk=Δx(d2-d1)
Pk =Δx(2m(xk +1)+2b-2yk -1)
Pk =Δx .(2m(xk +1)+2b. Δx-2yk . Δx –Δx
Pk = Δx .2mxk + Δx.2m+2b.Δx-2yk .Δx –Δx
[Assume m=Δy/Δx]
Pk = Δx .2 .Δy/Δx.xk + Δx.2. Δy/Δx +2b.Δx-2yk
.Δx –Δx
Bresenham's Line Algorithm(contd..)
Pk = 2 .Δyxk + 2. Δy +2b.Δx-2yk .Δx –Δx
Pk = 2 .Δyxk -2yk .Δx + 2. Δy +2b.Δx –Δx
Pk = 2 .Δyxk -2yk .Δx + 2. Δy –Δx(2b –1)
[Assume C= 2. Δy –Δx(2b –1)]
Pk = 2 .Δyxk -2yk .Δx +C
Pk+1 = 2 .Δyxk+1 -2yk+1 .Δx +C
Pk+1 - Pk = 2 .Δyxk+1 -2yk+1 .Δx +C - 2 .Δyxk
+2yk .Δx -C
Bresenham's Line Algorithm(contd..)
Pk+1 - Pk = 2 .Δy[xk+1 – xk ]-2 Δx [yk+1 - yk ]
[ Assume xk+1 = xk + 1]
Pk+1 = Pk +2 .Δy[ +1 ]-2 Δx [yk+1 - yk ]
Pk+1 = Pk +2 .Δy -2 Δx [yk+1 - yk ]
[where yk+1 - yk is either 0 or 1]
The first parameter p0 is calculated as
p0= 2 Δy - Δx
Bresenham's Line Algorithm
Bresenham's Line Algorithm:
Step1: Start Algorithm
Step2: Declare variable x1,x2,y1,y2,d,i1,i2,dx,dy
Step3: Enter value of x1,y1,x2,y2
Where x1,y1are coordinates of starting
point and x2,y2 are coordinates of Ending
point.
Bresenham's Line Algorithm
Step4: Calculate dx = x2-x1
Calculate dy = y2-y1
Calculate i1=2*dy
Calculate i2=2*(dy-dx)
Calculate d=i1-dx
Step5: Consider (x, y) as starting point and xendas maximum possible
value of x.
If dx < 0
Then x = x2
y = y2
xend=x1
If dx > 0
Then x = x1
y = y1
xend=x2
Bresenham's Line Algorithm
Step6: Generate point at (x,y)coordinates.
Step7: Check if whole line is generated.
If x > = xend
Stop.
Step8: Calculate co-ordinates of the next pixel
If d < 0
Then d = d + i1
If d ≥ 0
Then d = d + i2
Increment y = y + 1
Bresenham's Line Algorithm
Step9: Increment x = x + 1
Step10: Draw a point of latest (x, y) coordinates
Step11: Go to step 7
Step12: End of Algorithm
Example: Starting and Ending position of the line
are (1, 1) and (8, 5). Find intermediate points.
Solution: x1=1
y1=1
x2=8
y2=5
Bresenham's Line Algorithm-Example:
dx= x2-x1=8-1=7
dy=y2-y1=5-1=4
I1=2* ∆y=2*4=8
I2=2*(∆y-∆x)=2*(4-7)=-6
d = I1-∆x=8-7=1
Bresenham's Line Algorithm-Example:
X y d=d+I1 or I2
1 1 d+I2=1+(-6)=-5
2 2 d+I1=-5+8=3
3 2 d+I2=3+(-6)=-3
4 3 d+I1=-3+8=5
5 3 d+I2=5+(-6)=-1
6 4 d+I1=-1+8=7
7 4 d+I2=7+(-6)=1
8 5
Bresenham's Line Algorithm
Program to implement Bresenham's
Line Drawing Algorithm:
#include<stdio.h>
#include<graphics.h>
void drawline(int x0, int y0, int x1, int y1)
{
int dx, dy, p, x, y;
dx=x1-x0;
dy=y1-y0;
x=x0;
y=y0;
p=2*dy-dx;
Program to implement Bresenham's
Line Drawing Algorithm:
while(x<x1)
{
if(p>=0)
{
putpixel(x,y,7);
y=y+1;
p=p+2*dy-2*dx;
}
else
{
putpixel(x,y,7);
p=p+2*dy;}
x=x+1;
}
}
Program to implement Bresenham's
Line Drawing Algorithm:
int main()
{
int gdriver=DETECT, gmode, error, x0, y0, x1, y1;
initgraph(&gdriver, &gmode, "c:\\turboc3\\bgi");
printf("Enter co-ordinates of first point: ");
scanf("%d%d", &x0, &y0);
printf("Enter co-ordinates of second point: ");
scanf("%d%d", &x1, &y1);
drawline(x0, y0, x1, y1);
return 0;
}
Advantage and Disadvantage :

Advantage:
1. It involves only integer arithmetic, so it is simple.
2. It avoids the generation of duplicate points.
3. It can be implemented using hardware because it does not
use multiplication and division.
4. It is faster as compared to DDA (Digital Differential
Analyzer) because it does not involve floating point
calculations like DDA Algorithm.
Disadvantage:
1. This algorithm is meant for basic line drawing only
Initializing is not a part of Bresenham's line algorithm. So to
draw smooth lines, you should want to look into a different
algorithm.

You might also like