Download presentation
Presentation is loading. Please wait.
1
CSCE 441: Computer Graphics Scan Conversion of Polygons
Jinxiang Chai
2
OpenGL Geometric Primitives
All geometric primitives are specified by vertices GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_LINES GL_POINTS GL_TRIANGLE_STRIP GL_QUAD_STRIP GL_TRIANGLES GL_QUADS GL_TRIANGLE_FAN
3
OpenGL Geometric Primitives
All geometric primitives are specified by vertices GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_LINES GL_POINTS GL_TRIANGLE_STRIP GL_QUAD_STRIP GL_TRIANGLES GL_QUADS GL_TRIANGLE_FAN
4
OpenGL Geometric Primitives
All geometric primitives are specified by vertices GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_LINES GL_POINTS GL_TRIANGLE_STRIP GL_QUAD_STRIP GL_TRIANGLES GL_QUADS GL_TRIANGLE_FAN
5
Drawing General Polygons
How to draw every interior pixels? ?
6
Drawing Curved Objects
How to draw every interior pixels? ?
7
Outline Methods for drawing polygons or curved objects
- Scanline conversion of polygons - Boundary-fill - Flood-fill Required readings: - HB 4-9 to 4-14
8
Which pixels should be filled?
Drawing Rectangles Which pixels should be filled?
9
Drawing Rectangles Is this correct?
10
What if two rectangles overlap?
Drawing Rectangles What if two rectangles overlap?
11
Drawing Rectangles Is this correct?
12
Drawing Rectangles Overlap!!! Is this correct?
13
Solution: Exclude pixels on top and right
Drawing Rectangles Solution: Exclude pixels on top and right
14
Artifacts are possible
Drawing Rectangles Artifacts are possible
15
General Polygons – Basic Idea
How to draw every interior pixels?
16
General Polygons – Basic Idea
How to draw every interior pixels for a scan line?
17
General Polygons – Basic Idea
Intersect scan lines with edges Find ranges along x Fill interior of those ranges Don’t fill top/right Edges may NOT match with line drawing algo
18
General Polygons – Basic Idea
Use coherence to speed up Intersect scan lines with edges Find ranges along x Fill interior of those ranges Don’t fill top/right Edges may NOT match with line drawing algo
19
General Polygons – Basic Idea
Use coherence to speed up Intersect scan lines with edges Find ranges along x Fill interior of those ranges Edges intersecting one scan line are mostly same as those intersecting previous scan line
20
General Polygons – Basic Idea
Use coherence to speed up Intersect scan lines with edges Find ranges along x Fill interior of those ranges The x-value of an intersection with one scan line is close to the intersection with the previous one
21
How to store polygon edges?
22
General Polygons – Data Structures
Sorted Edge Table: Store a linked-list per scan-line. Insert edges into table at scan-line associated with lowest end-point. Scan Lines Edges
23
General Polygons – Example
C Sorted Edge Table B D G F E A
24
General Polygons – Example
C Sorted Edge Table B D G F E A
25
General Polygons – Example
C Sorted Edge Table B D G AB AG F E A
26
General Polygons – Example
C Sorted Edge Table B D G AB AG F E Exclude horizontal edges! A
27
General Polygons – Example
C Sorted Edge Table B D G FG ED AB AG F E A
28
General Polygons – Example
C Sorted Edge Table B D CD G FG ED AB AG F E A
29
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG F E A
30
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG F E Which edges are intersecting with the current scan line? A
31
General Polygons – Data Structures
Active Edge List: List of all edges intersecting current scan-line sorted by their x-values Edges
32
General Polygons – Data Structures
Active Edge List: List of all edges intersecting current scan-line sorted by their x-values Edges Implement active edge list with linked list
33
General Polygons – Data Structures
Active Edge List: List of all edges intersecting current scan-line sorted by their x-values Edges Implement active edge list with linked list So what kind of information should be stored in the linked list for our polygon drawing algorithm?
34
General Polygons – Data Structures
Edge: maxY: highest y-value currentX: x-value of end-point with lowest y-value xIncr: 1 / slope Edge mazY currentX xIncr
35
Scan line intersection
Scan line yk+1 Scan line yk
36
Scan line intersection
Scan line yk+1 Scan line yk
37
General Polygons – Data Structures
Edge: maxY: highest y-value currentX: x-value of end-point with lowest y-value xIncr: 1 / slope Edge mazY currentX xIncr Horizontal edges will not be used!!!
38
General Polygons – Algorithm
line = 0 While (line < height ) Add edges to Active Edge List from Sorted Edge Table starting at line Remove edges that end at line Fill pixels Increment x-values on edges in Active Edge List Increment line
39
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List F E A
40
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG A maxY currentX xIncr
41
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List? F E A
42
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List F E FG ED A maxY currentX xIncr
43
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List F E FG ED A maxY Is it correct? currentX xIncr
44
General Polygons – Example
C Sorted Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
45
General Polygons – Algorithm
line = 0 While (line < height ) Add edges to Active Edge List from Sorted Edge Table starting at line Remove edges that end at line Fill pixels Increment x-values on edges in Active Edge List Increment line
46
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
47
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY ? ? ? currentX ? xIncr
48
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
49
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
50
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
51
General Polygons – Algorithm
line = 0 While (line < height ) Add edges to Active Edge List from Active Edge Table starting at line Remove edges that end at line Fill pixels Increment x-values on edges in Active Edge List Increment scan line
52
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB AG FG ED A maxY currentX xIncr
53
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED A maxY currentX xIncr
54
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED A maxY currentX xIncr
55
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED A maxY currentX xIncr
56
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED A maxY currentX xIncr
57
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED CD A maxY currentX xIncr
58
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB ED CD A maxY currentX xIncr
59
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB CD A maxY currentX xIncr
60
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB CD A maxY currentX xIncr
61
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB BC CD A maxY currentX xIncr
62
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E AB BC CD A maxY currentX xIncr
63
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E BC CD A maxY currentX xIncr
64
General Polygons – Example
C Active Edge Table B BC D CD G FG ED AB AG Active Edge List F E BC CD A maxY currentX xIncr
65
General Polygons – Algorithm
line = 0 While (line < height ) Add edges to Active Edge List from Sorted Edge Table starting at line Remove edges that end at line Fill pixels Increment x-values on edges in Active Edge List Increment scan line
66
Pixel Fill-in Which intervals should we draw?
67
Pixel Fill-in Which intervals should we draw?
- Odd intervals. But need to pay attention to scan lines passing through vertices.
68
General Polygons – Problems
Sliver polygons may not be drawn correctly No simple solution Long, thin triangles cause problems Want triangles with good aspect ratio (close to equilateral)
69
Curved Boundaries How to deal with curved boundaries?
70
Boundary Fill Start with drawn boundaries and an interior point
Recursively recolor outward from that point If neighbor different, then recolor and recur Everything within the boundary is changed to that color
71
Boundary Fill Start with drawn boundaries and an interior point
Recursively recolor outward from that point If neighbor different, then recolor and recur Everything within the boundary is changed to that color
72
Boundary Fill Work for inner and outer boundaries
73
Boundary Fill Start with drawn outline of a polygon and an interior point Recursively recolor outward from that point If neighbor different, then recolor and recur Everything within the boundary is changed to that color
74
Boundary Fill How to define a neigbhbor? 8-connected 4-connected
75
Boundary Fill – Example
Black pixels indicate boundary pixels
76
Boundary Fill – Example
77
Boundary Fill – Example
Continue checking neighboring pixels until reaching boundary pixels or previously visited pixels!
78
Boundary Fill – Example
Continue checking neighboring pixels until reaching boundary pixels or previously visited pixels!
79
Boundary Fill – Example
Continue checking neighboring pixels until reaching boundary pixels or previously visited pixels!
80
Boundary Fill – Example
Continue checking neighboring pixels until reaching boundary pixels or previously visited pixels!
81
Boundary Fill – Example
Continue checking neighboring pixels until reaching boundary pixels or previously visited pixels!
82
Boundary Fill
83
How to deal with this? Multiple color boundaries?
How to paint this region to yellow?
84
How to deal with this? Multiple color boundaries? Three keys:
a start pixel a target color a paint color How to paint this region to yellow?
85
Flood Fill Start with a point
Define color under that point as the interior color Recursively recolor outward from that point If neighbor is interior color, then recolor and recur Contiguous regions are recolored
86
Flood Fill – Example
87
Flood Fill – Example
88
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
89
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
90
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
91
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
92
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
93
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
94
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
95
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
96
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
97
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
98
Flood Fill – Example Continue setting the colors for neighboring pixels if it is interior pixels!
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.