Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai

Similar presentations


Presentation on theme: "CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai"— Presentation transcript:

1 CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai

2 Reminder Required readings: HB 6-5 to 6-7
Homework#1 deadline is passed Homework #2 will be posted tonight, due by 9/29

3 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?

4 Review: Clipping Lines

5 Review: Clipping Lines

6 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

7 Clipping Polygons Clipping polygons is more complex than clipping the individual lines - Input: polygon

8 Clipping Polygons Clipping polygons is more complex than clipping the individual lines - Input: polygon - Output: original polygon, new polygon, or nothing

9 Why Is Polygon Clipping Hard?
What happens to a triangle during clipping? - possible outcomes: triangle->triangle triangle->quad triangle->5-gon

10 Why Is Polygon Clipping Hard?
What happens to a triangle during clipping? - possible outcomes: triangle, quad, or else?

11 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?

12 How Many Sides? Seven

13 Why Is Clipping Hard? A really tough case
Concave polygon -> Multiple polygons

14 Why Is Clipping Hard? A really tough case

15 Outline Sutherland-Hodgman Clipping - convex polygons
Weiler-Atherton Algorithm - general polygons Required readings - HB 6-8

16 Any idea? Clipping polygon edges?

17 Any idea? Clipping polygon edges? Unconnected set of lines!

18 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

19 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

20 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

21 Sutherland-Hodgman Clipping
Basic idea: - 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

23 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

24 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

25 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

26 Sutherland-Hodgman Clipping
Basic idea: - consider each edge of the view window individually - clip the polygon against the view window edge’s equation

27 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

28 Sutherland-Hodgman Clipping
Java applet: click here.

29 Sutherland-Hodgman Clipping
Input/output for algorithm: - input: list of polygon vertices in order {abcdef} a f b e d c

30 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)

31 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!

32 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

33 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

34 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 output E output E output I output no output

35 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 Add I to output, followed by E

36 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

37 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

38 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

39 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

40 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

41 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

42 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E b

43 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

44 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

45 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

46 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

47 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

48 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

49 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

50 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

51 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

52 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

53 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

54 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

55 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

56 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

57 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

58 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

59 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

60 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

61 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

62 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

63 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

64 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

65 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

66 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

67 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

68 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

69 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

70 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

71 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

72 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

73 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

74 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

75 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

76 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

77 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

78 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E

79 Sutherland-Hodgman Algorithm
Out In No output Output E Output I Output I,E Possible error for non-convex polygons

80 Sutherland-Hodgman Algorithm
Easy to pipeline for parallel processing Polygon from one boundary does not have to be complete before next boundary starts Leads to substantial performance gains

81 Weiler-Atherton Algorithm
General polygon vs. polygon clipping Handles non-convex shapes Not as efficient as Sutherland-Hodgman Not easy to parallelize

82 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

83 Weiler-Atherton Algorithm

84 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

85 Weiler-Atherton Algorithm

86 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

87 Weiler-Atherton Algorithm

88 Weiler-Atherton Algorithm

89 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

90 Weiler-Atherton Algorithm

91 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

92 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

93 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

94 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

95 Weiler-Atherton Algorithm

96 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

97 Weiler-Atherton Algorithm

98 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

99 Weiler-Atherton Algorithm

100 Weiler-Atherton Algorithm

101 Weiler-Atherton Algorithm

102 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

103 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

104 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

105 Weiler-Atherton Algorithm

106 Weiler-Atherton Algorithm

107 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

108 Weiler-Atherton Algorithm

109 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

110 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

111 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

112 Weiler-Atherton Algorithm

113 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

114 Weiler-Atherton Algorithm

115 Weiler-Atherton Algorithm
Process the edges of the polygon fill area in a counterclockwise order until an inside-outside pair of vertices is encountered Follow the window boundaries in a counterclockwise direction from the exit-intersection point to another intersection point with the polygon - previously processed? - yes, go to the next step - no, continue processing polygon until a previously processed vertex is encountered Form the vertex list for this section of the clipped fill area Return to the exit-intersection point and continue processing the polygon edges in a counterclockwise order

116 Weiler-Atherton Algorithm

117 Weiler-Atherton Algorithm

118 Next Lecture 2D transformations y y x x y x


Download ppt "CSCE 441 Computer Graphics: Clipping Polygons Jinxiang Chai"

Similar presentations


Ads by Google