You are on page 1of 19

Raster conversion algorithms for line

and circle

Introduction
- Pixel addressing
- Primitives and attributes
Line drawing algorithms
- DDA
- Bresenham
Circle generating algorithms
- Direct method
- Bresenham algorithm
Pixel addressing in raster graphics

Theoretical length
Pixel
address

y+1
Pixel

y+2

y+3
x x+1 x+2 x+3 x+4

Actual length
Raster conversion algorithms:
requirements

• visual accuracy

• spatial accuracy

• speed
Line drawing algorithms

symbols & images


descriptions
y = 2x + 5
x0 = 100
y0 = 50
d = 100

thickness = 4
Line – raster representation
DDA ( Digital Differential Algorithm )

m<1
DDA ( Digital Differential Algorithm )
m>1
DDA ( Digital Differential Algorithm )
m>1
Digital Differential Algorithm

• input line endpoints, (x0,y0) and (xn, yn)


• set pixel at position (x0,y0)
• calculate slope m
• Case |m|≤1: repeat the following steps until (xn, yn) is reached:
• yi+1 = yi + y/ x
• xi+1 = xi + 1
• set pixel at position (xi+1,Round(yi+1))
• Case |m|>1: repeat the following steps until (xn, yn) is reached:
• xi+1 = xi + x/ y
• yi+1 = yi + 1
• set pixel at position (Round(xi+1), yi+1)
Bresenham's line algorithm

y = mx + b

d2
y = m(x+1) + b
y d1

x x+1
Bresenham's line algorithm (slope ≤ 1)
• input line endpoints, (x0,y0) and (xn, yn)
• calculate x = xn - x0 and y = yn - y0
• calculate parameter p0 = 2 y - x
• set pixel at position (x0,y0)
• repeat the following steps until (xn, yn) is reached:
• if pi < 0
• set the next pixel at position (xi +1, yi )
• calculate new pi+1 = pi + 2 y
• if pi ≥ 0
• set the next pixel at position (xi +1, yi + 1 )
• calculate new pi+1 = pi + 2(y - x)
DDA versus Bresenham’s Algorithm

• DDA works with floating point arithmetic


• Rounding to integers necessary

• Bresenham’s algorithm uses integer arithmetic


• Constants need to be computed only once

• Bresenham’s algorithm generally faster than DDA


Circle generating algorithms

• Direct
• Polar coordinate based
• Bresenham’s
Direct circle algorithm

• Cartesian coordinates

• Circle equation:
( x - xc )2 + ( y - yc )2 = r2

• Step along x axis from xc - r to xc + r and


calculate
y = yc ±  r2 - ( x - xc )2
Polar coordinates

• Polar coordinate equation


x = xc + r cos
y = yc + r sin
• step through values of  from 0 to 2π
Optimisation and speed-up

• Symmetry of a (-x,y) (x,y)


circle can be used

• Calculations of (-y,x) (y,x)


point coordinates
only for a first (-y,-x) (y,-x)
one-eighth of a
circle
(-x,-y) (x,-y)
Bresenham’s circle algorithm

1. Input radius r

2. Plot a point at (0, r)

3. Calculate the initial value of the decision parameter


as p0 = 5/4 – r ≈ 1 – r
4. At each position xk, starting at k = 0, perform the
following test:

if pk < 0
plot point at (xk +1, yk)
compute new pk+1 = pk + 2xk+1 + 1
else
plot point at (xk + 1, yk – 1)
compute new pk+1 = pk + 2xk+1 + 1 – 2yk+1

where xk+1 = xk + 1 and yk+1 = yk - 1


5. Determine symmetry points in the other seven
octants and plot points

6. Repeat steps 4 and 5 until x  y

You might also like