1.18k likes | 1.19k Views
CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai. Reminder. Required readings: HB 6-5 to 6-7 Homework#1 deadline is passed Homework #2 will be posted tonight, due by 9/29. Review: Clipping Points.
E N D
Reminder • Required readings: HB 6-5 to 6-7 • Homework#1 deadline is passed • Homework #2 will be posted tonight, due by 9/29
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, quad, or else?
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?
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 6-8
Any idea? • Clipping polygon edges?
Any idea? • Clipping polygon edges? Unconnected set of lines!
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
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 • Java applet: click here.
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 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 • 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
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
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
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