15
Bresenham’s Line Algorithm .

Lab lecture 2 bresenham

Embed Size (px)

Citation preview

Page 1: Lab lecture 2 bresenham

Bresenham’s Line Algorithm

.

Page 2: Lab lecture 2 bresenham

2of13

The Problem (cont…)

What happens when we try to draw this on a pixel based display?

How do we choose which pixels to turn on?

Page 3: Lab lecture 2 bresenham

3of13

In Bresenham’s line drawing algorithm the incremental integer calculations are used to scan convert the lines, so that, the circles and the other curves can be displayed.

?? ?

?

Page 4: Lab lecture 2 bresenham

4of13

.The next sample positions can be plotted either at (3,2) or (3,3) ?

?? ?

?

(2,2) (3,2)

(3,3)

Page 5: Lab lecture 2 bresenham

5of13

Page 6: Lab lecture 2 bresenham

6of13

For lines with positive slope m<1The pixel positions on line can be identified by doing sampling at unit x intervals. The process of sampling begins from the pixel position (X0,Y0) and proceeds by plotting the pixels whose ‘Y’ value is nearest to the line path. If the pixel to be displayed occurs at a position (Xk, Yk) then the next pixel is either at (Xk+1,Yk) or (Xk+1,Yk+1) i.e, (3,2) or (3,3) The ‘Y’ coordinate at the pixel position Xk+1 can be obtained from

Y=m(Xk+1)+b . . . . . . . . . . ……. eq 1

Page 7: Lab lecture 2 bresenham

7of13

the separation between (Xk+1,Yk) and (Xk+1,Y) is d1 and the separation between (Xk+1,Y) and (Xk+1, Yk+1) is d2 then

d1 = y – yk and

d2 = (Yk+1) – Y .

(Xk, yk)

(Xk, yk+1) (Xk+1, yk+1)

(Xk+1,yk)

P0 d1

d2

Page 8: Lab lecture 2 bresenham

8of13

Y=m(Xk+1)+b . . . . . . . ……. eq 1d1=y – yk

d1=m(xk+1)+b – Yk ( from eqn (1) …..( 2) And d2= (Yk+1) – Y

=(YK+1) – [m(Xk+1)+b]=(YK+1) – m(Xk+1) – b …….(3)

The difference is given asd1-d2 =

= m(Xk+1)+b-Yk-[(Yk+1)-m(Xk+1)-b] =m(Xk+1)+b-Yk-(Yk+1)+m(Xk+1)+b

d1-d2 = 2m(Xk+1)-2Yk+2b – 1 ………(4)

Page 9: Lab lecture 2 bresenham

9of13

Contd..A decision parameter Pk can be obtained by substituting m= dy/dx in equation 4

d1 – d2 = 2m(Xk+1)-2Yk+2b – 1 = 2 dy/dx (Xk+1) – 2Yk + 2b – 1 = 2 dy(Xk+1)-2 dx.Yk + 2b.dx -dx

dxdx(d1-d2) = 2 dy(Xk+1)-2 dx.Yk + 2b.dx - dx

= 2 dyXk+2 dy-2 dx.Yk + 2b.dx -dx

= 2 dyXk- 2 dx.Yk + c Where, dx(d1-d2) = Pk and

c= 2 dy+ dx(2b-1)Pk = 2 dyXk- 2 dx.Yk + c . . . . . . . . . . . . . . . . . . . … …(5 )

The value of c is constant and is independent of the pixel position. It can be deleted in the recursive calculations, of for Pk

if d1 < d2 (i.e, Yk is nearer to the line path than Yk+1) then, Pk is negative. If Pk is –ve, a lower pixel (Yk)is plotted else, an upper pixel (Yk+1)is plotted.

At k+1 step, the value of Pk is given asPK+1 = 2 dyXk+1- 2 dx.Yk+1 + c …………………………………..(6 ) (from 5)

The starting parameter P0 at the pixel position (X0,Y0) is given as P0 = 2dy – dx

Page 10: Lab lecture 2 bresenham

10of13

(X0, y0)

(X0, y0+1) (X0+1, y0+1)

(X0+1,y0)

P0 d1

d2

y=mx+c is the eq of lineIn col 2 the line is passing through x0+1 so the y value is given byy=m(x0+1)+c (green dot)Now we need to find out the values of d1 and d2

d1= y-y0

d2=(y0+1)-yd1=m(x0+1) – y0 and d2= (y0+1) - m(x0+1)

d1-d2=[mx0+m – y0] - [(y0+1) - mx0-m] =mx0+m – y0 - y0-1 + mx0+m = 2mx0+2m –2y0-1 = 2mx0+2m –2mx0-1 (y=mx+c passes thr (x0, y0) so we can say y0=mx0+c)d1-d2 = 2mx0+2m –2mx0-1 d1-d2=2m-1 ( m= ∆y / ∆x)d1-d2 = 2∆y/ ∆x - 1

P0= 2∆y - ∆x

Col 1 Col 2

∆x(d1-d2) = 2∆y - ∆x ∆x(d1-d2) = 2∆y - ∆x

Page 11: Lab lecture 2 bresenham

11of13

Bresenham’s algorithm

Step 1: Enter the 2 end points for a line and store the left end point in (X0,Y0).

Step 2: Plot the first point be loading (X0,Y0) in the frame buffer.Setp 3: determine the initial value of the decision parameter by

calculating the constants dx, dy, 2dy and 2dy-2dx asP0 = 2dy –dx

Step 4: for each Xk, conduct the following test, starting from k= 0

If Pk <0, then the next point to be plotted is at (Xk+1, Yk) andPk+1 = Pk + 2dy

Else, the next point is (Xk+1, Yk+1) and Pk+1 = Pk + 2dy –2dx (step 3)

Step 5: iterate through step (4) dx times.

Page 12: Lab lecture 2 bresenham

12of13

Task

Let the given end points for the line be (30,20) and (40, 28)

Track the line using Bresenham Algortithm.

Page 13: Lab lecture 2 bresenham

13of13

The starting point (x0, y0)=(30,20) and the successive pixel positions are given in the following table

K Pk (Xk+1, Yk+1)

0 6 (31,21)1 2 (32,222 -2 33,223 14 34,234 10 35,245 6 36,256 2 37,267 -2 38,268 14 39,279 10 40,28

Page 14: Lab lecture 2 bresenham

14of13

End points (30,20) (40,28)dx=x2-x1=40-30=10 dy= y2-y1=28-20=8P0=2dy-dx=2X8-10 = 6 >0 pt(31,21)Pk+1= pk+2dy-2dx= 6+16-20 =2 >0 (32,22)Pk+1=2+16-20 =-2 <0 (33,22)Pk+1= pk+2dy =-2+16 = 14 >0 (34,23)Pk+1= pk+2dy-2dx=14+16-20=10>0 (35,24)Pk+1=10+16-20=6 >0 (36,25)Pk+1= 6+16-20=2>0 (37,26)Pk+1=2+16-20=-2 <0 (38,26)Pk+1= pk+2dy=-2+16=14>0 (39,27)Pk+1=pk+2dy-2dx= 14+16-20=10>0 (40,28)

Page 15: Lab lecture 2 bresenham

15of13

Advantages of Bresenham’s Alg.

It uses only integer calculations So, it is faster than DDA