Presentation is loading. Please wait.

Presentation is loading. Please wait.

College of Computer and Information Science, Northeastern UniversityMay 27, 20161 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 9 – September.

Similar presentations


Presentation on theme: "College of Computer and Information Science, Northeastern UniversityMay 27, 20161 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 9 – September."— Presentation transcript:

1 College of Computer and Information Science, Northeastern UniversityMay 27, 20161 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 9 – September 24, 2012

2 College of Computer and Information Science, Northeastern UniversityMay 27, 20162 Today’s Topics Fill: Flood Boundary Fill vs. Polygon Fill  See Photoshop for Flood Fill 2D Polygon Fill

3 College of Computer and Information Science, Northeastern University Simple 2D Polygon an ordered sequence of line segments such that  each edge g i = ( s i, e i ) is the segment from a start vertex s i to an end vertex e i  e i-1 = s i for 0 < i ≤ n-1 and e n-1 = s 0  non-adjacent edges do not intersect  the only intersection of adjacent edges is at their shared vertex 5/27/20163

4 College of Computer and Information Science, Northeastern UniversityMay 27, 20164 Scan Line Polygon Fill

5 College of Computer and Information Science, Northeastern UniversityMay 27, 20165 Parity Check Draw a horizontal half-line from P to the right. Count the number of times the half-line crosses an edge. 1in 4out 7in

6 College of Computer and Information Science, Northeastern UniversityMay 27, 20166 Polygon Data Structure edges xminymax1/m  168/4  (1, 2) (9, 6) xmin = x value at lowest y ymax = highest y Why 1/m? If y = mx + b, x = (y-b)/m. x at y+1 = (y+1-b)/m = (y-b)/m + 1/m.

7 Polygon Data Structure Edge Table (ET) has a list of edges for each scan line. e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 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

8 College of Computer and Information Science, Northeastern UniversityMay 27, 20168 Preprocessing the edges count twice, once for each edge chop lowest pixel to only count once delete horizontal edges For a closed polygon, there should be an even number of crossings at each scan line. We fill between each successive pair.

9 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 e11 7  e3  e4  e5 6  e7  e8 11  e6 10 Polygon Data Structure after preprocessing Edge Table (ET) has a list of edges for each scan line. e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 13

10 College of Computer and Information Science, Northeastern UniversityMay 27, 201610 The Algorithm 1.Start with smallest nonempty y value in ET. 2.Initialize SLB (Scan Line Bucket) to nil. 3.While current y ≤ top y value: a.Merge y bucket from ET into SLB; sort on xmin. b.Fill pixels between rounded pairs of x values in SLB. c.Remove edges from SLB whose ytop = current y. d.Increment xmin by 1/m for edges in SLB. e.Increment y by 1.

11 Running the Algorithm e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 13 ET 13 12 11  e6 10 9 8 7  e3  e4  e5 6  e7ve8 5 4 3 2 1  e2  e11 0  e10  e9 xminymax1/m e226-2/5 e31/3 121/3 e4412-2/5 e54130 e66 2/313-4/3 e71010-1/2 e81082 e91183/8 e10114-3/4 e11642/3 5 0 10 15

12 May 27, 201612 Running the Algorithm e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 13 5 0 10 15 y=0 SCB  114-3/4  1183/8  e9 e10 10 1/4 11 3/8

13 May 27, 201613 Running the Algorithm e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 13 5 0 10 15 y=1 SLB  26-2/5  642/3  e11 e2 1 3/5 10 1/44-3/4  11 3/8 83/8  e9 e10 6 2/3 9 1/2 11 6/8

14 May 27, 201614 Running the Algorithm e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 0 5 10 13 5 0 1015 y=2 SLB  1 3/56-2/5  6 2/342/3  e11 e2 9 1/24-3/4  11 6/883/8  e9 e10 12 1/8 8 3/4 7 1/3 1 1/5

15 May 27, 201615 Running the Algorithm e3 e4 e5 e6 e7 e8 e9 e10 0 5 10 13 5 0 1015 y=3 SLB  1 1/56-2/5  7 1/342/3  e11 e2 8 3/44-3/4  12 1/883/8  e9 e10 12 4/8 8 8 4/5 e11e2

16 May 27, 201616 Running the Algorithm e3 e4 e5 e6 e7 e8 e10 0 5 10 13 5 0 1015 y=4 SLB  4/56-2/5  842/3  e11 e2 84-3/4  12 4/883/8  e9 e10 e11e2 e9 Remove these edges.

17 May 27, 201617 Running the Algorithm e3 e4 e5 e6 e7 e8 0 5 10 13 5 0 1015 y=4 SLB  4/56-2/5  e2 12 4/883/8  e9 12 7/8 2/5 e2e11 e10 e9 e11 and e10 are removed.

18 May 27, 201618 Running the Algorithm e3 e4 e5 e6 e7 e8 0 5 10 13 5 0 1015 y=5 SLB  2/56-2/5  e2 12 7/883/8  e9 13 2/8 0 e2e11 e10 e9

19 May 27, 201619 Running the Algorithm e3 e4 e5 e6 e7 e8 0 5 10 13 5 0 1015 y=6 SLB  06-2/5  e2 10 -1/2  e7 e2e11 e10 e9 Remove this edge. 1082  e8 13 2/883/8  e9 9 1/2 12 13 5/8

20 Running the Algorithm e3 e4 e5 e6 e7 e8 0 5 10 13 5 0 1015 y=7 SLB  4130  e5 9 1/210-1/2  e7 e2e11 e10 e9 1282  e8 13 5/883/8  e9 Add these edges. 412-2/5  e4 1/3121/3  e3

21 College of Computer and Information Science, Northeastern University Non-Simple Polygons 5/27/201621

22 College of Computer and Information Science, Northeastern University 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. 5/27/201622

23 College of Computer and Information Science, Northeastern University 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 5/27/201623

24 College of Computer and Information Science, Northeastern University Nonzero Rule construct a ray r as before compute all intersections of r with the poly edges g i, but this time keep track of whether the edge crossed from left to right (i.e. s i on left side of r and e i 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 5/27/201624

25 College of Computer and Information Science, Northeastern University 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) 5/27/201625

26 College of Computer and Information Science, Northeastern University 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) 5/27/201626

27 College of Computer and Information Science, Northeastern University The Results Can be Different 5/27/201627


Download ppt "College of Computer and Information Science, Northeastern UniversityMay 27, 20161 CS 4300 Computer Graphics Prof. Harriet Fell Fall 2012 Lecture 9 – September."

Similar presentations


Ads by Google