Download presentation

1
**CMPE 466 COMPUTER GRAPHICS**

Chapter 6 Algorithms for Graphics Primitives Instructor: D. Arifler Material based on Computer Graphics with OpenGL®, Fourth Edition by Donald Hearn, M. Pauline Baker, and Warren R. Carithers Fundamentals of Computer Graphics, Third Edition by by Peter Shirley and Steve Marschner Computer Graphics by F. S. Hill

2
**Device-level algorithms for implementing primitives**

Line-drawing algorithms Circle-generating algorithms Ellipse-generating algorithms Scan-line polygon-fill algorithms Antialiasing

3
**Jaggies in line-drawing**

Figure Stair-step effect (jaggies) produced when a line is generated as a series of pixel positions.

4
Line equations Figure Line path between endpoint positions (x0, y0) and (x end, y end).

5
**Determining deflection voltages**

6
**Digital differential analyzer (DDA)**

A scan-conversion line algorithm For m≤1 Sample at unit x intervals: δx=1 Compute yk+1=yk+m Calculated y values must be rounded to nearest int For m>1 Sample at unit y intervals: δy=1 Compute xk+1=xk+1/m Calculated x values must be rounded to nearest int If we process from right to left and m≤1, then we have δx=-1 and yk+1=yk-m If we process from right to left and m>1, then we have δy=-1 and xk+1=xk-1/m For negative slopes, look at the the magnitude of m

7
DDA

8
**Problems of DDA Accumulation of round-off errors**

Calculated pixel positions may drift away from the true line path for long segments Rounding operations and floating point arithmetic are time-consuming

9
**Bresenham’s line algorithm**

Goal: Use only incremental integer calculations (fast!) Figure A section of a display screen where a straight-line segment is to be plotted, starting from the pixel at column 10 on scan line 11. Figure A section of a display screen where a negative slope line segment is to be plotted, starting from the pixel at column 50 on scan line 50.

10
**Bresenham’s line algorithm**

Consider lines with slope m<1 Decide which pixel to plot in column xk+1=xk+1 Choices: (xk+1, yk) or (xk+1, yk+1) Figure A section of the screen showing a pixel in column xk on scan line yk that is to be plotted along the path of a line segment with slope 0 < m < 1.

11
**Bresenham’s line algorithm**

At sampling position xk+1, label vertical pixel separations from the line path as dlower and dupper Figure Vertical distances between pixel positions and the line y coordinate at sampling position xk + 1.

12
Bresenham To determine which pixel is closet , we first calculate:

13
**Bresenham We would like to use only integer calculations**

Define a decision parameter pk. Letting m=Δy/Δx: Sign of pk is the same as the sign of dlower-dupper because Δx>0 Parameter c is constant and is 2Δy+Δx(2b-1) which is independent of the pixel position and will be eliminated in the recursive calculation

14
Bresenham If pixel at yk is closer to the line path than pixel at yk+1 (i.e. dlower<dupper) the pk is negative. In that case, we plot the lower pixel; otherwise, we plot the upper pixel We can obtain successive decision parameters recursively. At step k+1 using where yk+1-yk is either 0 or 1 depending on the sign of pk First parameter is calculated as

15
Bresenham algorithm

16
Example Figure Pixel positions along the line path between endpoints (20, 10) and (30, 18), plotted with Bresenham’s line algorithm.

17
Example

18
**Circle-generating algorithms**

Figure Circle with center coordinates (xc , yc) and radius r .

19
**Circle-generating algorithms**

One could use Sqrt is time-consuming Figure Upper half of a circle plotted with Equation 6-27 and with (xc , yc) = (0, 0).

20
**Circle equation in parametric polar form**

Trig calculations are time-consuming We can use symmetry Figure Symmetry of a circle. Calculation of a circle point (x, y) in one octant yields the circle points shown for the other seven octants.

21
**Midpoint circle algorithm**

First, define: We will perform the tests for the midpositions between pixels near the circle path at each sampling step

22
**Midpoint circle algorithm**

Figure Midpoint between candidate pixels at sampling position xk + 1 along a circular path.

23
**Circles: decision parameter**

Define the decision parameter If pk<0 (midposition is inside), yk is closer Otherwise, midposition is outside or on the circle boundary and we select the pixel on scan line yk-1

24
**Recursive expression for pk**

25
Recursive expression

26
**The algorithm (only integer add/subtract)**

27
Example

28
Example

29
Example Figure Pixel positions (solid circles) along a circle path centered on the origin and with radius r = 10, as calculated by the midpoint circle algorithm. Open (“hollow”) circles show the symmetry positions in the first quadrant.

30
**Ellipse-generating algorithms**

Figure Ellipse generated about foci F1 and F2.

31
**Ellipse in standard position**

Figure Ellipse centered at (xc, yc) with semimajor axis rx and semiminor axis ry.

32
**Ellipse in standard position**

Figure The bounding circle and eccentric angle θ for an ellipse with rx > ry .

33
**Midpoint ellipse algorithm**

Figure Ellipse processing regions. Over region 1, the magnitude of the ellipse slope is less than 1.0; over region 2, the magnitude of the slope is greater than 1.0.

34
**Midpoint ellipse algorithm**

35
**Midpoint ellipse algorithm (region 1)**

Figure Midpoint between candidate pixels at sampling position xk + 1 along an elliptical path.

36
Ellipse

37
Ellipse (region 2) Figure Midpoint between candidate pixels at sampling position yk − 1 along an elliptical path.

38
Ellipse

39
**Midpoint ellipse algorithm**

40
**Midpoint ellipse algorithm**

41
Example

42
Example

43
Example

44
Example Figure Pixel positions along an elliptical path centered on the origin with rx = 8 and ry = 6, using the midpoint algorithm to calculate locations within the first quadrant.

45
**Scan-line polygon-fill algorithms**

For each scan-line that crosses the polygon, the edge intersections are sorted from left to right, and then pixel positions between and including each intersection pair are set to the specified fill color Figure Interior pixels along a scan line passing through a polygon fill area.

46
**Complexities of polygon filling**

Figure Intersection points along scan lines that intersect polygon vertices. Scan line y generates an odd number of intersections, but scan line y’ generates an even number of intersections that can be paired to identify correctly the interior pixel spans.

47
Polygon filling For scan line y, the two edges sharing an intersection vertex are on opposite sides of the scan line For scan line y’, the two intersection edges are both above the scan line A vertex that has adjoining edge on opposite sides of an intersecting scan line should be counted as just one boundary intersection point. Endpoints of segments can be adjusted as shown in the next slide. In determining edge intersections, coherence methods are used. This often involves incremental calculations applied along a scan line or between scan lines

48
**Polygon filling: endpoint adjustments**

Figure Adjusting endpoint y values for a polygon, as we process edges in order around the polygon perimeter. The edge currently being processed is indicated as a solid line. In (a), the y coordinate of the upper endpoint of the current edge is decreased by 1. In (b), the y coordinate of the upper endpoint of the next edge is decreased by 1.

49
**Edge tables for polygon filling**

To perform a polygon-fill efficiently, we first store polygon boundary in a sorted edge table Proceeding around the edges (clockwise or counterclockwise), we can use a bucket sort to store the edges, sorted on the smallest y value of each edge, in the correct scan-line positions kth position points to a list of all edges having their lower endpoint on scan line k At kth position, edges are in sorted order from left to right. Next, we process the scan lines from the bottom of the polygon to its top, producing an active edge list (AEL) for each scan line crossing the polygon boundaries The active edge list for a scan line contains all edges crossed by that scan line

50
Edge tables Figure A polygon and its sorted edge table, with edge DC shortened by one unit in the y direction.

51
**Fill methods for areas with irregular boundaries**

Start at an inside position and paint the interior point by point out to the boundary Boundary-fill Fill the interior of a region pixel by pixel until the boundary color is encountered Flood-fill Fill in (recolor) an area that is not defined within a single color boundary Paint by replacing a specified interior color instead of searching for a particular boundary color

52
Boundary-fill Boundary-ﬁll algorithm starts from an interior point (x, y) and tests the color of neighboring positions If a tested position is not displayed in the boundary color, its color is changed to the ﬁll color and its neighbors are tested (see next slide) This procedure continues until all pixels are processed up to the designated boundary color for the area

53
**Processing neighboring pixels**

Figure Fill methods applied to a 4-connected area (a) and to an 8-connected area (b). Hollow circles represent pixels to be tested from the current test position, shown as a solid color.

54
**4-connected vs. 8-connected algorithm**

Figure The area defined within the color boundary (a) is only partially filled in (b) using a 4-connected boundary-fill algorithm.

55
Boundary-fill

56
Flood-fill Sometimes we want to ﬁll in (or recolor) an area that is not deﬁned within a single color boundary We can paint such areas by replacing a speciﬁed interior color instead of searching for a particular boundary color. Figure An area defined within multiple color boundaries.

57
Flood-fill

58
Antialiasing Aliasing: Distortion of information due to low-frequency sampling (undersampling) Increase sampling rate in raster systems Simply display at higher resolution: Requires large frame-buffers! Apple MacBook Retina Display: Over 5 million on the 15‑inch model: With so high pixel density, your eyes can’t discern individual pixels at normal viewing distance With raster systems that are capable of displaying more than two intensity levels per color, we can apply antialiasing methods to modify pixel intensities Antialiasing methods: Supersampling, postfiltering, prefiltering, pixel phasing We will focus on antialiasing methods for straight-line segments

59
**Antialiasing Blurring to smooth an image**

E.g. Sharp transitions from black to white is softened by using a mixture of gray pixels near the borders When looking from a distance, eye blends the gracefully varying shades together

60
**Supersampling (a special case of post-filtering)**

Sampling object characteristics at a higher resolution and displaying the results at a lower resolution Divide each pixel into a number of subpixels and count the number of subpixels that overlap the line path. The intensity for each pixel is set to a value proportional to this subpixel count “Post”filtering: involves computing intensities at subpixel grid positions and then combining the results to obtain the pixel intensities

61
Supersampling Figure Supersampling subpixel positions along a straight-line segment whose left endpoint is at screen coordinates (10, 20). Figure Supersampling subpixel positions in relation to the interior of a line of finite width.

62
**Postfiltering: Subpixel weighting masks**

Give more weight to subpixel near the center of a pixel area Figure Relative weights for a grid of 3 × 3 subpixels. Center subpixel is weighted by a factor of 1/4; the top, bottom, and side subpixels are each weighted by a factor of 1/8; and the corner subpixels are each weighted by a factor of 1/16.

63
**Example masks or window functions**

(b) and (c) are approximations to the Bartlett window: Weights grow linearly from the edges toward the center

64
**Application of weighting masks or window functions**

65
**Area sampling (prefiltering)**

Set pixel intensity proportional to the area of overlap of pixel with the finite-width line “Pre”filtering: the intensity of the pixel as a whole is determined without calculating subpixel intensities Computationally expensive

66
**General filtering techniques**

More accurate method for antialiasing Similar to applying a weighted pixel mask but now we have a continuous weighting surface (or filter function) covering the pixel. Figure Common filter functions used to antialias line paths. The volume of each filter is normalized to 1.0, and the height gives the relative weight at any subpixel position.

67
Pixel phasing On raster systems that can address subpixel positions within the screen grid (hardware solution) Move (microposition) pixel positions closer to the line path Electron beam can be shifted by a fraction of a pixel diameter Figure Jagged lines (a), plotted on the Merlin 9200 system, are smoothed (b) with an antialiasing technique called pixel phasing. This technique increases the number of addressable points on the system from 768 by 576 to 3072 by (Courtesy of Peritek Corp.)

Similar presentations

© 2021 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google