Prof. Harriet Fell Fall 2011 Lecture 9 – September 26, 2011

Slides:



Advertisements
Similar presentations
Polygon Scan Conversion – 11b
Advertisements

SI23 Introduction to Computer Graphics
Computer Graphics Inf4/MSc 1 Computer Graphics Lecture 7 Scanline algorithm and polygon clipping Taku Komura.
Computer Graphics- SCC 342
CMPE 466 COMPUTER GRAPHICS
CS 450: COMPUTER GRAPHICS FILLING POLYGONS SPRING 2015 DR. MICHAEL J. REALE.
Polygon Rasterization
Computer Graphics Scan Conversion Polygon Faculty of Physical and Basic Education Computer Science Dep Lecturer: Azhee W. MD.
College of Computer and Information Science, Northeastern UniversityApril 17, CS U540 Computer Graphics Prof. Harriet Fell Spring 2009 Lecture 9.
Convex Hull obstacle start end Convex Hull Convex Hull
CS16: Introduction to Data Structures & Algorithms
I. The Problem of Molding Does a given object have a mold from which it can be removed? object not removable mold 1 object removable Assumptions The object.
I. The Problem of Molding Does a given object have a mold from which it can be removed? object not removable mold 1 object removable Assumptions The object.
5/17/2015 1:32 AMConvex Hull1 obstacle start end.
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
Graphics Programming: Polygon Filling
CSE53111 Computational Geometry TOPICS q Preliminaries q Point in a Polygon q Polygon Construction q Convex Hulls Further Reading.
TOPIC 4 PART III FILL AREA PRIMITIVES POLYGON FILL AREAS CGMB214: Introduction to Computer Graphics.
CGMB 314 Intro to Computer Graphics Fill Area Primitives.
Polygon Scan Conversion and Z-Buffering
3/4/04© University of Wisconsin, CS559 Spring 2004 Last Time Clipping Lines –Cohen-Sutherland: The use of outcodes and early reject/accept tests –Liang-Barsky:
CS 445 / 645 Introduction to Computer Graphics Lecture 8 Triangle Rasterization Lecture 8 Triangle Rasterization.
Informationsteknologi Monday, November 26, 2007Computer Graphics - Class 121 Today’s class Drawing lines Bresenham’s algorithm Compositing Polygon filling.
College of Computer and Information Science, Northeastern UniversityOctober 12, CS G140 Graduate Computer Graphics Prof. Harriet Fell Spring 2006.
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?
College of Computer and Information Science, Northeastern UniversityMay 27, CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 9 – September.
Scan Conversion. Last step in the graphics pipeline Efficiency is a central issue Common primitives – Lines (done last class) – Polygons (fill polygons,
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
College of Computer and Information Science, Northeastern UniversityOctober 31, CS G140 Graduate Computer Graphics Prof. Harriet Fell Spring 2009.
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.
COMPUTATIONAL GEOMETRY AND MATRIX MULTIPLICATION Mohammed Zeeshan Farooqui Minhaj Uddin.
CS6234 Advanced Algorithms - Convex hull. Terminologies – ◦ Convex hull of a set Q of points is the smallest convex polygon P for which each point in.
Lecture 15: Raster Graphics and Scan Conversion
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 Through OpenGL: From Theory to Experiments, Second Edition Chapter 14.
CS552: Computer Graphics Lecture 16: Polygon Filling.
Computer Graphics Filling.
Introduction to Polygons
CS G140 Graduate Computer Graphics
Polygons.
(c) 2002 University of Wisconsin, CS559
Computer Graphics Filled Area Primitives II Lecture 09 Taqdees A
Midterm Review Computer Graphics Hardware Point and Line Drawing
Query Processing in Databases Dr. M. Gavrilova
Zhen Jiang West Chester University
Prof. Harriet Fell Spring 2007 Lecture 9 – January 29, 2007
© University of Wisconsin, CS559 Fall 2004
Convex Hull obstacle start end 11/21/2018 4:05 AM Convex Hull
Agenda Polygon Terminology Types of polygons Inside Test
CSCE 441 Computer Graphics: Clipping Lines Jinxiang Chai
Prepared by Narendra V G CSE MIT
Agenda Polygon Terminology Types of polygons Inside Test
I. The Problem of Molding
Ray Tracing Polyhedra ©Anthony Steed
Segment Clipping Simple algorithm. For each segment compute the intersection with the four sides of the rectangle, and then determine which sub-segment.
(c) 2002 University of Wisconsin, CS559
© University of Wisconsin, CS559 Fall 2004
CS U540 Computer Graphics Prof. Harriet Fell Spring 2007
Rasterizing Polygons Lecture 29 Wed, Dec 7, 2005.
NOTE.
Convex Hull obstacle start end 4/30/2019 5:21 PM Convex Hull
CS U540 Computer Graphics Prof. Harriet Fell Spring 2007
Where We Stand At this point we know how to: Next thing:
Type to enter a caption. Computer Graphics Week 6 Lecture 1.
Computational Geometry
CS U540 Computer Graphics Prof. Harriet Fell Spring 2007
Polygons.
Presentation transcript:

Prof. Harriet Fell Fall 2011 Lecture 9 – September 26, 2011 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2011 Lecture 9 – September 26, 2011 January 1, 2019

Today’s Topics Fill: Flood Boundary Fill vs. Polygon Fill See Photoshop for Flood Fill 2D Polygon Fill January 1, 2019

Simple 2D Polygon an ordered sequence of line segments such that each edge gi = (si, ei) is the segment from a start vertex si to an end vertex ei ei-1 = si for 0 < i ≤ n-1 and en-1 = s0 non-adjacent edges do not intersect the only intersection of adjacent edges is at their shared vertex 1/1/2019

Scan Line Polygon Fill January 1, 2019

Parity Check Draw a horizontal half-line from P to the right. Count the number of times the half-line crosses an edge. 1 in 4 out 7 in 7 in January 1, 2019

Polygon Data Structure edges xmin ymax 1/m  (9, 6) 1 6 8/4  xmin = x value at lowest y ymax = highest y Why 1/m? (1, 2) If y = mx + b, x = (y-b)/m. x at y+1 = (y+1-b)/m = (y-b)/m + 1/m. January 1, 2019

Polygon Data Structure 13 12 11 10  e6 9 8 7  e4  e5 6  e3  e7  e8 5 4 3 2 1  e2  e1  e11 0  e10  e9 Edge Table (ET) has a list of edges for each scan line. 13 e6 10 e5 e3 e7 e4 e8 5 e9 e2 e11 e10 e1

Preprocessing the edges For a closed polygon, there should be an even number of crossings at each scan line. We fill between each successive pair. count twice, once for each edge delete horizontal edges chop lowest pixel to only count once January 1, 2019

Polygon Data Structure after preprocessing 13 12 11 10  e6 9 8 7  e4  e5 6  e3  e7  e8 5 4 3 2 1  e2  e1  e11 0  e10  e9 11  e6 10 Edge Table (ET) has a list of edges for each scan line. 13 7  e3  e4  e5 6  e7  e8 e6 10 e5 e3 e7 e4 e8 5 e9 e2 e11 e11 e10 e1

The Algorithm Start with smallest nonempty y value in ET. Initialize SLB (Scan Line Bucket) to nil. While current y ≤ top y value: Merge y bucket from ET into SLB; sort on xmin. Fill pixels between rounded pairs of x values in SLB. Remove edges from SLB whose ytop = current y. Increment xmin by 1/m for edges in SLB. Increment y by 1. January 1, 2019

Running the Algorithm ET e6 e5 e3 e7 e4 e8 e9 e2 e11 e10 11  e6 13 12 11  e6 10 9 8 7  e3  e4  e5 6  e7 ve8 5 4 3 2 1  e2  e11 0  e10  e9 xmin ymax 1/m e2 2 6 -2/5 e3 1/3 12 1/3 e4 4 12 -2/5 e5 4 13 0 e6 6 2/3 13 -4/3 e7 10 10 -1/2 e8 10 8 2 e9 11 8 3/8 e10 11 4 -3/4 e11 6 4 2/3 Running the Algorithm 13 e6 10 e5 e3 e7 e4 e8 5 e9 e2 e11 e10 5 10 15

Running the Algorithm y=0 SCB e10 e6 11 10 1/4 4 -3/4  e5 e3 e7 e9 13 e6 11 10 1/4 4 -3/4  10 e5 e3 e7 e9 e4 e8 11 3/8 11 8 3/8  5 e9 e2 e11 e10 5 10 15 January 1, 2019

Running the Algorithm y=1 SLB e2 e6 2 1 3/5 6 -2/5  e5 e3 e7 e11 e4 13 e6 2 1 3/5 6 -2/5  10 e5 e3 e7 e11 e4 e8 6 6 2/3 4 2/3  5 e9 e10 e2 e11 9 1/2 10 1/4 4 -3/4  e10 e9 5 10 15 11 6/8 11 3/8 8 3/8  January 1, 2019

Running the Algorithm y=2 SLB e2 e6 1 3/5 1 1/5 6 -2/5  e5 e3 e7 e11 13 e6 1 3/5 1 1/5 6 -2/5  10 e5 e3 e7 e11 e4 e8 6 2/3 7 1/3 4 2/3  5 e9 e10 e2 e11 9 1/2 8 3/4 4 -3/4  e10 e9 5 10 15 11 6/8 12 1/8 8 3/8  January 1, 2019

Running the Algorithm y=3 SLB e2 e6 4/5 1 1/5 6 -2/5  e5 e3 e7 e11 13 e6 4/5 1 1/5 6 -2/5  10 e5 e3 e7 e11 e4 e8 7 1/3 8 4 2/3  5 e9 e10 e2 e11 8 8 3/4 4 -3/4  e10 e9 5 10 15 12 1/8 12 4/8 8 3/8  January 1, 2019

Running the Algorithm y=4 SLB e2 e6 4/5 6 -2/5  e5 e3 e7 e11 e4 e8 8 13 e6 4/5 6 -2/5  10 e5 e3 e7 e11 e4 e8 8 4 2/3  5 e9 e10 e2 e11 8 4 -3/4  e10 e9 5 10 15 12 4/8 8 3/8  Remove these edges. January 1, 2019

Running the Algorithm y=4 SLB e2 e6 2/5 4/5 6 -2/5  e5 e3 e7 e9 e4 13 e6 2/5 4/5 6 -2/5  10 e5 e3 e7 e9 e4 e8 12 7/8 12 4/8 8 3/8  5 e9 e11 and e10 are removed. e2 e11 e10 5 10 15 January 1, 2019

Running the Algorithm y=5 SLB e2 e6 2/5 6 -2/5  e5 e3 e7 e9 e4 e8 13 e6 2/5 6 -2/5  10 e5 e3 e7 e9 e4 e8 13 2/8 12 7/8 8 3/8  5 e9 e2 e11 e10 5 10 15 January 1, 2019

Running the Algorithm Remove this edge. y=6 SLB e2 e6 6 -2/5  e5 e3 13 e6 6 -2/5  10 e5 e3 e7 e7 e4 e8 10 9 1/2 10 -1/2  5 e9 e8 e2 e11 10 12 8 2  e10 e9 5 10 15 13 2/8 13 5/8 8 3/8  January 1, 2019

Running the Algorithm Add these edges. e3 1/3 12 1/3  e4 4 12 -2/5  13 e6 e5 10 e5 4 13  e3 e7 e4 e8 y=7 SLB e7 5 9 1/2 10 -1/2  e9 e2 e11 e8 e10 12 8 2  5 10 15 e9 13 5/8 8 3/8 

Non-Simple Polygons 1/1/2019

Even-odd Rule construct a ray r in an arbitrary direction from the test point p count number of intersections of r with the polygon. p is defined to be inside the poly if the intersection count is odd. 1/1/2019

Reasoning each time an edge is crossed, either switch from inside to outside or outside to inside but since poly is closed, know that ray r must end up outside this is the method we just applied 1/1/2019

Nonzero Rule construct a ray r as before compute all intersections of r with the poly edges gi, but this time keep track of whether the edge crossed from left to right (i.e. si on left side of r and ei on right side of r) or right to left count +1 for left-to-right and –1 for right-to-left p is defined to be inside the poly if and only if (iff) final count is nonzero 1/1/2019

Reasoning consider sweeping a point q along the perimeter of the poly take the integral of the orientation angle of the line segment from p to q turns out that, for one complete sweep of the polygon, the integrated winding angle will be an integer multiple of cover it) 1/1/2019

Intuition intuition: reasonable definition of inside-ness is to check if the poly “circled around” p in CCW direction different number times than in CW direction nonzero intersection test turns out to be a shortcut to compute (proof is a little subtle and we will not cover it) 1/1/2019

The Results Can be Different 1/1/2019