Bressenham's Algorithm Easily Explained
Bressenham's Algorithm Easily Explained
ADMN 2009-10
(xstart, ystart)
(Fig: 1.34 - Line path between end point positions (xend, yend) and (xstart, ystart))
26
MODULE I
ADMN 2009-10
dy
m = ---dx
That is dy = m dx
Thus for any given x interval dx along the line, we can compute the
corresponding y interval dy.
Now suppose
xi+1 xi = 1 or dx = 1
It means
xi+1 = xi + 1
Then
dy = m which means
yi+1 yi= m
That is
1
yi+1 = yi + m
Thus a unit change in x changes y by m, which is constant for a line.
We know that if
xi+1 = xi + 1, then
yi+1 = yi +m
Initializing (xi, yi) with (xstart ,ystart), the line can be generated by incrementing the
previous x values and solving the corresponding y value at each step, till xend is
reached.at each step, we make incremental calculations based on the previous step.
This is what is defined as incremental algorithm and often referred to as the Digital
Differential Analyzer (DDA) algorithm.
We know
dy
m = ---dx
If |m| <= 1 which means |dy| <= |dx|, we sample the line at unit x intervals. But
if |m| >1, in this a unit step in x creates a step in y that is greater than 1, which is not
desirable. In this case we reverse the roles of x and y by sampling at unit y intervals
as,
dy = yi+1 yi = 1
implies yi+1 = yi + 1
dy
m = ---dx
implies
1
xi+1 xi = --m
27
MODULE I
implies
1
xi+1 = xi +--m
yi+1 = yi + m
ADMN 2009-10
2
3
These equations are based on the assumption that xstart<xend and ystart<yend.
That is slope m is positive. But if it is not the case, we have to apply negative
increment for the other possible cases.
The algorithm for rasterizing a line according to DDA logic is presented below.
DDA ALGORITHM
1. START
2. Get the values of the starting and ending co-ordinates i.e. ,(xa,ya) and (xb,yb).
3. Find the value of slope m
m=dy/dx=((yb-ya)/(xb-xa))
4. If ImI 1 then x=1,y=mx
xk+1=xk+1,yk+1=yk+m
5. If ImI 1 then y=1,x=y/m
xk+1=xk+1/m,yk+1=yk+1
6. STOP
28
MODULE I
ADMN 2009-10
of a given line, we step to each successive column (x position) and plot the pixel
whose scan-line y value is closest to the line path. Assuming we have determined that
the pixel at (xk, yk) is to be displayed, we next need to decide which pixel to plot in
column xk+1,.Our choices are the pixels at positions (Xk+l, yk) and (xk+l, yk+l).
12
11
10
10
11
12
(Fig: 1.35 - Section of a display screen where a straight line segment is to be plotted,
starting from the pixel at column 10 on scan line 11)
50
49
48
50
51
52
53
(Fig: 1.36 - Section of a display screen where a negative slope line segment is to be
plotted, starting from the pixel at column 50 on scan line 50)
29
MODULE I
ADMN 2009-10
and
d2=(yk+1)-y
=yk+1-m(xk+1)-b
The difference between these two separations is
d1-d2=2m(xk+1)-2yk+2b-1
yk+1
d2
d1
yk
xk+1
(Fig: 1.37 - Distance between pixel positions and the line y coordinates at sampling position xk+1)
A decision parameter pkfor the kth step in the line algorithm can be obtained
by rearranging Eq. 4 so that it involves only integer calculations. We accomplish this
by substituting m = y/x, where y and x are the vertical and horizontal
separations of the endpoint positions, and defining:
pk=x(d1-d2)
=2y.xk-2x.yk+c
5
The sign of pk,is the same as the sign of dld2, since x>0 for our example.
Parameter cis constant and has the value 2y + x(2b - l), which is independentof
pixel position and will be eliminated in the recursive calculations for pk. If the pixel at
ykis closer to the line path than the pixel at yk+1(that is, dl<d2), then decision
parameter pkis negative. In that case, we plot the lower pixel; otherwise, we plot the
upper pixel.
Coordinate changes along the line occur in unit steps in either the x or y
directions. Therefore, we can obtain the values of successive decision parameters
using incremental integer calculations. At step k + 1, the decision parameter is
evaluated from Eq. 5as
pk+1=2y.xk+1-2x.yk+1+c
Subtracting Eq. 5 from the preceding equation, we have
pk+1-pk =2y(xk+1-xk)-2x(yk+1-yk)
But xk+1, = xk+ 1, so that
pk+1=pk + 2y-2x(yk+1-yk)
30
MODULE I
ADMN 2009-10
Where the term yk+1- ykis either 0 or 1, depending on the sign of parameter
pk.This recursive calculation of decision parameters is performed at each integerx
position, starting at the left coordinate endpoint of the line. The first parameter, p0, is
evaluated from Eq. 5 at the starting pixel position (xo, yo) and withm evaluated as
y/x:
We can summarize Bresenham line drawing for a line with a positive slope less
than 1 in the following listed steps. The constants 2y and 2y - 2x are calculated
once for each line to be scan converted, so the arithmetic involves only integer
addition and subtraction of these two constants.
Bresenham's Line-Drawing Algorithm for I mI<1
1. Input the twoline endpoints and store the left endpoint in (xo,yo)
2. Load (xO, yO)into the frame buffer; that is, plot the first point.
3. Calculate constants x, y, 2y, and 2y - 2x, and obtain the startingvalue for the
decision parameter as
po= 2y - x
4. At each xkalong the line, starting at k = 0, perform the following test:
If Pk< 0, the next point to plot is (xk+1,yk)and
Pk+1=P k+2y
Otherwise, the next point to plot is (xk+ 1 ,yk+ 1) and
pk+1= pk+ 2y - 2x
5. Repeat step 4 x times.
Eight-way symmetry
We can improve the process of the previous section by taking greater
advantage of the symmetry in a circle. Consider first a circle centered at the origin.
31
MODULE I
ADMN 2009-10
That is (0, 0). If the point (x, y) is on the circle the new can trivially compute
seven other points on the circle as in Fig: 1.38
-y,x
y, x
-x, y
45O
x, y
x, -y
-x, -y
-y, -x
y,-x
32
MODULE I
ADMN 2009-10
33
MODULE I
ADMN 2009-10
relative position of any point (x. y) can be determined by checking the sign of the
circle function:
fcircle(x,y)
The circle-function tests are performed for the midpositions between pixels
near the circle path at each sampling step. Thus, the circle function is the decision
parameter in the midpoint algorithm, and we can set up incremental calculations for
this function as we did in the line algorithm.
x2+y2-r2=0
yk
yk- 1
Midpoint
xk
xk+ 1
xk+2
(Fig: 1.39, Midpoint between candidate pixels at sampling position xk+1 along a
circular path)
Fig:1.39 shows the midpoint between the two candidate pixels at sampling
position xk+ 1. Assuming we have just plotted the pixel at (xk, yk), we next need to
determine whether the pixel at position (xk+ 1, yk) or the one at position(xk+ 1, yk-1) is
closer to the circle. Our decision parameter is the circle function 3-27 evaluated at the
midpoint between these two pixels:
pk = fcircle(xk+1,yk-(1/2) )
= (xk+1)2+(yk-(1/2))2-r2
If pk<0, this midpoint is inside the circle and the pixel on scan line ykis closer
to the circle boundary. Otherwise, the midposition is outside or on the circle boundary,
and we select the pixel on scan lineyk- 1.
Successive decision parameters are obtained using incremental calculations.
We obtain a recursive expression for the next decision parameter by evaluating the
circle function at sampling position xk+1+1 = xk+ 2:
pk+1 = fcircle(xk+1+1,yk+1-(1/2) )
= [(xk+1)+1]2+(yk+1-(1/2))2-r2
34
MODULE I
ADMN 2009-10
Or
pk+1=pk+2(xk+1)+(y2k+1-y2k)-(yk+1-yk)+1
Whereyk+1, is either ykor yk-1, depending on the sign of pk. increments for
obtaining pk+1, are either 2xk+1+1(if pkis negative) or 2xk+1+1-2yk+1. Evaluation of the
terms 2xk+1,n d 2yk+1,can also be done incrementallyas
2xk+1=2xk +2
2yk+1=2yk -2
At the start position (0, r), these two terms have the values 0 and 2r,
respectively. Each successive value is obtained by adding 2 to the previous value of
2xand subtracting 2 from the previous value of 2y.
The initial decision parameter is obtained by evaluating the circle function at
the start position (x0, y0) = (0, r):
p0=fcircle(1,r-(1/2) )
=1+(r-(1/2))2-r2
Or
p0=(5/4)-r
If the radius r is specified as an integer, we can simply round p0to
p0 = 1 - r(for r an integer) , since all increments are integers.
Asin Bresenham's line algorithm, the midpoint method calculates pixel
positions along the circumference of a circle using integer additions and subtractions,
assuming that the circle parameters are specified in integer screen coordinate.
We can summarize the steps in the midpoint circle algorithm as follows.
35
MODULE I
ADMN 2009-10
Example:
Given a circle radius r = 10, we demonstrate the midpoint circle algorithm
bydetermining positions along the circle octant in the first quadrant hum x = 0 to x =
y.
The initial value of the decision parameter is
p0=1-r=-9
For the circle centered on the coordinate origin, the initial point is (x0,y0) =(0,
l0), and initial increment terms for calculating the decision parameters are:
2x0=0,2y0=20
Successive decision parameter values and positions along the circle path are
calculated using the midpoint method as
K
0
1
2
3
4
5
6
pk
-9
-6
-1
6
-3
8
5
(xk+1,yk+1)
(1,10)
(2,10)
(3,10)
(4,9)
(5,9)
(6,8)
(7,7)
2xk+1
2
4
6
8
10
12
14
2yk+1
20
20
20
18
18
16
14
Properties of Ellipses
An ellipse is defined as the set of points such that the sum of the distances from
two fixed positions (foci) is the same for all points (Fig. 1.40). If the distances to the
two foci from any point P = (x, y) on the ellipse are labeled dland d2, then the general
equation of an ellipse can be stated as
d1+ d2= constant
Expressing distances d1and d2interms of the focal coordinates F1 = (x1, y1)and
F2= (x2,y2), we have
((x-x1) 2+(y-y1)2) + ((x-x2)2+(y-y2)2)=constant
A
By squaring this equation, isolating the remaining radical, and then squaring
again, we can rewrite the general ellipseequation in the form
Ax2+ By2+ Cxy+ Dx+ Ey+ F = 0
B
36
MODULE I
ADMN 2009-10
y
d1
F1
p=(x,y)
d2
F2
37
MODULE I
ADMN 2009-10
ry
yc
rx
xc
(Fig: 1:41 Ellipse centered at(xc,yc)with semimajor axis rxand semiminor axis ry)
(-x,y)
(x,y)
ry
rx
(-x,-y)
(x,-y)
1.6.1DDA ALGORITHM
To write an algorithm to generate an ellipse using the Digital Differential
AnalyzerAlgorithm ( DDA).
Equation to the ellipse is
((x-xc)/rx)2+((y-yc)/ry)2=1
where (xc,yc) - center of the ellipse.
rx- x radius of ellipse, ry-y radius of ellipse.
38
MODULE I
ADMN 2009-10
1. START
2. Get the centre (xc,yc),x radius (rx) and y radius (ry) of the ellipse.
3. The polar co-ordinates on an ellipse are
x=xc+rxcos
y=yc+r y sin
4. Plot the point(x,y) corresponding to the values of where 0<=<=360
5. STOP
Slope=-1
ry
Region 2
rx
(Fig: 1:43, Ellipse processing regions. Over region 1, the magnitude of the ellipse
slope is less than 1; over region 2, the magnitude of the slope is greater than 1)
Regions 1 and 2 (Fig. 1:43),can be process in various ways. We can start at
position (0,ry) and step clockwise along the elliptical path in the first quadrant, shifting
from unit steps in x to unit steps in y when the slope becomes less than -1.
Alternatively, we could start at (rx,0) and select points in a counterclockwise order,
39
MODULE I
ADMN 2009-10
shifting from unit steps in y to unit steps in x when the slope becomes greater than -1.
With parallel processors, we could calculate pixel positions in the two regions
simultaneously. As an example of a sequential implementation of the midpoint
algorithm, we take the start position at (0, ry) and step along the ellipse path in
clockwise order throughout the first quadrant.
We define an ellipse function from C with (xc, yc) = (0,0) as
fellipse(x,y)=r2yx2+r2xy2-r2xr2y
This has the following properties:
<0 if(x,y) is inside the ellipse boundary
fellipse(x,y)
=0 if(x,y) is on the ellipse boundary
>0if(x,y) is outside the ellipse boundary
Thus, the ellipse function fellipse(x,y) serves as the decision parameter in the
midpoint algorithm. At each sampling position, we select the next pixel along the
ellipsepath according to the sign of the ellipse function evaluated at the midpoint
between the two candidate pixels.
Midpoint Ellipse Algorithm
1. Input rx, ryand ellipse center (xc, yc), and obtain the first point on an ellipse
centered on the origin as
(x0,y0)= (0, ry)
2. Calculate the initial value of thedecision parameter in region 1 as
p10=r2y-r2xry+(1/4)r2x
3. At each xkposition in region 1, starting at k = 0, perform the following test:
If plk< 0, the next point along the ellipse centered on (0, 0) is(xk+1, yk) and
p1k+1=p1k+2r2yxk+1+r2y
Otherwise, the next point along the circle is (xk+ 1, yk- 1) and
p1k+1=p1k+2r2yxk+1-2r2xyk+1+r2y
with
2r2yxk+1=2r2yxk +2r2y
2r2xyk+1=2r2xyk -2r2x
and continue until 2r2yx2r2x y.
4. Calculate the initial value of the decision parameter in region 2 using the last point
(x0, y0) calculated in region 1 as
p20=r2y( x0+(1/2))2+r2x(y0-1)2-r2xr2y
5. At each ykposition in region 2, starting at k = 0, perform the followingtest: If
p2k>0, the next point along the ellipse centered on (0, 0) is(xk, yk-1) and
p2k+1=p2k-2r2xyk+1+r2x
Otherwise, the next point along the circle is (xk+ 1, yk - 1) and
p2k+1=p2k+2r2yxk+1-2r2xyk+1+r2x
Using the same incremental calculations for x and y as in region 1.
6. Determine symmetry points in the other three quadrants.
40
MODULE I
ADMN 2009-10
7. Move each calculated pixel position (x, y) onto theelliptical path centered on(xc, yc)
and plot the coordinate values:
x=x+xc y=y+yc
8. Repeat the steps for region 1 until 2r2yx2r2x y.
Example:
Given input ellipse parameters rx= 8 and ry= 6, we illustrate the steps in
themidpoint ellipse algorithm by determining raster positions along the ellipse path in
the first quadrant. Initial values and increments for the decision parameter calculations
are
2r2y x= 0 (with increment 2r2y= 72)
2r2x y=2r2xry(withincrement-2r2x=-128)
For region 1: The initial point for the ellipse centered on the origin is (x0, y0) =
(0,6),and the initial decision parameter value is
p10=r2y-r2xry+(1/4)r2x= -332
Successive decision parameter values and positions along the ellipse path are
calculated using the midpoint method as
k
0
1
2
3
4
5
6
p1k
-332
-224
-44
208
-108
288
244
(xk+1,y k+1)
(1,6)
(2,6)
(3,6)
(4,5)
(5,5)
(6,4)
(7,3)
2r2yxk+1
72
144
216
288
360
432
504
2r2xyk+1
768
768
768
640
640
512
384
P2k
-151
233
745
(xk+1,y k+1)
(8,2)
(8,1)
(8,0)
2r2yxk+1
576
576
-
2r2xyk+1
256
128
-
41
MODULE I
ADMN 2009-10
42
MODULE I
ADMN 2009-10
y1
x
x1
x2
(Fig: 1:44 Bounding box for a line with coordinate extents x and y)
43