What is the difference between odd-even rule and non-zero winding number rule to identify interior regions of an object? Develop an algorithm for a recursive method for filling a 4-connected area? What is the problem associated with this algorithm.
Difference between odd-even rule and non zero winding number: Odd- even rule: In this algorithm we draw a line from any position p to a distant point outside the coordinate extents of the object and counting the number of edge crossing along the line. If the number of polygon edges crossed by this line is odd, then p is an interior point, otherwise p is an exterior point. To obtain an accurate edge count, we must be sure that the line path we choose does not intersect any polygon vertices.
Non zero winding number rule: In this algorithm count the number of times the polygon edges wind around a particular point in the counter clockwise direction. This count s called the winding number and the interior points of a two dimensional object are defined to be those that have a non zero value for the winding number. We apply the non zero winding number rule to polygons by initializing the winding number to 0 and again imagining a kine drawn from any position p to a distant point beyond the coordinates extents of the object. The line we choose must not pass through any vertices. As we move along the line from position p to the distant point. We count the number of edges that crosses 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 lift, and we subtract 1 every line we intersect an edge that crosses from left to right. The final value of the winding number, after all edge crossing have been counted, determines the relative position of p. If the ending number is non zero p is taken to be an exterior point. Recursive boundary fill algorithms may not fill regions correctly if some interior pixels are already displayed in the fill color. This occurs because the algorithm checks next pixels both for boundary color and for fill color. Encountering a pixel with the fill color can cause a recursive branch to terminate leaving other interior pixels unfilled. To avoid this we can first change the color of and interior pixels unfilled. To avoid this we can first change the color of any interior pixels that are initially set to the fill color before applying the boundary fill procedure. Also since this procedure requires considerable stacking of neighboring points more efficient methods are generally employed. These methods fill horizontal pixel spans across scan lines instead of proceeding to 4 commented or 8 commented neighboring points. Then we need only stack a beginning position for each horizontal pixel span instead of stacking all unprocessed neighboring positions around the current position. Starting from the initial interior point with this method we first fill in the contiguous span of pixels on this starting scan line.
(a) The filled initial pixel span showing the position of the initial point and the stacked positions for pixel spans on adjacent scan lines. (b) Filled pixel scan on the first scan line above the initial scan line and the current contents of the stack. (d) Completed pixel spans for the upper right portion of the defined region and the remaining stacked positions to be processed. Then we locate and stack starting positions for spans on the adjacent scan lines, where spans are defined as the contiguous horizontal string of positions bounded by pixels displayed in the area border color. At each subsequent step we unstuck the next start position and repeat process.