Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

No Downloads

Total views

3,941

On SlideShare

0

From Embeds

0

Number of Embeds

2

Shares

0

Downloads

166

Comments

0

Likes

5

No embeds

No notes for slide

- 1. TOPICS: Mid-point Circle Algorithm, Filling Algorithms & Polygons. 1/2 -1
- 2. To determine the closest pixel position to the specified circle path at each step. For given radius r and screen center position (xc, yc), calculate pixel positions around a circle path centered at the coordinate origin (0,0). Then, move each calculated position (x, y) to its proper screen position by adding xc to x and yc to y . 3
- 3. 8 segments of octants for a circle:
- 4. Circle function: fcircle (x,y) = x2 + y2 –r2 { > 0, (x,y) outside the circle fcircle (x,y) = < 0, (x,y) inside the circle = 0, (x,y) is on the circle boundary
- 5. midpoint midpointyk ykyk-1 yk-1 xk Xk+1 Xk+2 Xk+1 Xk+2 Xk Pk < 0 Pk >= 0 yk+1 = yk yk+1 = yk - 1 Next pixel = (xk+1, yk) Next pixel = (xk+1, yk-1)
- 6. We know xk+1 = xk+1, Pk = fcircle(xk+1, yk- ½) Pk = (xk +1)2 + (yk - ½)2 - r2 -------- (1) Pk+1 = fcircle(xk+1+1, yk+1- ½) Pk+1 = [(xk +1)+1]2 + (yk+1 - ½)2 - r2 -------- (2) 6
- 7. By subtracting eq.1 from eq.2, we get Pk+1 –Pk = 2(xk+1) + (y2k+1 – y2k) - (yk+1 – yk) + 1 Pk+1 = Pk + 2(xk+1) + (y2k+1 – y2k) - (yk+1 – yk) + 1 If Pk < 0, Pk+1 = Pk + 2xk+1+1 If Pk >= 0, Pk+1 = Pk + 2xk+1+1 – 2yk+1
- 8. For the initial point, (x0 , y0 ) = (0, r) p0 = fcircle (1, r-½ ) = 1 + (r-½ )2 – r2 = 5–r 4 ≈ 1–r
- 9. Taking input radius ‘r’ and circle center (xc , yc), we obtain the first point on the circumference of a circle centered on the origin as: (x0 , y0) = (0,r) Next we will calculate the initial value of the decision parameter as p0 = 5/4-r At each x position, starting at k=0 , perform the following test: if p<0 the next point along the circle centered on (0,0) is (xk+1, yk) and pk+1= pk+ 2 xk+1 +1 10
- 10. Otherwise, the next point along the circle is (xk+1, yk -1) and pk+1 = pk +2 xk+1 +1+ 2 yk+1 where, 2 xk+1 =2 xk+2 and 2 yk+1 = 2 yk -2. After this we will determine the symmetric points in the other 7 octants. At Move each calculated pixel position (x,y) on to the circle path centered on (xc , yc) and plot the coordinate values: x=x+xc y=y+yc Repeat step 3 through 5 until x>=y 11
- 11. Example:Given a circle radius = 10, determine the circle octant inthe first quadrant from x=0 to x=y.Solution: p0 = 5 – r 4 = 5 – 10 4 = -8.75 ≈ –9
- 12. Initial (x0, y0) = (0,10)Decision parameters are: 2x0 = 0, 2y0 = 20 k Pk x y 2xk+1 2yk+1 0 -9 1 10 2 20 1 -9+2+1=-6 2 10 4 20 2 -6+4+1=-1 3 10 6 20 3 -1+6+1=6 4 9 8 18 4 6+8+1-18=-3 5 9 10 18 5 -3+10+1=8 6 8 12 16 6 8+12+1-16=5 7 7 14 14
- 13. Fill-Area algorithms are used to fill the interior of a polygonal shape. Many algorithms perform fill operations by first identifying the interior points, given the polygon boundary.
- 14. The basic filling algorithm is commonly used ininteractive graphics packages, where the userspecifies an interior point of the region to be filled. 4-connected pixels
- 15. [1] Set the user specified point.[2] Store the four neighboring pixels in a stack.[3] Remove a pixel from the stack.[4] If the pixel is not set, Set the pixel Push its four neighboring pixels into the stack[5] Go to step 3[6] Repeat till the stack is empty.
- 16. void fill(int x, int y) { if(getPixel(x,y)==0){ setPixel(x,y); fill(x+1,y); fill(x-1,y); fill(x,y+1); fill(x,y-1); }}
- 17. Boundary Fill Algorithm ◦ For filling a region with a single boundary color. ◦ Condition for setting pixels: Color is not the same as border color Color is not the same as fill color Flood Fill Algorithm ◦ For filling a region with multiple boundary colors. ◦ Here we don’t have to deal with boundary color ◦ Condition for setting pixels: Coloring of the pixels of the polygon is done with the fill color until we keep getting the old interior color.
- 18. void boundaryFill(int x, int y, int fillColor, int borderColor){ getPixel(x, y, color); if ((color != borderColor) && (color != fillColor)) { setPixel(x,y); boundaryFill(x+1,y,fillColor,borderColor); boundaryFill(x-1,y,fillColor,borderColor); boundaryFill(x,y+1,fillColor,borderColor); boundaryFill(x,y-1,fillColor,borderColor); }}
- 19. 1. The 4-connected method.2. The 8-connected method.
- 20. CS 380
- 21. Polygon is a closed figure with many vertices and edges (line segments), and at each vertex exactly two edges meet and no edge crosses the other.Types of Polygon: Regular polygons No. of egdes equal to no. of angles. Convex polygons Line generated by taking two points in the polygon must lie within the polygon. Concave polygons Line generated by taking two points in the polygon may lie outside the polygon.
- 22. This test is required to identify whether a point is inside or outside the polygon. This test is mostly used for identify the points in hollow polgons.Two types of methods are there forthis test:I. Even-Odd Method,II. Winding Number Method. 1/2 - 27
- 23. 1. Draw a line from any position P to a distant point outside the coordinate extents of the object and counting the number of edge crossings along the scan line.2. If the number of polygon edges crossed by this line is odd then P is an interior point. Else P is an exterior point
- 24. 29
- 25. Nonzero Winding Number Rule : Another method of finding whether a point is inside or outside of the polygon. In this every point has a winding number, and the interior points of a two-dimensional object are defined to be those that have a nonzero value for the winding number.1. Initializing the winding number to 0.2. Imagine a line drawn from any position P to a distant point beyond the coordinate extents of the object.3. Count the number of edges that cross the line in each direction. We add 1 to the winding number every time we intersect a polygon edge that crosses the line from right to left, and we subtract 1 every time we intersect an edge that crosses from left to right.
- 26. 4. If the winding number is nonzero, then P is defined to be an interior point Else P is taken to be an exterior point.
- 27. 10 14 18 24Interior pixels along a scan line passing through a polygon area• For each scan line crossing a polygon ,the area filling algorithm locates theintersection points of the scan line with the polygon edges.• These intersection points are then sorted from left to right , and thecorresponding frame buffer positions between each intersection pair are set tospecified fill color
- 28. (a) (b)Adjusting endpoint values for a polygon, as we process edges in orderaround the polygon perimeter. The edge currently being processed isindicated as a solid like. In (a), the y coordinate of the upper endpoint ofthe current edge id decreased by 1. In (b), the y coordinate of the upperend point of the next edge is decreased by 1
- 29. 34

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment