line algorthim

50
 Bresenham Line Drawing Algorithm, Circle Drawing & Polygon Filling

Upload: midhun-chakravarthy

Post on 03-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 1/50

 

Bresenham Line

Drawing Algorithm,Circle Drawing &

Polygon Filling

Page 2: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 2/50

2

of

50Contents

In today’s lecture we’ll have a look at:  – Bresenham’s line drawing algorithm 

 – Line drawing algorithm comparisons

 – Circle drawing algorithms•  A simple technique

• The mid-point circle algorithm

 – Polygon fill algorithms

 – Summary of raster drawing algorithms

Page 3: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 3/50

3

of

50DDA

Digital differential analyser

Y=mx+c

For m<1

∆y=m∆x 

For m>1

∆x=∆y/m 

Page 4: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 4/50

4

of

50Question

 A line has two end points at (10,10) and(20,30). Plot the intermediate points using

DDA algorithm.

Page 5: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 5/50

5

of

50The Bresenham Line Algorithm

The Bresenham algorithm isanother incremental scan

conversion algorithm

The big advantage of thisalgorithm is that it uses only

integer calculations

J a c k B r e s e n h a mworked for 27 years at

IBM before entering

academia. Bresenham

developed his famous

algorithms at IBM in

t h e e a r l y 1 9 6 0 s

Page 6: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 6/50

6

of

50The Big Idea

Move across the x axis in unit intervals andat each step choose between two different y 

coordinates

2 3 4 5

2

4

3

5 For example, fromposition (2, 3) we

have to choose

between (3, 3) and

(3, 4)

We would like the

point that is closer to

the original line

(x k 

, y k 

)

(x k +1, y k )

(x k +1, y k +1)

Page 7: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 7/50

7

of

50

The y coordinate on the mathematical line at

 xk +1 is: 

Deriving The Bresenham Line Algorithm

 At sample position xk +1 the vertical

separations from the

mathematical line arelabelled d upper  and d lower

b xm y k    )1(

y

y k 

 

y k+ 1 

x k + 1

d lower  

d upper  

Page 8: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 8/50

8

of

50

So, d upper  and d lower  are given as follows:

and:

We can use these to make a simple decision

about which pixel is closer to the mathematical

line

Deriving The Bresenham Line Algorithm

(cont…) 

k lower    y yd   

k k    yb xm  )1(

 y yd  k upper    )1(

b xm y k k   )1(1

Page 9: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 9/50

9

of

50

This simple decision is based on the differencebetween the two pixel positions:

Let’s substitute m with ∆ y/∆ x where ∆ x and 

∆ y are the differences between the end-points:

Deriving The Bresenham Line Algorithm

(cont…) 

122)1(2     b y xmd d  k k upper lower 

)122)1(2()(  

  b y x x

 y xd d  x k k upper lower 

)12(222     b x y y x x y k k 

c y x x y k k    22

Page 10: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 10/50

10

of

50

So, a decision parameter pk  for the k th stepalong a line is given by:

The sign of the decision parameter pk  is the

same as that of d lower 

  – d upper

If pk  is negative, then we choose the lower

pixel, otherwise we choose the upper pixel

Deriving The Bresenham Line Algorithm

(cont…) 

c y x x y

d d  x p

k k 

upper lower k 

22

)(

Page 11: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 11/50

11

of

50

Remember coordinate changes occur alongthe x axis in unit steps so we can do

everything with integer calculations

 At step k +1 the decision parameter is givenas:

Subtracting pk  from this we get:

Deriving The Bresenham Line Algorithm

(cont…) 

c y x x y p k k k      111 22

)(2)(2 111   k k k k k k    y y x x x y p p    

Page 12: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 12/50

12

of

50

But, xk+1 is the same as xk +1 so:

where yk+1 - yk  is either 0 or 1 depending onthe sign of pk

The first decision parameter p0 is evaluated

at (x0, y0) is given as:

Deriving The Bresenham Line Algorithm

(cont…) 

)(22 11   k k k k    y y x y p p    

 x y p   20

Page 13: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 13/50

13

of

50The Bresenham Line Algorithm

BRESENHAM’S LINE DRAWING ALGORITHM (for |m| < 1.0)

1. Input the two line end-points, storing the left end-point

in ( x0 , y0)

2. Plot the point ( x0 , y0)

3. Calculate the constants Δ x, Δ y, 2Δ y, and (2Δ y - 2Δ x)

and get the first value for the decision parameter as:

4. At each xk  along the line, starting at k = 0, perform the

following test. If pk  < 0, the next point to plot is

(xk +1, yk  ) and:

 x y p   20

 y p p k k   21

Page 14: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 14/50

14

of

50The Bresenham Line Algorithm (cont…) 

ACHTUNG! The algorithm and derivation

above assumes slopes are less than 1. for

other slopes we need to adjust the algorithm

slightly.

Otherwise, the next point to plot is ( xk +1, yk +1) and:

5. Repeat step 4 (Δ x – 1) times

 x y p p k k    221

Page 15: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 15/50

15

of

50 Adjustment

For m>1, we will find whether we willincrement x while incrementing y each time.

 After solving, the equation for decisionparameter pk will be very similar, just the x

and y in the equation will get interchanged. 

Page 16: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 16/50

16

of

50Bresenham Example

Let’s have a go at this Let’s plot the line from (20, 10) to (30, 18) 

First off calculate all of the constants:

 – Δ x: 10

 – Δ y: 8 

 – 2Δ y: 16 

 – 2Δ y - 2Δ x: -4

Calculate the initial decision parameter p0:

 –  p0 = 2Δ y  –  Δ x = 6 

Page 17: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 17/50

17

of

50Bresenham Example (cont…) 

17

16

15

14

13

12

11

10

18

292726252423222120 28 30

k pk  (xk+1,yk+1)

0

1

2

3

4

56

7

8

9

Page 18: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 18/50

18

of

50Bresenham Exercise

Go through the steps of the Bresenham linedrawing algorithm for a line going from

(21,12) to (29,16)

Page 19: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 19/50

19

of

50Bresenham Exercise (cont…) 

17

16

15

14

13

12

11

10

18

292726252423222120 28 30

k pk  (xk+1,yk+1)

0

1

2

3

4

56

7

8

Page 20: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 20/50

20

of

50Bresenham Line Algorithm Summary

The Bresenham line algorithm has thefollowing advantages:

 – An fast incremental algorithm

 – Uses only integer calculationsComparing this to the DDA algorithm, DDA

has the following problems:

 – Accumulation of round-off errors can makethe pixelated line drift away from what was

intended

 – The rounding operations and floating point

arithmetic involved are time consuming

Page 21: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 21/50

21

of

50 A Simple Circle Drawing Algorithm

The equation for a circle is:

wherer  is the radius of the circle

So, we can write a simple circle drawing

algorithm by solving the equation for y at

unit x intervals using:

222 r  y x  

22  xr  y  

Page 22: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 22/50

22

of

50

 A Simple Circle Drawing Algorithm

(cont…) 

20020 22

0    y

20120 22

1    y

20220 22

2    y

61920 2219    y

02020 22

20    y

Page 23: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 23/50

23

of

50

 A Simple Circle Drawing Algorithm

(cont…) 

However, unsurprisingly this is not a brilliantsolution!

Firstly, the resulting circle has large gapswhere the slope approaches the vertical

Secondly, the calculations are not veryefficient

 – The square (multiply) operations

 – The square root operation – try really hard toavoid these!

We need a more efficient, more accurate

solution

Page 24: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 24/50

24

of

50Polar coordinates

X=r*cosθ+xc

Y=r*sinθ+yc

0º≤θ≤360º

Or

0 ≤ θ ≤6.28(2*π)

Problem:

 – Deciding the increment in θ 

 – Cos, sin calculations

Page 25: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 25/50

25

of

50Eight-Way Symmetry

The first thing we can notice to make our circledrawing algorithm more efficient is that circles

centred at (0, 0) have eight-way symmetry

(x, y)

(y, x)

(y, -x)

(x, -y)(-x, -y)

(-y, -x)

(-y, x)

(-x, y)

2

 R

Page 26: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 26/50

26

of

50Mid-Point Circle Algorithm

Similarly to the case with lines,there is an incremental

algorithm for drawing circles – 

the mid-point circle algorithmIn the mid-point circle algorithm

we use eight-way symmetry so

only ever calculate the pointsfor the top right eighth of a

circle, and then use symmetry

to get the rest of the points

The mid-point circle

a l g o r i t h m w a sdeveloped by Jack

Bresenham, who we

heard about earlier.

Bresenham’s  patent

for the algorithm canb e v i e w e d h e r e .

Page 27: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 27/50

27

of

50Mid-Point Circle Algorithm (cont…) 

6

2 3 41

5

4

3

Page 28: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 28/50

28

of

50Mid-Point Circle Algorithm (cont…) 

M

6

2 3 41

5

4

3

Page 29: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 29/50

29

of

50Mid-Point Circle Algorithm (cont…) 

M

6

2 3 41

5

4

3

Page 30: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 30/50

30

of

50Mid-Point Circle Algorithm (cont…) 

(x k +1, y k  )

(x k +1, y k -1)

(x k , y k  ) Assume that we have just plotted point (xk  , yk  )

The next point is a

choice between (xk +1, yk  )and (xk +1, yk -1)

We would like to choose

the point that is nearest tothe actual circle

So how do we make this choice?

Page 31: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 31/50

31

of

50Mid-Point Circle Algorithm (cont…) 

Let’s re-jig the equation of the circle slightlyto give us:

The equation evaluates as follows:

By evaluating this function at the midpointbetween the candidate pixels we can make

our decision

222),(   r  y x y x f  circ  

 

,0

,0

,0

 ),(   y x f  circ

 boundarycircletheinsideis),(if    y x

 boundarycircleon theis),(if    y x

 boundarycircletheoutsideis),(if    y x

Page 32: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 32/50

32

of

50Mid-Point Circle Algorithm (cont…) 

 Assuming we have just plotted the pixel at( xk  ,yk ) so we need to choose between

( xk +1 ,yk ) and ( xk +1 ,yk -1)

Our decision variable can be defined as:

If pk  < 0 the midpoint is inside the circle andand the pixel at yk  is closer to the circle

Otherwise the midpoint is outside and yk -1 is

closer

222 )2

1()1(

)2

1,1(

r  y x

 y x f   p

k k 

k k circk 

33

Page 33: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 33/50

33

of

50Mid-Point Circle Algorithm (cont…) 

To ensure things are as efficient as possiblewe can do all of our calculationsincrementally

First consider:

or:

where yk+1 is either yk  or yk -1 depending on

the sign of pk

22

1

2

111

21]1)1[(

21,1

r  y x

 y x f   p

k k 

k k circk 

1)()()1(2 1

22

11       k k k k k k k    y y y y x p p

34

Page 34: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 34/50

34

of

50Mid-Point Circle Algorithm (cont…) 

The first decision variable is given as:

Then if pk  < 0 then the next decision variable

is given as:

If pk  > 0 then the decision variable is:

r r 

r  f   p circ

45

)

2

1(1

)2

1,1(

22

0

12 11       k k k    x p p

1212 11       k k k k    y x p p

35

Page 35: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 35/50

35

of

50The Mid-Point Circle Algorithm

MID-POINT CIRCLE ALGORITHM• Input radius r  and circle centre (xc , yc ), then set the

coordinates for the first point on the circumference of a

circle centred on the origin as:

• Calculate the initial value of the decision parameter as:

• Starting with k = 0 at each position xk , perform the

following test. If pk < 0, the next point along the circle

centred on (0, 0) is (xk +1, yk  ) and:

),0(),( 00   r  y x  

r  p   4

50

1211

      k k k 

  x p p

36

Page 36: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 36/50

36

of

50The Mid-Point Circle Algorithm (cont…) 

Otherwise the next point along the circle is (xk +1, yk -1) and:

4. Determine symmetry points in the other seven octants5. Move each calculated pixel position (x, y) onto the

circular path centred at (xc , yc ) to plot the coordinate

values:

6. Repeat steps 3 to 5 until x >= y

111 212     k k k k    y x p p

c x x x     c y y y  

37

Page 37: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 37/50

37

of

50Mid-Point Circle Algorithm Example

To see the mid-point circle algorithm inaction lets use it to draw a circle centred at

(0,0) with radius 10

38 Mid Point Circle Algorithm Example

Page 38: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 38/50

38

of

50

Mid-Point Circle Algorithm Example

(cont…) 

9

76

5

4

3

2

1

0

8

976543210 8 10

10k pk  (xk+1,yk+1) 2xk+1  2yk+1

0

1

2

3

4

5

6

39

Page 39: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 39/50

39

of

50Mid-Point Circle Algorithm Exercise

Use the mid-point circle algorithm to drawthe circle centred at (0,0) with radius 15

40 Mid Point Circle Algorithm Example

Page 40: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 40/50

40

of

50

Mid-Point Circle Algorithm Example

(cont…) 

k pk  (xk+1,yk+1) 2xk+1  2yk+1

0

1

2

3

4

5

6

78

9

10

11

12

9

7

6

54

3

2

1

0

8

976543210 8 10

10

131211 14

15

13

12

14

11

16

15 16

41

Page 41: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 41/50

41

of

50Mid-Point Circle Algorithm Summary

The key insights in the mid-point circlealgorithm are:

 – Eight-way symmetry can hugely reduce the

work in drawing a circle

 – Moving in unit steps along the x axis at each

point along the circle’s edge we need to

choose between two possible y coordinates

42

Page 42: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 42/50

42

of

50Filling Polygons

So we can figure out how to draw lines andcircles

How do we go about drawing polygons?

We use an incremental algorithm known asthe scan-line algorithm

43

Page 43: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 43/50

43

of

50Scan-Line Polygon Fill Algorithm

2

4

6

8

10 Scan Line

02 4 6 8 10 12 14 16

44

Page 44: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 44/50

44

of

50Scan-Line Polygon Fill Algorithm

The basic scan-line algorithm is as follows: – Find the intersections of the scan line with all

edges of the polygon

 – Sort the intersections by increasing xcoordinate

 – Fill in all pixels between pairs of intersections

that lie interior to the polygon

45 Scan Line Polygon Fill Algorithm

Page 45: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 45/50

45

of

50

Scan-Line Polygon Fill Algorithm

(cont…) 

46

Page 46: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 46/50

46

of

50Line Drawing Summary

Over the last couple of lectures we havelooked at the idea of scan converting lines

The key thing to remember is this has to be

FASTFor lines we have either DDA or Bresenham

For circles the mid-point algorithm

47

Page 47: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 47/50

47

of

50Blank Grid

48

Page 48: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 48/50

48

of

50Blank Grid

49

Page 49: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 49/50

49

of

50Blank Grid

9

7

6

5

4

3

2

1

0

8

976543210 8 10

10

50

Page 50: Line Algorthim

8/13/2019 Line Algorthim

http://slidepdf.com/reader/full/line-algorthim 50/50

50

of

50Blank Grid