Bresenhams Line Algorithm
Bresenhams 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.
In this method, next pixel selected is that one who has the least distance from
true line.
Assume a pixel P1'(x1',y1'),then select subsequent pixels as we work our may to the
night, one pixel position at a time in the horizontal direction toward
P2'(x2',y2').
This difference is
s-t = (y-yi)-[(yi+1)-y]
= 2y - 2yi -1
We can write the decision variable di+1 for the next slip on
di+1=2△y.xi+1-2△x.yi+1+c
di+1-di=2△y.(xi+1-xi)- 2△x(yi+1-yi)
Finally, we calculate d1
d1=△x[2m(x1+1)+2b-2y1-1]
d1=△x[2(mx1+b-y1)+2m-1]
Advantage:
1. It involves only integer arithmetic, so it is simple.
3. It can be implemented using hardware because it does not use multiplication and
division.
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.
Step9: Increment x = x + 1
Step11: Go to step 7
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
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
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;
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;
}
}
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;
}
Output:
← prevnext →
MySQL tutorial
MySQL
Python tutorial
Python
smartsheet
Smartsheet
affiliate marketing
Affiliate M.
Proc*C
Proc*C
GDB
GDB
Fuzzy Logic
Fuzzy Logic
Preparation
Aptitude
Aptitude
Logical Reasoning
Reasoning
Verbal Ability
Verbal A.
Interview Questions
Interview
Trending Technologies
Artificial Intelligence Tutorial
AI
AWS Tutorial
AWS
Selenium tutorial
Selenium
Cloud tutorial
Cloud
Hadoop tutorial
Hadoop
ReactJS Tutorial
ReactJS
Angular 7 Tutorial
Angular 7
Blockchain Tutorial
Blockchain
Git Tutorial
Git
DevOps Tutorial
DevOps
B.Tech / MCA
DBMS tutorial
DBMS
DAA tutorial
DAA
html tutorial
Web Tech.
Automata Tutorial
Automata
C Language tutorial
C
C++ tutorial
C++
Java tutorial
Java
Python tutorial
Python
List of Programs
Programs