Professional Documents
Culture Documents
Bresenham's Line Algorithm
Bresenham's Line Algorithm
P2
yi+1
yi
P1 S
xi
xi+1
(b)
If T is chosen, we have
xi+1 = xi + 1
yi+1 = yi + 1
The actual y coordinate of line at x = xi+1 is
y = mx +b
= m xi+1 + b
= m(xi + 1) + b
______(1)
The distance from S to actual line in y direction is
s = y yi.
The distance from T to actual line in y direction is
t = (yi+1) y
2( m(xi + 1) + b ) 2yi 1
= 2m(xi + 1) + 2b 2yi 1
_____(B)
Put m = y / x
s t = 2y (xi + 1) + 2b 2yi 1
x
x (s t) = 2y (xi + 1) + ( 2b 2yi 1 ) x
______(A)
= 2yxi + 2y + ( 2b 2yi 1 ) x
= 2yxi + 2y + 2bx 2yix x
= 2yxi 2yix + 2y + 2bx x
= 2yxi 2yix + 2y + (2b 1) x
= 2yxi 2x yi + C
_____(2)
where, C = 2y + (2b 1) x
Similarly, di+1 = 2y xi+1 2x yi+1 + C _____(3)
xi+1 = xi +1
________(4)
Thus we have,
di+1 = di + 2(y - x)
if di > 0
di + 2y
if di < 0
Now we calculate d1 from the original value
of di
From (A) di = x(s t)
From (B) = x(2m(xi + 1) + 2b 2yi 1 )
d1 = x(2m(x1 + 1) + 2b 2y1 1 )
= x[2(mx1 + b - y1) + 2m 1 )
But y = mx + b
mx + b y = 0
mx1 + b y1 = 0
Thus d1 = x[2(0) + 2m 1]
d1 = x[ 2m 1]
= x [ 2y 1 ]
x
d1 = 2y x
Algorithm:
Algorithm for scan converting a line from
P1(x1,y1) to P2(x2,y2) with x1<x2 &
0<m<1.
(i) int x = x1 and y = y1
(ii) int dx = x2 x1
dy = y2 y1
dT = 2(dy dx)
dS = 2dy
(iii) int d = 2dy dx
dy=
dT=
dS= d=
3
4
5
6
-6
Plot
2dy-dx
1
1,1
-5
2,2
3,2
-3
4,3
5,3
-1
6,4