line algorthim
TRANSCRIPT
8/13/2019 Line Algorthim
http://slidepdf.com/reader/full/line-algorthim 1/50
Bresenham Line
Drawing Algorithm,Circle Drawing &
Polygon Filling
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
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
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.
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
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)
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
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
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
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
)(
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
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
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
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
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.
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
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
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)
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
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
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
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
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
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
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
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 .
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
8/13/2019 Line Algorthim
http://slidepdf.com/reader/full/line-algorthim 45/50
45
of
50
Scan-Line Polygon Fill Algorithm
(cont…)
46
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
8/13/2019 Line Algorthim
http://slidepdf.com/reader/full/line-algorthim 47/50
47
of
50Blank Grid
48
8/13/2019 Line Algorthim
http://slidepdf.com/reader/full/line-algorthim 48/50
48
of
50Blank Grid
49
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
8/13/2019 Line Algorthim
http://slidepdf.com/reader/full/line-algorthim 50/50
50
of
50Blank Grid