Computer Graphics

advertisement
Computer Graphics
Inf4/MSc
Computer Graphics
Lecture 7
Scanline algorithm and polygon clipping
Taku Komura
1
Computer Graphics
Inf4/MSc
Today’s topics
• Scanline algorithm
• Clipping
Computer Graphics
Inf4/MSc
Scanline algorithm
• Computing the barycentric coordinates for
all the pixels inside the bounding box can be
costly
• We can try to scan only the pixels inside the
polygon
Computer Graphics
Inf4/MSc
Scanline algorithm
For each scan line:
1. Find the intersections of the scan
line with all edges of the polygon.
2 Sort the intersections by increasing
x coordinate.
3 Fill in all pixels between pairs of
intersections.
Can also deal with concave polygons
Computer Graphics
Inf4/MSc
Span extrema
• Only turn on pixels whose centers are
interior to the polygon:
– Otherwise will intrude other adjacent polygons
• round up values on the left edge of a span,
round down on the right edge
midpoint algorithm
interior
Computer Graphics
Inf4/MSc
Edge Coherence
• Computing the intersections between scan lines and
edges can be costly
• Use a method similar to the midpoint algorithm
• y = mx + b, x = (y – b) / m
• At y = s, xs = (s – b ) / m
At y = s + 1, xs+1 = (s+1 - b) / m = xs + 1 / m
• Incremental calculation: xs+1 = xs + 1 / m
Inf4/MSc
Pseudo code of computing the left
1 x x
span extrema (m > 1)

Computer Graphics
max
min
ymax  ymin
m
int num erator xmax  xmin
int denom enato
r  ymax  ymin
int increm ent denom enato
r
for ( y  ymin ; y  ymax ; y   ){
WriteP ixel( x,y);
increm ent  num erator;
if (increm ent  denom enat
or) {
/ * Overflow* /
x  ;
increm ent -  denom enat
or;
}
}
Computer Graphics
Inf4/MSc
Active Edge Table
• A table of edges that are currently used to fill the polygon
• Scan lines are processed in increasing Y order.
• Polygon edges are sorted according to their minimum Y.
• When the current scan line reaches the lower endpoint of
an edge it becomes active.
• When the current scan line moves above the upper
endpoint, the edge becomes inactive.
Computer Graphics
Inf4/MSc
Active Edge Table
•Active edges are sorted according to increasing X.
•Filling in pixels between left most edge intersection
and stops at the second.
•Restarts at the third intersection and stops at the fourth.
Computer Graphics
Polygon fill rules
(to ensure consistency)
Inf4/MSc
• Horizontal edges: Do not include in edge table
• Vertices: If local max or min, then count
twice, else count once.
• If pixel is on edge, only draw left / bottom
edges
Computer Graphics
Inf4/MSc
Today’s topics
• Scanline algorithm
• Clipping
Computer Graphics
Inf4/MSc
Clipping
• We need to clip objects outside the canonical
view volume
• Clipping lines (Cohen-Sutherland algorithm)
• Clipping polygons (Sutherland-Hodgman
algorithm)
Computer Graphics
Inf4/MSc
Cohen-Sutherland algorithm
While (true) {
1. Check if the line segment is trivial
accept/reject
2. Clip the edge and shorten
}
Computer Graphics
Inf4/MSc
What is a trivial accept / reject?
• Trivial acceptance
All line vertices lie inside box  accept.
Computer Graphics
Inf4/MSc
What is a trivial accept / reject?
All line vertices lie outside and on same side  reject.
Computer Graphics
Inf4/MSc
Cohen-Sutherland 2D outcodes
– 4-bit code called: Outcode
– First bit : above top of window, y > ymax
– Second bit : below bottom, y < ymin
– Third bit : to right of right edge, x > xmax
– Fourth bit : to left of left edge, x < xmin
Computer Graphics
Inf4/MSc
Cohen-Sutherland 2D outcodes
1001
1000
1010
0001
0000
0010
0101
0100
0110
Computer Graphics
Inf4/MSc
Cohen-Sutherland 2D outcodes
1001
1000
0001
0000
0010
0101
0100
0110
1010
Both endpoint codes 0000, trivial acceptance, else:
Do logical AND of outcodes
Computer Graphics
Inf4/MSc
Cohen-Sutherland 2D outcodes
1001
1010
1000
1000
0001
0000
0001
0010
0000
0000
0101
0100
0110
Logical AND between codes for 2 endpoints,
Reject line if non-zero – trivial rejection.
Computer Graphics
Inf4/MSc
What about this one?
1001
1000
1010
0000
0010
0100
0110
0001
0101
Logical AND between codes for 2 endpoints,
Reject line if non-zero – trivial rejection.
Computer Graphics
Inf4/MSc
Line Intersection.
• Clip the line by edges of the rectangle
• Select a clip edge based on the outcode, split
and feed the new segment on the side of the
rectangle back into algorithm
• Need to perform 4 intersection checks for each
line.
Computer Graphics
Inf4/MSc
Polygon Clipping
• Sutherland-Hodgman’s algorithm
• Polygons are clipped at each edge of the
window while traversing the polygon
• Output : a list of vertices of the clipped polygon
Computer Graphics
Inf4/MSc
Sutherland-Hodgman’s algorithm
• The edges of the polygon are traversed
• The edges can be divided into four types
Inside Outside
Output
Vertex
Inside
Outside
Output
Intersection
Case 1
Case 2.
Inside Outside
Case 3
No
output.
Inside Outside
First
Output
Second
Output
Case 4
Computer Graphics
Inf4/MSc
Sutherland-Hodgman’s algorithm
• For each of the edges of the clipping rectangle
– For each edge of the polygon (connecting pi, pi+1)
• If case 1 add p+1 to the output
• If case 2 add interaction to output
• If case 4 add intersection and p+1 to output
Inside Outside
Output
Vertex
Case 1
Inside Outside
Output
Intersection
Case 2.
Inside Outside
Case 3
No
output.
Inside Outside
Second
Output
First
Output
Case 4
Computer Graphics
Inf4/MSc
Example
http://www.sunshine2k.de/stuff/Java/SutherlandHodgman/SutherlandHodgmanApplet.html
Computer Graphics
Inf4/MSc
References
• Scanline algorithm
Foley et al., Chapter 3.5, 3.6
• Clipping lines, polygons
– Foley et al. Chapter 3.12, 3.14
– http://www.cc.gatech.edu/grads/h/Haowei.Hsieh/Haowei.Hsieh/mm.html
26
Download