CS 454 Computer graphics Polygon Filling

Slides:



Advertisements
Similar presentations
Polygon Scan Conversion – 11b
Advertisements

Computer Graphics Inf4/MSc 1 Computer Graphics Lecture 7 Scanline algorithm and polygon clipping Taku Komura.
Polygon Triangulation
1 King ABDUL AZIZ University Faculty Of Computing and Information Technology CS 454 Computer graphics Drawing Elementary Figures Dr. Eng. Farag Elnagahy.
CS 450: COMPUTER GRAPHICS REVIEW: DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE.
Objectives Define Clipping Various clipping methods. Line clipping methods.
CS 450: COMPUTER GRAPHICS FILLING POLYGONS SPRING 2015 DR. MICHAEL J. REALE.
Brute-Force Triangulation
CHAPTER 12 Height Maps, Hidden Surface Removal, Clipping and Level of Detail Algorithms © 2008 Cengage Learning EMEA.
Computer Graphics Viewing.
Viewing & Clipping In 2D. 2 of 44 Contents Windowing Concepts Clipping –Introduction –Brute Force –Cohen-Sutherland Clipping Algorithm Area Clipping –Sutherland-Hodgman.
CMPE 466 COMPUTER GRAPHICS Chapter 8 2D Viewing Instructor: D. Arifler Material based on - Computer Graphics with OpenGL ®, Fourth Edition by Donald Hearn,
Different types of Polygons Simple Convex Simple Concave Non-simple : self-intersecting With holes ConvexConcaveSelf-intersecting.
CPCS 391 Computer Graphics 1 Lecture 5: Polygon Filling
CSCE 441: Computer Graphics Scan Conversion of Polygons
Graphics Programming: Polygon Filling
1 King ABDUL AZIZ University Faculty Of Computing and Information Technology CS 454 Computer graphics Two Dimensional Viewing Dr. Eng. Farag Elnagahy
1 CSCE 441 Computer Graphics: Clipping Lines Jinxiang Chai.
CS 4731: Computer Graphics Lecture 22: Raster Graphics Part 3 Emmanuel Agu.
TOPIC 4 PART III FILL AREA PRIMITIVES POLYGON FILL AREAS CGMB214: Introduction to Computer Graphics.
IT- 601: Computer Graphics Lecture-04 Scan Conversion Jesmin Akhter Lecturer,IIT Jahangirnagar University, Savar, Dhaka,Bangladesh 9/3/2015.
1 CSCE 441: Computer Graphics Scan Conversion of Polygons Jinxiang Chai.
March Shape Drawing Algorithms Shmuel Wimer Bar Ilan Univ., Engineering Faculty.
CGMB 314 Intro to Computer Graphics Fill Area Primitives.
1/24/20061 Fill-Area Algorithms and Functions. 1/24/20062 Learning Objectives OpenGL state variables Color and gray scale Color functions Point attributes.
Polygon Scan Conversion and Z-Buffering
Basics of Rendering Pipeline Based Rendering –Objects in the scene are rendered in a sequence of steps that form the Rendering Pipeline. Ray-Tracing –A.
Informationsteknologi Monday, November 26, 2007Computer Graphics - Class 121 Today’s class Drawing lines Bresenham’s algorithm Compositing Polygon filling.
Graphics Graphics Korea University cgvr.korea.ac.kr Raster Graphics 고려대학교 컴퓨터 그래픽스 연구실.
Part 6: Graphics Output Primitives (4) 1.  Another useful construct,besides points, straight line segments, and curves for describing components of a.
CSC418 Computer Graphics n BSP tree n Z-Buffer n A-buffer n Scanline.
1 Filling Graphical Shapes. 2 We know how to draw outlines Can we just fill the “inside”? …but how do we know the difference between the inside and outside?
Graphics Output Primitives
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
CS 325 Introduction to Computer Graphics 03 / 22 / 2010 Instructor: Michael Eckmann.
10/15/02 (c) 2002 University of Wisconsin, CS559 Who Am I? Prof Stephen Chenney These notes will be online after the lecture – in fact they’re online already.
EEL Introduction to Computer Graphics
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2013 Tamara Munzner Rasterization.
Computer Graphics Filling. Filling Polygons So we can figure out how to draw lines and circles How do we go about drawing polygons? We use an incremental.
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
Lecture 15: Raster Graphics and Scan Conversion
1 CSCE 441: Computer Graphics Scan Conversion of Polygons Jinxiang Chai.
Rasterization Overview Raster Display Device. Scan Conversion / Rasterization: converting vector graphics into raster graphics (determining pixels in.
Computer Graphics CC416 Week 14 Filling Algorithms.
Computer Graphics Lecture 08 Taqdees A. Siddiqi Computer Graphics Filled Area Primitives I Lecture 08 Taqdees A. Siddiqi
Computer Graphics CC416 Lecture 04: Bresenham Line Algorithm & Mid-point circle algorithm Dr. Manal Helal – Fall 2014.
Computer Graphics Through OpenGL: From Theory to Experiments, Second Edition Chapter 14.
OUTPUT PRIMITIVES CEng 477 Computer Graphics METU, 2004.
Chapter- 3 & Unit-2 Graphics PRIMITIVES 1. Objectives Introduction to Primitives Points & Lines Line Drawing Algorithms Digital Differential Analyzer.
CS552: Computer Graphics Lecture 16: Polygon Filling.
Graphics PRIMITIVES Chapter- 3 & Unit-2.
Computer Graphics Filling.
Introduction to Polygons
Computer Graphics CC416 Week 13 Clipping.
Polygons.
(c) 2002 University of Wisconsin, CS559
Computer Graphics Filled Area Primitives II Lecture 09 Taqdees A
Fill Area Algorithms Jan
Polygon Filling Algorithms
© University of Wisconsin, CS559 Fall 2004
3D Rendering Pipeline Hidden Surface Removal 3D Primitives
Agenda Polygon Terminology Types of polygons Inside Test
Rasterizing Lines 1 Lecture 32 Mon, Nov 12, 2007.
Computer Graphics, KKU. Lecture 7
Prepared by Narendra V G CSE MIT
Agenda Polygon Terminology Types of polygons Inside Test
Primitive Drawing Algorithm
Rasterizing Polygons Lecture 29 Wed, Dec 7, 2005.
Primitive Drawing Algorithm
Polygons.
Presentation transcript:

CS 454 Computer graphics Polygon Filling King ABDUL AZIZ University Faculty Of Computing and Information Technology CS 454 Computer graphics Polygon Filling Dr. Eng. Farag Elnagahy farahelnagahy@hotmail.com Office Phone: 67967

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.

P = {(x1, y1), (x2, y2), ……., (xn, yn)}. 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 order to obtain the translated polygon.

Polygon Representation 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.

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 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 1 2 3 4 5 6 7 8 9 10 11 Inside

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. process.

The Scan-Line Polygon Fill Algorithm Dealing with vertices

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 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 Each entry in the table for a particular scan line contains the maximum y value for that edge, the x-intercept value (at the lower vertex) for the edge, and the inverse slope of the edge.

Polygon = {(2, 7), (4, 12), (8,15), (16, 9), (11, 5), (8, 7), (5, 5)} 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)}

The Scan-Line Polygon Fill Algorithm (Example)

The vertex A is split to A' (4, 6) and A(2, 7) The Scan-Line Polygon Fill Algorithm (Example) Vertex A should be split into two vertices A' (xA', 6) and A(2, 7) m =( 5 – 7)/( 5 – 2) = – 2/3 x'A = 5 + (–3/2)( 7 – 1 – 5) = 7/2 = 3.5  4 The vertex A is split to A' (4, 6) and A(2, 7)

The vertex B is split to B' (4, 11) and B(4, 12) The Scan-Line Polygon Fill Algorithm (Example) Vertex B should be split into two vertices B' (xB', 11) and B(4, 12) m =( 7 – 12)/( 2 – 4) = 5/2 x'A = 2 + (2/5)( 12 – 1 – 7) = 18/5 = 3.6  4 The vertex B is split to B' (4, 11) and B(4, 12)

The vertex D is split to D(16, 9) and D' (15, 8) The Scan-Line Polygon Fill Algorithm (Example) Vertex D should be split into two vertices D(16, 9) and D' (xD', 8) m =( 5 – 9)/( 11 – 16) = 4/5 x'D = 11 + (5/4)( 9 – 1 – 5) = 59/4 = 14.75  15 The vertex D is split to D(16, 9) and D' (15, 8)

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)

The Scan-Line Polygon Fill Algorithm (Example)

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 1 4 2

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

Boundary Fill Algorithm 4-connected (Example) 5 1 5 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) 5 4 3 2 1 4 1 5 2 3

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

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

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

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

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

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

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

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

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

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

Boundary Fill Algorithm 8-connected (Example) 1 1

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 The algorithm is summarized as follows: 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) 11 10 9 8 7 6 5 S 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 2 1 7 6 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 3 1 7 3 6 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 5 6 6 5 4 1 7 3 6 4 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 7 8 5 6 7 5 4 1 7 3 6 4 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 7 8 5 6 5 4 1 7 3 6 4 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 8 4 1 7 3 6 4 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 4 1 7 3 6 4 2 5 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 9 1 7 3 6 4 2 5 9 S 4 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 10 1 7 3 6 4 2 5 9 S 4 10 1 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 11 1 7 3 6 4 2 5 9 S 4 10 1 3 11 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 12 1 7 3 6 4 2 5 9 S 4 10 1 3 11 2 12 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 1 7 3 6 4 2 5 9 S 4 10 1 3 11 2 12 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Span Flood-Fill Algorithm (example) 11 10 9 8 7 8 5 6 7 3 6 4 2 5 9 S 4 10 1 3 11 2 12 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14

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.