0% found this document useful (0 votes)
74 views53 pages

Area Fill Algorithms For Various Graphics Primitives: Amity University, Haryana

This document discusses different algorithms for filling polygons in computer graphics, including the scan-line algorithm, boundary fill algorithm, and flood fill algorithm. It provides details on how the scan-line algorithm works by scanning horizontally and tracking edge intersections. An example is given to demonstrate the process. The boundary fill algorithm is also summarized as starting at an interior point and recursively filling neighboring pixels within the boundary.

Uploaded by

azmi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views53 pages

Area Fill Algorithms For Various Graphics Primitives: Amity University, Haryana

This document discusses different algorithms for filling polygons in computer graphics, including the scan-line algorithm, boundary fill algorithm, and flood fill algorithm. It provides details on how the scan-line algorithm works by scanning horizontally and tracking edge intersections. An example is given to demonstrate the process. The boundary fill algorithm is also summarized as starting at an interior point and recursively filling neighboring pixels within the boundary.

Uploaded by

azmi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

AMITY UNIVERSITY, HARYANA

Area fill algorithms for various graphics


primitives

By: ANKIT GARG


Polygon Filling Algorithms
1.Scan line Fill Algorithm
2.Boundary Fill Algorithm
3.Flood Fill Algorithm
Polygon Filling
Types of filling
• Solid-fill
All the pixels inside the polygon’s boundary
are illuminated.

• Pattern-fill
the polygon is filled with an arbitrary
predefined pattern.
Polygon Representation
The polygon can be represented by listing its n
vertices in an ordered list.
P = {(x1, y1), (x2, y2), ……., (xn, yn)}.

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.

One problem with this representation is that if we


wish to translate the polygon, it is necessary to
apply the translation transformation to each vertex in
C graphic program to demonstrate drawpoly function
#include <graphics.h>
#include <stdio.h>

int main( )
{
int gd=DETECT, gm;
int points[]={150,130,350,130,350,400,250,400,150,130};
initgraph(&gd,&gm,"C:\\tc\\bgi");
// read result of initialization
// graphresult return error code of graphics
errorcode=graphresult( );
if( errorcode!=grOk ) // grOk is graphics error constant
{// an error has now been occurred
// grapherrormsg return address of error message string
printf(“graphics error:%s”,grapherrormsg(errorcode));
printf(“press any key to halt:”);
getch();
// terminate with error code
exit(1);
}
drawpoly(5,points);
getch();
closegraph();
return 0;
}
Types of Polygons: Convex and Concave
Convex Polygon - For any two points P1, P2 inside the
polygon, all points on the line segment which
connects P1 and P2 are inside the polygon.
Concave Polygon
- A polygon which is not convex.

Convex Polygon Concave Polygon

?
Larry Hodges, Zachary Wartell
Inside-Outside Tests
when filling polygons we should decide whether a
particular point is interior or exterior to a polygon.
A rule called the odd-parity (or the odd-even rule)
is applied to test whether a point is interior or not.
To apply this rule, we conceptually draw a line
starting from the particular point and extending to a
distance point outside the coordinate extends of the
object in any direction such that no polygon vertex
intersects with the line.
Inside-Outside Tests (Even – odd method)
The point is considered to be interior if the number
of intersections between the line and the polygon
edges is odd. Otherwise, The point is exterior point.

Outside 8
7
6
5
4
3
2
1
0
0 1 2 3 4 5 6 7 8 9 10 11
Inside
WINDING NUMBER METHOD FOR INSIDE OUT
SIDE TEST

If the winding number is nonzero


then
P is defined to be an interior point
Else
P is taken to be an exterior point.

1. Sum of edge is nonzero means Inside the polygon

2. Sum of edge is zero means outside the polygon


The Scan-Line Polygon Fill Algorithm
The scan-line polygon-filling algorithm involves
• The horizontal scanning of the polygon from its
lowermost to its topmost vertex,
• Identifying which edges intersect the scan-line,
and finally drawing the interior horizontal lines with
the specified fill color.
The Scan-Line Polygon Fill Algorithm
Dealing with vertices

Odd Intersection
Color Filling Start

 Even Intersection
Color Filling Stop
Student Please make correction,
Here please count number of
intersection 1.
The Scan-Line Polygon Fill Algorithm
Determining Edge Intersections
m = (yk+1 – yk) / (xk+1 – xk)

yk+1 – yk = 1

xk+1 = xk + 1/m
The Scan-Line Polygon Fill Algorithm
Dealing with vertices
• When the endpoint y coordinates of the two edges are
increasing, the y value of the upper endpoint for the
current edge is decreased by one (a)
• When the endpoint y values are decreasing, the y value
of the next edge is decreased by one (b)
The Scan-Line Polygon Fill Algorithm
(Example) Polygon = {A, B, C, D, E, F, G}
Polygon = {(2, 7), (4, 12), (8,15), (16, 9), (11, 5), (8, 7), (5, 5)}

Here x represents in above


table x coordinate of polygon
edge where first intersection
of scan line on vertex of
polygon will occur.
The Scan-Line Polygon Fill Algorithm
(Example)
The Scan-Line Polygon Fill Algorithm
(Example)
The Scan-Line Polygon Fill Algorithm
(Example)
The Scan-Line Polygon Fill Algorithm
(Example)

Correction: A’(3,6)
The Scan-Line Polygon Fill Algorithm
(Example) Edge
no-0
Edge Table
-sort vertices by y coordinate building Edge Table (ET)

ET Not needed Because Intersection over D and C gives


ymax Even intersection points.
D C
yD,C
F

yG GF T5
G T6
T4
yE EF ED
E
T3
yB BC B
H T2
yH HG
T1
yA AH AB
A
y=
Zachary Wartell
Scan AET with AEL
-scan up through ET and track Active Edge Table (AET). At
each scan-line fill in span of pixel for each edge pair.
ET AETk
ymax (k = 1..10)
D C
[(DE,BC)]
F
[(GF,EF),
yG GF T5 (DE,BC)]
G T6
[(HG,EF),
T4
yE EF ED
E (DE,BC)]
T3 [(HG,BC)]
yB BC B
H T2 [(HG,AB)]
yH HG
T1
AH AB
[(AH,AB)]
yA
A
y=0
Boundary Fill Algorithm
• Another approach to area filling is to start at a
point inside a region and paint the interior outward
toward the boundary.
• If the boundary is specified in a single color, the fill
algorithm processed outward pixel by pixel until the
boundary color is encountered.
• A boundary-fill procedure accepts as input the
coordinate of the interior point (x, y), a fill color,
and a boundary color.
Boundary Fill Algorithm
The following steps illustrate the idea of the
recursive boundary-fill algorithm:

1. Start from an interior point.


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.
Boundary Fill Algorithm
4-connected (Example)

Start Position
Boundary Fill Algorithm
4-connected (Example)

3
2
1
1
2 3
Boundary Fill Algorithm
4-connected (Example)

4
2
1 4
1
2
Boundary Fill Algorithm
4-connected (Example)

2
1
1
2
Boundary Fill Algorithm
4-connected (Example)

5
5 1
1
Boundary Fill Algorithm
4-connected (Example)

1
1
Boundary Fill Algorithm
4-connected (Example)
Boundary Fill Algorithm
8-connected (Example)

Start Position
Boundary Fill Algorithm
8-connected (Example)

4 1 5
5
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

6
4 1
6
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

7 8

8
4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

12
11 9 12
11
7 10
10
9
4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

11 9
11
7 10
10
9
4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

9
7 10
10
9
4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

9
7

9
4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

4 1
7
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

4 1
2 3
4
3
2
1
Boundary Fill Algorithm
8-connected (Example)

1
2 3

3
2
1
Boundary Fill Algorithm
8-connected (Example)

1
2

2
1
Boundary Fill Algorithm
8-connected (Example)

1
Boundary Fill Algorithm
8-connected (Example)
Boundary Fill Algorithm

In boundary fill algorithm we start from a seed pixel


and start fill the color until boundary color does not
encountered. In this algorithm if color of seed pixel
is already fill color then we have to make this pixel
as background color and then start fill color.

Functions used in this algorithm

Getpixel( )- This function is used to fetch color of a


pixel on the screen.
Putpixel( ) – To give color on a particular pixel.
Boundary Fill Algorithm (Code)
void boundaryFill(int x, int y,
int fillColor, int borderColor)
{
getPixel(x, y, color);
if ((color != borderColor)
&& (color != fillColor)) {
putpixel(x,y, RED);
boundaryFill(x+1,y,fillColor,borderColor);
boundaryFill(x-1,y,fillColor,borderColor);
boundaryFill(x,y+1,fillColor,borderColor);
boundaryFill(x,y-1,fillColor,borderColor);
}
}
49
Flood Fill Algorithm
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.


Flood Fill Algorithm
We start from a specified interior pixel (x, y) and reassign
all pixel values that are currently set to a given interior color
with the desired fill color.

If the area has more than one interior color, we can first
reassign pixel values so that all interior pixels have the
same color.

Using either 4-connected or 8-connected approach, we


then step through pixel positions until all interior pixels
have been repainted.

In this algorithm we match color of a pixel with background


color of the object. We stop color fill until we does not find
a pixel where color is not same as background color.
Flood Fill Algorithm (Code)
void floodFill(int x, int y,
int fillColor, int oldColor)
{
if (getpixel(x,y) == oldColor)
{
putpixel(x,y, RED);
floodFill(x+1, y, fillColor, oldColor);
floodFill(x-1, y, fillColor, oldColor);
floodFill(x, y+1, fillColor, oldColor);
floodFill(x, y-1, fillColor, oldColor);
}
}

52
THANKS

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy