CG06 - DDA Line Drawing
-
Upload
salman-khan -
Category
Documents
-
view
228 -
download
7
Transcript of CG06 - DDA Line Drawing
![Page 1: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/1.jpg)
Computer Graphics 6Line Drawing Algorithms
![Page 2: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/2.jpg)
Contents
• Graphics hardware• The problem of scan conversion• Considerations• Line equations• Scan converting algorithms– A very simple solution– The DDA algorithm
• Conclusion
![Page 3: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/3.jpg)
Graphics Hardware
• It’s worth taking a little look at how graphics hardware works before we go any further
• How do things end up on the screen?
![Page 4: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/4.jpg)
Architecture Of A Graphics System
System Bus
CPU Display Processor
System Memory
Display Processor Memory
Frame Buffer
Video Controller MonitorMonitor
![Page 5: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/5.jpg)
Output Devices
• There are a range of output devices currently available:– Printers/plotters– Cathode ray tube displays– Plasma displays– LCD displays– 3 dimensional viewers– Virtual/augmented reality headsets
• We will look briefly at some of the more common display devices
![Page 6: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/6.jpg)
Basic Cathode Ray Tube (CRT)
• Fire an electron beam at a phosphor coated screen
![Page 7: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/7.jpg)
Raster Scan Systems
• Draw one line at a time
![Page 8: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/8.jpg)
Colour CRT
• An electron gun for each colour – red, green and blue
![Page 9: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/9.jpg)
The Problem Of Scan Conversion
• A line segment in a scene is defined by the coordinate positions of the line end-points
x
y
(2, 2)
(7, 5)
![Page 10: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/10.jpg)
The Problem (cont…)• But what happens when we try to draw this
on a pixel based display?
How do we choose which pixels to turn on?
![Page 11: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/11.jpg)
Considerations
• Considerations to keep in mind:– The line has to look good• Avoid jaggies
– It has to be lightening fast!• How many lines need to be drawn in a typical scene?• This is going to come back to bite us again and again
![Page 12: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/12.jpg)
Line Equations
• Let’s quickly review the equations involved in drawing lines
x
y
y0
yend
xendx0
Slope-intercept line equation:
bxmy where:
0
0
xx
yym
end
end
00 xmyb
![Page 13: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/13.jpg)
Lines & Slopes• 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 = -2m = -4
m = ∞
m = 1/3
m = 1/2
m = 1
m = 2m = 4
m = 0
![Page 14: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/14.jpg)
A Very Simple Solution
• We could simply work out the corresponding y coordinate for each unit x coordinate
• Let’s consider the following example:
x
y
(2, 2)
(7, 5)
2 7
2
5
![Page 15: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/15.jpg)
Example
x
y
(2, 2)
(7, 5)
2 3 4 5 6 7
2
5
5
3
27
25
m
5
42
5
32 b
• First work out m and b:
Now for each x value work out the y value:
5
32
5
43
5
3)3( y
5
13
5
44
5
3)4( y
5
43
5
45
5
3)5( y
5
24
5
46
5
3)6( y
![Page 16: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/16.jpg)
Example (cont…)
• Now just round off the results and turn on these pixels to draw our line
35
32)3( y
35
13)4( y
45
43)5( y
45
24)6( y
0 1 2 3 4 5 6 7 8
0
1
2
3
4
5
6
7
![Page 17: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/17.jpg)
A Very Simple Solution (cont…)
• However, this approach is just way too slow• In particular look out for:– The equation y = mx + b requires the
multiplication of m by x– Rounding off the resulting y coordinates
• We need a faster solution
![Page 18: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/18.jpg)
A Quick Note About Slopes
• In the previous example we chose to solve the parametric line equation to give us the y coordinate for each unit x coordinate
• What if we had done it the other way around?• So this gives us:
• where: andm
byx
0
0
xx
yym
end
end
00 xmyb
![Page 19: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/19.jpg)
A Quick Note About Slopes (cont…)
• Leaving out the details this gives us:
• We can see easily that this line doesn’t lookvery good!
• We choose which way to work out the line pixels based on the slope of the line
0 1 2 3 4 5 6 7 8
0
1
2
3
4
5
6
7
43
23)3( x 5
3
15)4( x
![Page 20: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/20.jpg)
A Quick Note About Slopes (cont…)• 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 = -2m = -4
m = ∞
m = 1/3
m = 1/2
m = 1
m = 2m = 4
m = 0
![Page 21: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/21.jpg)
The DDA Algorithm• The digital differential
analyzer (DDA) algorithm takes an incremental approach in order to speed up scan conversion
• Simply calculate yk+1
based on yk
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.
![Page 22: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/22.jpg)
The DDA Algorithm (cont…)• Consider the list of points that we determined
for the line in our previous example:• (2, 2), (3, 23/5), (4, 31/5), (5, 34/5), (6, 42/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
![Page 23: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/23.jpg)
The DDA Algorithm (cont…)• If the slope is less than or equal to 1, we sample at unit x
intervals (Δx+1) and compute each successive y value as
• For lines with a positive slope greater than 1, we reverse the roles of x and y. We sample at unit y intervals (Δy+1) and calculate each succeeding x value as:
myy kk 1
mxx kk
11
![Page 24: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/24.jpg)
The DDA Algorithm (cont…)• Again the values calculated by the equations
used by the DDA algorithm must be rounded to match pixel values
(xk, yk) (xk+1, yk+m)
(xk, round(yk))
(xk+1, round(yk+m))
(xk, yk) (xk+ 1/m, yk+1)
(round(xk), yk)
(round(xk+ 1/m), yk+1)
![Page 25: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/25.jpg)
The DDA Algorithm Summary
• The DDA algorithm is much faster than our 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
![Page 26: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/26.jpg)
DDA AlgorithmProcedure lineDDA(xa, ya, xb, yb: integer);Var
dx, dy, steps, k: integer;xIncrement, yIncrement, x, y: real;
begindx := xb – xa;dy := yb – ya;if abs(dx) > abs(dy) then steps := abs(dx)else steps := abs(dy);xIncrement := dx /stepsyIncrement := dy /stepsx = xa;y = ya;setPixel(round(x), round(y), 1);for k := 1 to steps dobegin
x := x + xIncrement;y := y + yIncrement;setPixel(round(x), round(y), 1)
endend;
![Page 27: CG06 - DDA Line Drawing](https://reader033.fdocuments.us/reader033/viewer/2022061304/5501695a4a7959c0558b457e/html5/thumbnails/27.jpg)
Conclusion
• Drawing lines to pixel based displays is time consuming so we need good ways to do it
• The DDA algorithm is pretty good – but we can do better