## Just for you: FREE 60-day trial to the world’s largest digital library.

The SlideShare family just got bigger. Enjoy access to millions of ebooks, audiobooks, magazines, and more from Scribd.

Cancel anytime.Free with a 14 day trial from Scribd

- 1. Output Primitives Points and Lines Line Drawing Algorithms DDA Algorithm Bresenham’s Line Algorithm Midpoint Circle Algorithm Midpoint Ellipse Algorithm Filled Area Primitives
- 2. Points and Lines • Point is the fundamental element of picture representation. • It is the position in the plan defined as either pair or triplets of number depending upon the dimension. • Two points represent line or edge and 3 or more points a polygon. • Curved lines are represented by the short straight lines.
- 3. Line Drawing Algorithms • Slope-Intercept Equation • Slope • Intercept • Interval Calculation bxmy . 12 12 xx yy m 11 .xmyb xmy . m y x
- 4. Line Drawing Algorithm
- 5. DDA Algorithm Digital Differential Analyzer – Sample the line at unit intervals in one coordinate – Determine the corresponding integer values nearest the line path in another co-ordinate
- 6. DDA Algorithm (left to right) • Slope • For |m|<1 (|Δy|< |Δx|) – Sample line at unit interval in x co-ordinate • For |m|>1 (|Δy|> |Δx|) – Sample line at unit interval in y co-ordinate x y xx yy m kk kk 1 1 myy kk 1 m xx kk 1 1 11 kk xxx 11 kk yyy
- 7. DDA Algorithm (right to left) • Slope • For |m|<1 (|Δy|< |Δx|) – Sample line at unit interval in x co-ordinate • For |m|>1 (|Δy|> |Δx|) – Sample line at unit interval in y co-ordinate myy kk 1 m xx kk 1 1 11 kk xxx 11 kk yyy x y xx yy m kk kk 1 1
- 8. DDA Algorithm 1. Input the two line endpoints and store the left endpoint in (x0,y0) 2. Plot first point (x0,y0) 3. Calculate constants Δx, Δy 4. If |Δx| > |Δy| steps = |Δx| else steps = |Δy| 5. Calculate XInc = |Δx| / steps and YInc = |Δy| / steps 6. At each xk along the line, starting at k=0, Plot the next pixel at (xk + XInc, yk + YInc) 7. Repeat step 6 steps times
- 9. Pseudo Code Void lineDDA(int xa, int ya, int xb, int yb) { int dx = xb – xa, dy = yb – ya, steps, k; float xIncrement, yIncrement, x = xa, y = ya; if( abs (dx) > abs (dy) ) steps = abs (dx); else steps = abs (dy); xIncrement = dx / (float) steps; yIncrement = dy / (float) steps; setPixel (ROUND (x), ROUND (y)); for (k=0; k<steps; k++){ x += xIncrement; y += yIncrement; setPixel (ROUND(x), ROUND(y)); } }
- 10. • Use DDA algorithm for rasterizing line (0,0) to (6,6). • Use DDA algorithm for rasterizing line (0,0) to (4,6).
- 11. Bresenham’s Line Algorithm • Uses only incremental integer calculations • Which pixel to draw ? – (11,11) or (11,12) ? – (51,50) or (51,49) ? – Answered by Bresenham
- 12. • For |m|<1 – Start from left end point (x0,y0) step to each successive column (x samples) and plot the pixel whose scan line y value is closest to the line path. – After (xk,yk) the choice could be (xk+1,yk) or (xk+1,yk+1)
- 13. Then And Difference between separations bxmy k )1( kyyd 1 kk ybxm )1( yyd k )1(2 bxmy kk )1(1 122)1(221 byxmdd kk
- 14. Defining decision parameter [1] Sign of pk is same as that of d1-d2 for Δx>0 (left to right sampling) For Recursive calculation, initially cyxxy kk .2.2 Constant=2Δy + Δx(2b-1) Which is independent of pixel position cyxxyp kkk 111 .2.2 )(2)(2 111 kkkkkk yyxxxypp c eliminated here )(22 11 kkkk yyxypp because xk+1 = xk + 1 yk+1-yk = 0 if pk < 0 yk+1-yk = 1 if pk ≥ 0 xyp 20 Substitute b = y0 – m.x0 and m = Δy/Δx in [1] )( 21 ddxpk
- 15. Algorithm Steps (|m|<1) 1. Input the two line endpoints and store the left endpoint in (x0,y0) 2. Plot first point (x0,y0) 3. Calculate constants Δx, Δy, 2Δy and 2 Δy- 2Δx, and obtain p0 = 2Δy – Δx 4. At each xk along the line, starting at k=0, perform the following test: If pk<0, the next point plot is (xk+1,yk) and Pk+1 = pk + 2Δy Otherwise, the next point to plot is (xk + 1, yk+1) and Pk+1 = pk + 2Δy - 2Δx 5. Repeat step 4 Δx times
- 16. What’s the advantage? • Answer: involves only the calculation of constants Δx, Δy, 2Δy and 2Δy- 2Δx once and integer addition and subtraction in each steps
- 17. Example Endpoints (20,10) and (30,18) Slope m = 0.8 Δx = 10, Δy = 8 P0 = 2Δy - Δx = 6 2Δy = 16, 2Δy-2Δx = -4 Plot (x0,y0) = (20,10)
- 18. • Use Bresenham’s algorithm for rasterizing the line (5,5) to (13,9)
- 19. • Digitize a line with endpoints (15,18) and (10,15) using BLA.
- 20. • Digitize a line with endpoints (15,15) and (10,18) using BLA.
- 21. Algorithm Steps (|m|>1) 1. Input the two line endpoints and store the left endpoint in (x0,y0) 2. Plot first point (x0,y0) 3. Calculate constants Δx, Δy, 2Δx and 2 Δx- 2Δy, and obtain p0 = 2Δx – Δy 4. At each xk along the line, starting at k=0, perform the following test: If pk<0, the next point plot is (xk, yk+1) and Pk+1 = pk + 2Δx Otherwise, the next point to plot is (xk + 1, yk+1) and Pk+1 = pk + 2Δx - 2Δy 5. Repeat step 4 Δx times
- 22. • Use BLA algorithm for rasterizing line (0,0) to (4,6).
- 23. Circle-Generating Algorithms (Basic Foundations) • Circle Equation: • Points along circumference could be calculated by stepping along x- axis: 222 )()( ryyxx cc 22 )( xxryy cc
- 24. Problem (in above method) • Computational complexity • Spacing: – Non-uniform spacing of plotted pixels
- 25. Adjustments (To fix problems) • Spacing problem (2 ways): – Interchange the role of x and y whenever the absolute value of the slope of the circle tangent > 1 – Use polar co-ordinate: • Equally spaced points are plotted along the circumference with fixed angular step size. • step size chosen for θ depends on the application and display device. • Computation Problem: – Use symmetry of circle; i.e calculate for one octant and use symmetry for others. sin cos ryy rxx c c
- 26. Circle Symmetry
- 27. Bresenham’s Algorithm Could Be Adapted ?? • Yes • How ? – Setting decision parameter for finding the closest pixel to the circumference • And what to do For Non-linear equation of circle ? – Comparison of squares of the pixel separation distance avoids square root calculations
- 28. Midpoint Circle Algorithm • Circle function defined as: • Any point (x,y) satisfies following conditions boundarycircletheoutsideisyxif boundarycircletheonisyxif boundarycircletheinsideisyxif yxfcircle ),(,0 ),(,0 ),(,0 ),( 222 ),( ryxyxfcircle
- 29. • Decision parameter is the circle function; evaluated as: 222 ) 2 1 ()1( ) 2 1 ,1( ryx yxfp kk kkcirclek 1)()()1(2 ) 2 1 (]1)1[( ) 2 1 ,1( 1 22 11 22 1 2 111 kkkkkkk kk kkcirclek yyyyxpp ryx yxfp
- 30. yk+1 = yk if pk<0 yk+1 = yk-1 otherwise • Thus Pk+1 = Pk + 2xk+1+1 if pk<0 Pk+1 = Pk + 2xk+1+1-2yk+1 otherwise • Also incremental evaluation of 2xk+1 and 2yk+1 2xk+1 = 2xk + 2 2yk+1 = 2yk – 2 if pk >0 • At start position (x0,y0) = (0,r) 2x0 = 0 and 2y0 = 2r
- 31. • Initial decision parameter • For r specified as an integer, round p0 to P0 = 1-r (because all increments are integers) r rr rfp circle 4 5 ) 2 1 (1 ) 2 1 ,1( 22 0
- 32. Algorithm 1. Input radius r and circle center (xc, yc) and obtain the first point on the circumference of a circle centered on the origin as (x0,y0) = (0,r) 2. Calculate the initial value of the decision parameter as P0 = 5/4 – r 3. At each xk position, starting at k = 0, perform the following test: If pk < 0, the next point along the circle centered on (0,0) is (xk+1,yk) and Pk+1 = pk + 2xk+1 + 1 Otherwise, the next point along the circle is (xk+1,yK-1) and Pk+1 = pk + 2xk+1 + 1 -2yk+1 Where 2xk+1 = 2xk + 2 and 2yk+1 = 2yk-2 4. Determine the symmetry points in the other seven octants. 5. Move each calculated pixel position (x,y) onto the circular path centered on (xc,yc) and plot the co-ordinate values: x = x + xc, y = y+yc 6. Repeat steps 3 through 5 until x ≥ y
- 33. • Given radius =10 use mid-point circle drawing algorithm to determine the pixel in the first quadrant. Solution: P0 = 1-r = -9 (x0 , y0)=(0,10) 2x0 =0 2y0 =20
- 34. • Digitize the circle (x-2)^2+(y-3)^2=25 in first quadrant. Solution: P0=(1-r)= -4 (x0 , y0)=(0,5) 2x0 =0 2y0 =10
- 35. Ellipse Generating Algorithms • Equation of ellipse: • F1(x1,y1), F2(x2,y2) • General Equation • Simplified Form • In polar co-ordinate constantyyxxyyxx 2 2 2 2 2 1 2 1 )()()()( constantdd 21 022 FEyDxCxyByAx 1 22 y c x c r yy r xx sin cos yc xc ryy rxx
- 36. • Ellipse function 222222 ),( yxyellipse rryrxryxf x boundaryellipsetheoutsideisyxif boundaryellipsetheonisyxif boundaryellipsetheinsideisyxif yxfellipse ),(,0 ),(,0 ),(,0 ),(
- 37. • From ellipse tangent slope: • At boundary region (slope = -1): • Start from (0,ry), take x samples to boundary between 1 and 2 • Switch to sample y from boundary between 1 and 2 (i.e whenever ) yr xr dx dy x y 2 2 2 2 yrxr xy 22 22 yrxr xy 22 22 Slope=-1
- 38. • In the region 1 • For next sample • Thus increment 222222 ) 2 1 ()1( ) 2 1 ,1(1 yxkxky kkellipsek rryrxr yxfp 22 1 222 1 222 1 222 111 2 1 2 1 )1(211 ) 2 1 (1)1( ) 2 1 ,1(1 kkxykykk yxkxky kkellipsek yyrrxrpp rryrxr yxfp 01,22 01,2 1 22 1 2 2 1 2 kkxyky kyky pifyrrxr pifrxr increment •For increment calculation; Initially: •Incrementally: Update x by adding 2ry 2 to first equation and update y by subtracting 2rx 2 to second equation yxx y rryr xr 22 2 22 02
- 39. • Initial value 222 0 22 2 22 0 4 1 1 2 1 2 1 ,11 xyxy yxyxy yellipse rrrrp rrrrr rfp (0,ry)
- 40. • In the region 2 • For next sample • Initially 222222 )1() 2 1 ( )1, 2 1 (2 yxkxky kkellipsek rryrxr yxfp 22 1 222 1 2222 2 1 2 111 2 1 2 1 )1(222 11 2 1 )1, 2 1 (2 kkyxkxkk yxkxky kkellipsek xxrryrpp rryrxr yxfp 222 0 2 2 0 2 0 000 )1( 2 1 2 1, 2 1 2 yxxy ellipse rryrxrp yxfp For simplification calculation of p20 can be done by selecting pixel positions in counter clockwise order starting at (rx,0) and unit samples to positive y direction until the boundary between two regions
- 41. Algorithm 1. Input rx,ry, and the 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 the decision parameter in region 1 as 3. At each xk position in region 1, starting at k = 0, perform the following test: If p1k < 0, the next point along the ellipse centered on (0,0) is (xk+1,yk) and Otherwise, the next point along the ellipse is (xk+1,yk-1) and With and continue until 222 0 4 1 1 xyxy rrrrp 2 1 2 1 211 ykykk rxrpp 2 1 2 1 2 1 2211 ykxkykk ryrxrpp 22 1 222 1 2 222,222 xkxkxykyky ryryrrxrxr yrxr xy 22 22
- 42. 4. Calculate the initial value of decision parameter in region 2 using the last point (x0,y0) calculated in region 1 as 5. At each yk position in region 2, starting at k = 0, perform the following test: If p2k>0, the next point along the ellipse centered on (0,0) is (xk,yk-1) and Otherwise the next point along the ellipse is (xk+1,yk-1) and Using the same incremental calculations for x and y as in region 1. 6. Determine the symmetry points in the other three quadrants. 7. Move each calculated pixel position (x,y) onto the elliptical path centered on (xc,yc) and plot the co-ordinate values: X = x + xc, y = y+ yc 8. Repeat the steps for region 1 until 222 0 2 2 0 2 0 )1( 2 1 2 yxxy rryrxrp 2 1 2 1 222 xkxkk ryrpp 2 1 2 1 2 1 2222 xkxkykk ryrxrpp yrxr xy 22 22
- 43. • Digitize the ellipse with parameter rx =8 and ry =6 in first quadrant. Solution:
- 44. Filled Area Primitives • Two basic approaches for area filling: – By determining overlap intervals for scan lines – Start from given interior position and filling outwards
- 45. Scan Line Polygon Filled Algorithm • Intersection points of scan line with the polygon edge are calculated. • Points are sorted from left to right. • Corresponding frame buffer position between each intersection pair are set by specified color.
- 46. • A scan line pass through vertex, intersect two polygon edges.
- 47. • Scan line y’ – Intersect even number of edges – 2 pairs of intersection points correctly find the interior span • Scan line y – Intersect an odd number of edges(5) – Must count the vertex intersection as only one point
- 48. How to distinguish these cases? • Scan line y – Intersecting edges are on the opposite side • Scan line y’ – Intersecting edges are on the same side. • By tracing around the boundary, – If the endpoint y values of two consecutive edges monotonically increases or decreases count middle vertex as single
- 49. Implementation
- 50. • In determining edge intersection, we can set up incremental set up calculation using fact that slope of edge is constant.
- 51. Inside Outside test • Odd Even rule: – Odd edge means interior • Non zero winding number rule – Non zero winding number means interior
- 52. Scan line fill for Curved Area • Require more works than polygon filling due to non-linear boundary. • We calculate the scan line intersection and fill all the interior points. • Symmetries between the quadrant can be used to reduce the calculation.
- 53. Boundary fill algorithm • Fill the region starting from the interior point until the appropriate color boundary is reached. • Two ways: – 4 connected – 8 connected
- 54. 4 connected
- 55. 8 connected
- 56. Using 4 connected flood fill algorithm