Computer Graphics Polygon
Computer Graphics Polygon
Computer Graphics Polygon
1. Triangle
2. Rectangle
3. Hexagon
4. Pentagon
Polygon is a closed figure with many vertices and edges and at each vertex exactly two edges meet and no edge
crosses other.
The line segments which make up a polygon boundary are called edges. The end points of the edges are called
vertex of polygon.
The simple form of possible polygon is triangle having 3 edges and 3 vertex points.
A plane figure specified by a set of three or more vertices, that are connected in sequence by straight-line segments
(edges). Here refer only to those without crossing edges: simple (standard) polygon
Polygon Classifications
Convex Polygon (凸) : All interior angles are less than or equal to 180o degrees. This polygon is a polygon in which
if you take any two points of polygon then all the points on the line segment joining these two points fall within the
polygon itself.
Concave Polygon (凹): Greater than 180o degrees. This polygon is a polygon in which if the line joining any two
points of a polygon does not fall entirely within the polygon.
Polygon Representation
The polygon can be displayed by drawing a line between (x1, y1), and (x2, y2), then a line between (x2, y2), and
(x3, y3), and so on until the end vertex. In order to close up the polygon, a line between (xn, yn), and (x1, y1) must
be drawn.
For objects described by many polygons with many vertices, this can be a time consuming process.
One method for reducing the computational time is to represent the polygon by the (absolute) location of its first
vertex, and represent subsequent vertices as relative positions from the previous vertex. This enables us to translate
the polygon simply by changing the coordinates of the first vertex.
Polygon Representation
1. Polygon Drawing Primitive Approach: They can directly draw the polygon shapes. They are regular polygon
with default size and angle.
2. Trapezoid Primitive Approach: In such devices trapezoids are formed from two scan lines and two line
segments.
3. Line and Point Approach: In this display, file cannot be stored only with series of line commands because
they do not specify how many of the lines are part of polygon.
New command is used in that display file. The opcode for new command itself specify the no. of line segment
in the polygon.
Inside-Outside Tests
Inside-Outside test
Area-filling algorithms and other graphics processes often need to identify interior regions of objects. For simple
object, it is a straightforward process.
1. Draw a line: (the line path doesn’t intersect any line-segment endpoints) From any position P to a distant point
outside the coordinate extents of the polygon.
3. If the number of polygon edges crossed by this line is odd then P is an interior point.
Let P be a point to be tested. From P draw a line parallel to the X axes as shown in the above figure. Count the no. of
intersection points with edges of polygon.
If the no. of intersection points is odd then the point is inside the polygon. For P there is one intersection point.
Therefore P is inside.
If the no. of intersection points is even then the point is outside the polygon. For P’ there is two intersection points.
Therefore P’ is outside.
Circumstances where Even-Odd method fails
Overlapping Polygon:
As shown in the figure, for point P numbers of intersection are even. Thus according to Even – Odd method the
point P must be outside the polygon. But this point is inside the polygon so in such a condition where a polygon is
complex or overlapped then the Even – Odd method will not work. For that the winding no. method is used.
Winding Number method:
In this method, give direction to each and every edge as shown in following figure. Check the direction of edges and
number of edges intersected by the straight line parallel to X axes. If the direction is upward, count –1 and if the
direction is downwards then count is +1.
No. of winding is not equal to zero than point is inside or if it is equals to 0 then the point is outside the polygon.
Winding Number method:
For the figure shown below for point p summation of winding no. is,
For Point P,
Σ winding no. = -1 -1 = -2 , that is not equal to zero so point is inside the polygon.
Σ winding no. = -1 -1 +1 +1 = 0 ,
A boundary-fill procedure accepts as input the coordinate of the interior point (x, y), a fill color, and a boundary
color.
The following steps illustrate the idea of the recursive boundary-fill algorithm:
2. If the current pixel is not already filled and if it is not an edge point, then set the pixel with the fill color, and store
its neighboring pixels (4 or 8-connected) in the stack for processing. Store only neighboring pixel that is not already
filled and is not an edge point.
3. Select the next pixel from the stack, and continue with step 2.
Boundary Fill Algorithm
The order of pixels that should be added to stack using 4-connected is above, below, left, and right. For 8-connected
is above, below, left, right, above-left, above-right, below-left, and below-right.
Void fill4 (int x, int y, int fill, int boundary)
int current;
{setcolor (fill);
setpixel(x,y);
}}
Boundary Fill Algorithm: 4-connected (Example)
Boundary Fill Algorithm: 8-connected (Example)
Boundary Fill Algorithm
Since the previous procedure requires considerable stacking of neighboring pixels, more efficient
methods are generally employed.
These methods (Span Flood-Fill) fill horizontal pixel spans across scan lines, instead of proceeding to
4-connected or 8-connected neighboring pixels.
Then we need only stack a beginning position for each horizontal pixel spans, instead of stacking all
unprocessed neighboring positions around the current position.
Span Flood-Fill Algorithm
Starting from the initial interior pixel, then fill in the contiguous span of pixels on this starting scan line.
Then 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, unstack the next start position and repeat the process.
Span Flood-Fill Algorithm (example)
Flood Fill Method (seed fill method):
Sometimes we want to fill in (recolor) an area that is not defined within a single color boundary. We paint such areas
by replacing a specified interior color instead of searching for a boundary color value. This approach is called a
flood-fill algorithm.
It is also known as seed fill method. In this method, a point inside a polygon is needed. This point is called as seed
point and the process of filling the polygon area is started from this points.
From the seed point, a point is taken and interior color is replaced by the required color. This process is done till a
pixel of boundary color is reached. This process is performed simultaneously in all directions.
In first method, four surrounded pixels are taken simultaneously and replaced with the required color. In second
method, eight surrounded pixels are taken simultaneously and replaced with the required color. Obviously, recursive
function is the best suited concept for the flood fill algorithm.
Void fill4 (int x, int y, int fill, int oldcolor) {
If we do not have a seed point to fill the polygon, we can turn on all the pixels which are inside the polygon but the
problem is that, these needs inside test to be perform with each and every pixel on the screen which is very time
consuming.
Difference between flood fill and boundary fill algorithm
The boundary fill algorithm works as its name. This algorithm picks a point inside an figure and starts to fill until it
reaches the boundary of the figure. The color of the boundary and the color that we fill should be different for this
algorithm to work. In this algorithm, we assume that color of the boundary is same for the entire figure. The
boundary fill algorithm can be implemented by 4-connected pixels or 8-connected pixels.
Sometimes we come across a figure where we want to fill the area and its boundary of the figure with different
colors. We can paint such figure with a specific color instead of searching for particular boundary color as in
boundary filling algorithm. Instead of relying on the boundary of the figure, it relies on the fill color. In other words,
it replaces the interior color of the figure with the fill color. When no more pixels of the original interior color exist,
the algorithm is completed.
Edge List Algorithm
Edge List Algorithm
Edge List Algorithm
For each scan line intersecting a polygon edge at (x1 y1) complement all pixels whose midpoint lie to the right of
(x1 y1) i.e. for (x1 y1) such that x+½>x1
Fence fill Algorithm
For each scan line intersecting a polygon edge :
If intersection is to left of fence, complement all pixels to the right of the intersection and to left of fence.
Otherwise, complement all pixels to the left of or on the intersection and to the right of fence.
Edge Flag Algorithm
Scan Line Fill Method:
Figures on a computer screen can be drawn using polygons. To fill those figures with color, we need to develop
some algorithm.
There are two famous algorithms for this purpose: Boundary fill and Scanline fill algorithms. This method is also
called “alternative fill method”.
The scan line fill method is a very efficient & cheaper alternative. This is the method in which scan line are used for
the filling process. Scan line fill method works very efficiently with self-intersecting polygons as well.
This algorithm works by intersecting scan line with polygon edges and fills the polygon between pairs of
intersections. The following steps depict how this algorithm works.
Scan Line Fill Method:
Step 1 − Find out the Ymin and Ymax from the given polygon.
Step 2 − Scan Line intersects with each edge of the polygon from Ymin to Ymax. Name each intersection point of
the polygon. As per the figure shown above, they are named as p0, p1, p2, p3.
Step 3 − Sort the intersection point in the increasing order of X coordinate i.e. (p0, p1), (p1, p2), and (p2, p3).
Step 4 − Fill all those pair of coordinates that are inside polygons and ignore the alternate pairs.
Here the color is filled with scan lines.
Find the intersection between the scanlines & the edges. The 2 points (3,6) is stored in the frame
buffer in the sorted order & pixel are colored from (3,6).
Scan line intersection pair
If scan line is passing through a vertex and the no. of intersection point is odd, then the vertex should
be considered as a 2 intersection points.
If scan line is passing through a vertex and the no. of intersection point is even, then the vertex should
be considered as a 1 intersection points.
Test Method:
Traverse the edges in clockwise direction & observe the values of y. If y value is decreasing then
consider it as one intersection point.
Traverse the edges in anticlockwise direction & observe the values of y. If y value is increasing then
consider it as one intersection point.
In that case at one edge the value of y is decreasing and other edge is increasing
then consider the vertex as 2 intersection point.
Scan line algorithm
Y k+1 - Y k = 1 Y k+1 = Yk +1
Next value of x: successive x can be calculated by
X k+1 = Xk + 1/m
X k+1 - Xk = m
X k+1 = Xk + m
Problem on scan line algorithm
Explain scan line polygon fill algorithm: Determine the content of the active edge
table to fill the polygon with vertices A(2,4), B(4,6) and C(4,1) for y=1 to y=6.
Character generation
Letters, numbers, and other character are often displayed to label and annotate drawing and to give instructions and
information to the user.
Most of the times characters are built into the graphics display devices, usually as hardware but sometimes through
software.
– Stroke method
– Bitmap method
Bitmap Font/ Bitmapped Font: Character Generation
A simple method for representing the character shapes in a particular typeface is to use rectangular
grid patterns.
The figure below shows the pattern for the particular letter.
When the pattern in the figure copied to the area of the frame buffer, the 1 bits designate which pixel
positions to displayed on the monitor.
Bitmap fonts the simplest to define and display as character grid only need to be mapped to a frame
buffer position.
Bitmap fonts require more space because each variation (size and format) must stored in a font cache.
It possible to generate different size and other variation from one set but this usually does not produce
the good result.
Stroke Method: Character Generation
The small series of line segments are drawn like a strokes of a pen to form a character as shown in figure.
Here it is necessary to decide which line segments are needed for each character and
It does this by changing the length of the line segments used for character drawing.
Starburst Method
In this method a fix pattern of line segments are used to generate characters.
Out of 24 line segments, segments required to display for particular character, are highlighted
The patterns for particular characters are stored in the form of 24 bits code.
The bit is set to one to highlight the line segment otherwise it is set to zero.
This method of character generation is not used now a days because of following disadvantages:
The 24-bits are required to represent a character. Hence more memory is required.
Requires code conversion software to display character from its 24 bits code.
10011100001001100000000