0% found this document useful (0 votes)
55 views

Bresenhams Line Drawing Algorithm

The document describes Bresenham's line drawing algorithm. It begins with introducing the problem of drawing lines on a digital display and notes that using integer calculations alone provides a faster solution. It then provides the key steps of Bresenham's algorithm: it defines a driving axis along which coordinates are incremented by 1 each loop, and a passive axis where coordinates are only incremented when needed as determined by an error term. The example calculates the line from (0,0) to (5,3) to illustrate how the algorithm progresses by incrementing the x coordinate on each loop and adjusting the y coordinate and error term.

Uploaded by

la,myia
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

Bresenhams Line Drawing Algorithm

The document describes Bresenham's line drawing algorithm. It begins with introducing the problem of drawing lines on a digital display and notes that using integer calculations alone provides a faster solution. It then provides the key steps of Bresenham's algorithm: it defines a driving axis along which coordinates are incremented by 1 each loop, and a passive axis where coordinates are only incremented when needed as determined by an error term. The example calculates the line from (0,0) to (5,3) to illustrate how the algorithm progresses by incrementing the x coordinate on each loop and adjusting the y coordinate and error term.

Uploaded by

la,myia
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

The Bresenham’s Line Drawing

Algorithm
Introduction

• A line segment is defined by an infinite set of points


which lie between two points; these points have no
area.
• It’s relatively easy to create an algorithm to
generate the set of points which approximate a line
based on some floating point math:

• For the most part, it works. So what’s the problem?


Any hardcore game programmer will tell you:
Speed.

• The Bresenham / Midpoint Algorithm is a solution


that not only correctly picks these same points, it
does it with integer math only, which results in a big
speed improvement.
Bresenham’s Algorithm
• The basic ”line drawing” algorithm used in
computer graphics is Bresenham’s Algorithm.

• This algorithm was developed to draw lines on


digital plotters, but has found wide-spread usage in
computer graphics.

• The algorithm is fast – it can be implemented with


integer calculations only – and very simple to
describe.
• Consider a line with initial point (x1, y1) and terminal point (x2,
y2) in device space.

• If x = x2 −x1 and y = y2 − y1, we define the driving axis (DA)


to be the x-axis if |x| |y|, and the y-axis if |y| > |x|.

• The DA is used as the “axis of control” for the algorithm and is


the axis of maximum movement.

• Within the main loop of the algorithm, the coordinate


corresponding to the DA is incremented by one unit.

• The coordinate corresponding to the other axis (usually


denoted the passive axis or PA) is only incremented as
needed.
• Consider a line with initial point (x1, y1) and terminal
point (x2, y2) in device space.

• If x = x2 −x1 and y = y2 − y1, we define the driving


axis (DA) to be the x-axis if |x| |y|, and the y-
axis if |y| > |x|.

• The DA is used as the “axis of control” for the


algorithm and is the axis of maximum movement.
• Within the main loop of the algorithm, the coordinate
corresponding to the DA is incremented by one unit.

• The coordinate corresponding to the other axis (usually


denoted the passive axis or PA) is only incremented as
needed.

• The best way to describe Bresenham’s algorithm is to


work through an example.

• Consider the following example, in which we wish to


draw a line from (0, 0) to (5, 3) in device space.
• Bresenham’s algorithm begins with the point (0, 0)
and “illuminates” that pixel.

• Since x is the DA in this example, it then increments


the x coordinate by one.
• Rather than keeping track of the y coordinate
(which increases by m = y/x, each time the x
increases by one), the algorithm keeps an error
bound  at each stage, which represents the
negative of the distance from the point where the
line exits the pixel to the top edge of the pixel (see
the figure).
• This value is first set to m − 1, and is incremented
by m each time the x coordinate is incremented by
one.

• If  becomes greater than zero, we know that the


line has moved upwards one pixel, and that we
must increment our y coordinate and readjust the
error to represent the distance from the top of the
new pixel – which is done by subtracting one from 
.
Bresenham’s Algorithm

The points (x1, y1) and (x2, y2) are assumed not
equal and integer valued.
 is assumed to be real.
Let x = x2 − x1
Let y = y2 − y1
Let m = y
x
Let j = y1
Let  = m − 1
for i = x1 to x2 − 1
illuminate (i, j)

if (  ≥ 0)
j+=1
 − = 1.0
end if
i+=1
+=m
next i
finish
The Integer Bresenham’s Algorithm
• Bresenham’s Algorithm, as given in the previous
section, requires the use of floating point arithmetic to
calculate the slope of the line and to evaluate the error
term.

• We note that is initialized to

 = y - 1
x
and is incremented by y at each step.
x
• Since both y and x are integer quantities, we can
convert to an all integer format by multiplying the
operations through by x. That is, we will consider
the integer quantity  , where  is initialized to
 = x
= y − x

and we will increment  by y at each step, and


decrement it by x when  becomes positive.
Bresenham’s Algorithm

The points (x1, y1) and (x2, y2) are assumed not
equal and integer valued.
 is assumed to be real.
Let x = x2 − x1
Let y = y2 − y1
Let m = y
x
Let j = y1
Let  = y -  x
for i = x1 to x2 − 1
illuminate (i, j)

if (  ≥ 0)
j+=1
 − = x
end if
i+=1
 + = y
next i
finish

You might also like