Download presentation
Presentation is loading. Please wait.
Published byGodfrey Hopkins Modified over 8 years ago
1
A line segment in a scene is defined by the coordinate positions of the line end-points x y (2, 2) (7, 5)
2
When drawn on a pixel based display. Which pixel has to be chosen?
3
Points to be considered Line should not be jarred It should be fast Line equation The slope intercept form of a line is y=m.x+b Where m=y 2 -y 1 /x 2 -x 1 b=y-m.x
4
The slope of a line ( m ) is defined by its start and end coordinates The diagram below shows some examples of lines and their slopes m = 0 m = - 1 / 3 m = - 1 / 2 m = -1 m = -2 m = -4 m = ∞ m = 1 / 3 m = 1 / 2 m = 1 m = 2 m = 4 m = 0
5
Let’s consider the following example: x y (2, 2) (7, 5) 27 2 5
6
x y (2, 2) (7, 5) 234567 2 5 First work out m and b : Now for each x value work out the y value:
7
Round off the results. 012345678 0 1 2 3 4 5 6 7
8
The approach is slow Multiplication of m,x Rounding of y value Alternate solution x=y-b/m
9
X(3)=2,x(4)=5 012345678 0 1 2 3 4 5 6 7
10
If the slope of a line is between -1 and 1 then we work out the y coordinates for a line based on it’s unit x coordinates Otherwise we do the opposite – x coordinates are computed based on unit y coordinates m = 0 m = - 1 / 3 m = - 1 / 2 m = -1 m = -2 m = -4 m = ∞ m = 1 / 3 m = 1 / 2 m = 1 m = 2 m = 4 m = 0
11
The digital differential analyzer (DDA) algorithm takes an incremental approach in order to speed up scan conversion Simply calculate y k+1 based on y k The original differential analyzer was a physical machine developed by Vannevar Bush at MIT in the 1930’s in order to solve ordinary differential equations.
12
Consider the list of points that we determined for the line in our previous example: (2, 2), (3, 2 3 / 5 ), (4, 3 1 / 5 ), (5, 3 4 / 5 ), (6, 4 2 / 5 ), (7, 5) Notice that as the x coordinates go up by one, the y coordinates simply go up by the slope of the line This is the key insight in the DDA algorithm
13
When the slope of the line is between -1 and 1 begin at the first point in the line and, by incrementing the x coordinate by 1, calculate the corresponding y coordinates as follows: When the slope is outside these limits, increment the y coordinate by 1 and calculate the corresponding x coordinates as follows:
14
Again the values calculated by the equations used by the DDA algorithm must be rounded to match pixel values (x k, y k ) (x k +1, y k +m) (x k, round(y k )) (x k +1, round(y k +m)) (x k, y k ) (x k + 1 / m, y k +1) (round(x k ), y k ) (round(x k + 1 / m ), y k +1)
15
Try out the following ◦ A(2,2) B(7,5) ◦ C(3,2),D(2,7)
16
The DDA algorithm is much faster than previous attempt ◦ In particular, there are no longer any multiplications involved However, there are still two big issues: ◦ Accumulation of round-off errors can make the pixelated line drift away from what was intended. ◦ The rounding operations and floating point arithmetic involved are time consuming.
17
The Bresenham algorithm is another incremental scan conversion algorithm The big advantage of this algorithm is that it uses only integer calculations Jack Bresenham worked for 27 years at IBM before entering academia. Bresenham developed his famous algorithms at IBM in the early 1960s
18
Move across the x axis in unit intervals and at each step choose between two different y coordinates 2345 2 4 3 5 For example, from position (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)
19
The y coordinate on the mathematical line at x k +1 is: At sample position x k +1 the vertical separations from the mathematical line are labelled d upper and d lower y ykyk y k+1 xk+1xk+1 d lower d upper
20
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
21
This simple decision is based on the difference between the two pixel positions: Let’s substitute m with ∆ y /∆ x where ∆ x and ∆ y are the differences between the end-points:
22
So, a decision parameter p k for the k th step along a line is given by: The sign of the decision parameter p k is the same as that of d lower – d upper If p k is negative, then we choose the lower pixel, otherwise we choose the upper pixel
23
Remember coordinate changes occur along the x axis in unit steps so we can do everything with integer calculations At step k +1 the decision parameter is given as: Subtracting p k from this we get:
24
But, x k+1 is the same as x k +1 so: where y k+1 - y k is either 0 or 1 depending on the sign of p k The first decision parameter p0 is evaluated at (x0, y0) is given as:
25
BRESENHAM’S LINE DRAWING ALGORITHM (for | m | < 1.0) 1.Input the two line end-points, storing the left end- point in ( x 0, y 0 ) 2.Plot the point ( x 0, y 0 ) 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 x k along the line, starting at k = 0, perform the following test. If p k < 0, the next point to plot is (x k +1, y k ) and:
26
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 ( x k +1, y k +1 ) and: 5.Repeat step 4 ( Δx – 1) times
27
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 p 0 : ◦ p0 = 2Δy – Δx = 6
28
kpkpk (x k+1,y k+1 ) 01234567890123456789
29
Go through the steps of the Bresenham line drawing algorithm for a line going from (21,12) to (29,16)
30
The Bresenham line algorithm has the following advantages: ◦ An fast incremental algorithm ◦ Uses only integer calculations Comparing this to the DDA algorithm, DDA has the following problems: ◦ Accumulation of round-off errors can make the pixelated line drift away from what was intended ◦ The rounding operations and floating point arithmetic involved are time consuming
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.