3. 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
5. 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
8. 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
9. For the initial point, (x0 , y0 ) = (0, r)
p0 = fcircle (1, r-½ )
= 1 + (r-½ )2 – r2
= 5–r
4
≈ 1–r
10. 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
11. 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
12. Example:
Given a circle radius = 10, determine the circle octant in
the first quadrant from x=0 to x=y.
Solution:
p0 = 5 – r
4
= 5 – 10
4
= -8.75
≈ –9
15. 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.
16. The basic filling algorithm is commonly used in
interactive graphics packages, where the user
specifies an interior point of the region to be filled.
4-connected pixels
17. [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.
19. 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.
20. 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);
}
}
21. 1. The 4-connected
method.
2. The 8-connected
method.
26. 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.
27. 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 for
this test:
I. Even-Odd Method,
II. Winding Number Method.
1/2
-
27
28. 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
30. 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.
31. 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.
32. 10 14 18 24
Interior pixels along a scan line passing through a polygon area
• For each scan line crossing a polygon ,the area filling algorithm locates the
intersection points of the scan line with the polygon edges.
• These intersection points are then sorted from left to right , and the
corresponding frame buffer positions between each intersection pair are set to
specified fill color
33. (a) (b)
Adjusting endpoint values for a polygon, as we process edges in order
around the polygon perimeter. The edge currently being processed is
indicated as a solid like. In (a), the y coordinate of the upper endpoint of
the current edge id decreased by 1. In (b), the y coordinate of the upper
end point of the next edge is decreased by 1