1.24k likes | 1.27k Vues
CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai. Reminder. Homework #2 is due by Friday night Homework #3 will be posted on Friday night (2/8), due by 2/22. Review: Clipping Points.
E N D
Reminder • Homework #2 is due by Friday night • Homework #3 will be posted on Friday night (2/8), due by 2/22
Review: Clipping Points • Given a point (x, y) and clipping window (xmin, ymin), (xmax, ymax), determine if the point should be drawn (xmax,ymax) (x,y) xmin=<x<=xmax? (xmin,ymin) ymin=<y<=ymax?
Review Clipping • Simple line clipping algorithm - compute intersection points - clip the line segment between the outside point and intersection point • Cohen-Sutherland - region coding (9 regions, 4bits) - best used when trivial acceptance and rejection is possible for most lines • Liang-Barsky - computation of t-intersections is cheap (only one division) - computation of (x,y) clip points is only done once - algorithm doesn’t consider trivial accepts/rejects - best when many lines must be clipped
Clipping Polygons • Clipping polygons is more complex than clipping the individual lines • - Input: polygon
Clipping Polygons • Clipping polygons is more complex than clipping the individual lines • - Input: polygon • - Output: original polygon, new polygon, or nothing
Why Is Polygon Clipping Hard? • What happens to a triangle during clipping? - possible outcomes: triangle->triangle triangle->quad triangle->5-gon
Why Is Polygon Clipping Hard? What happens to a triangle during clipping? - possible outcomes: triangle->triangle triangle->quad triangle->5-gon How many sides a clipped triangle might have? 10
How Many Sides? • Seven
Why Is Clipping Hard? • A really tough case Concave polygon -> Multiple polygons
Why Is Clipping Hard? • A really tough case
Outline • Sutherland-Hodgman Clipping - convex polygons • Weiler-Atherton Algorithm - general polygons • Required readings - HB 8-8
Any idea? Clipping polygon edges? 15
Any idea? • Clipping polygon edges?
Any idea? Clipping polygon edges? 17
Any idea? Clipping polygon edges? 18
Any idea? • Clipping polygon edges? Unconnected set of lines!
Any idea? Clipping polygon edges? Wrong even with connected line segments! 20
Sutherland-Hodgman Clipping • Basic idea: similar to line clipping
Sutherland-Hodgman Clipping Basic idea: similar to line clipping - consider each edge of the view window individually - clip the polygon against the view window edge’s equation 22
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation
Sutherland-Hodgman Clipping • Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation - after doing all edges, the polygon is fully clipped
Sutherland-Hodgman Clipping • Input/output for algorithm: - input: list of polygon vertices in order {abcdef} a f b e d c
Sutherland-Hodgman Clipping • Input/output for algorithm: - input: list of polygon vertices in order - output: list of clipped polygon vertices consisting of old vertices (maybe) and new vertices (maybe)
Sutherland-Hodgman Clipping • Input/output for algorithm: - input: list of polygon vertices in order - output: list of clipped polygon vertices consisting of old vertices (maybe) and new vertices (maybe) - exactly what expect from the clipping operation against each edge!
Sutherland-Hodgman Clipping • Basic routine: - Go around polygon one vertex at a time - Current vertex has position E - Previous vertex had position S, and it has been added to the output if appropriate a f b e d {abcdef} c
Sutherland-Hodgman Clipping • Basic routine: - Go around polygon one vertex (i.e. polygon edge) at a time - Current vertex has position E - Previous vertex had position S, and it has been added to the output if appropriate a f b e d {abcdef} c
Sutherland-Hodgman Clipping Basic routine: - Go around polygon one vertex (i.e. polygon edge) at a time - Current vertex has position E - Previous vertex had position S, and it has been added to the output if appropriate a f b e d {abcdef} c Need to determine output vertices for each polygon line! 37
Sutherland-Hodgman Clipping • Polygon edge from S to E takes one of four cases: inside outside inside outside inside outside inside outside E S E S E S E S
Sutherland-Hodgman Clipping Polygon edge from S to E takes one of four cases: inside outside inside outside inside outside inside outside E S E S E S E S I outputE output E output I output no output 39
Sutherland-Hodgman Clipping • Four cases: • S inside plane and E inside plane • Add E to output • Note: S has already been added • S inside plane and E outside plane • Find intersection point I • Add I to output • S outside plane and E outside plane • Add nothing • S outside plane and E inside plane • Find intersection point I • Add I to output, followed by E
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm Input vertices after clipping against left edge after clipping against right edge after clipping against bottom edge after clipping all the window edges
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm b
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm
Out In Out In Out In Out In Output I,E No output Output E Output I Sutherland-Hodgman Algorithm