Successfully reported this slideshow.
Upcoming SlideShare
×

# Lect7 viewing in2d

2,477 views

Published on

created by Sudipta mandal

• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

### Lect7 viewing in2d

1. 1. Computer Graphics 4: Viewing In 2D Sudipta Mondal
2. 2. 2 of 30 Contents Windowing Concepts Clipping – Introduction – Brute Force – Cohen-Sutherland Clipping Algorithm Area Clipping – Sutherland-Hodgman Area Clipping Algorithm
3. 3. 3 of 30 Windowing I A scene is made up of a collection of objects specified in world coordinates World Coordinates
4. 4. 4 of 30 Windowing II When we display a scene only those objects within a particular window are displayed Window wymax wymin wxmin wxmax World Coordinates
5. 5. 5 of 30 Windowing III Because drawing things to a display takes time we clip everything outside the window Window wymax wymin wxmin wxmax World Coordinates
6. 6. 6 of 30 Clipping Avoid Drawing Parts of Primitives Outside Window – Window defines part of scene being viewed – Must draw geometric primitives only inside window World Coordinates
7. 7. 7 of 30 Viewport Transformation Transform 2D Geometric Primitives from Screen Coordinate System (Projection Coordinates) to Image Coordinate System (Device Coordinates) Screen Image Viewport
8. 8. 8 of 30 Window vs. Viewport Window – World-coordinate area selected for display – What is to be viewed Viewport – Area on the display device to which a window is mapped – Where it is to be displayed
9. 9. 9 of 30 Viewport Transformation Window-to-Viewport Mapping Window Viewport wy2 vy2 (wx, wy) (vx, vy) wy1 vy1 wx1 wx2 vx1 vx2 Screen Coordinates Image Coordinates vx = vx1 + (wx – wx1) * (vx2 – vx1) / (wx2 – wx1); vy = vy1 + (wy – wy1) * (vy2 – vy1) / (wy2 – wy1);
10. 10. 10 of 30
11. 11. 11 of 30 Clipping For the image below consider which lines and points should be kept and which ones should be clipped P4 Window P2 wymax P6 P3 P1 P7 P5 P9 P8 wymin P10 wxmin wxmax
12. 12. 12 of 30 Point Clipping Easy - a point (x,y) is not clipped if: wxmin ≤ x ≤ wxmax AND wymin ≤ y ≤ wymax otherwise it is clipped P4 Clipped Clipped Window P2 wymax Clipped P5 P1 P7 Points Within the Window are Not Clipped P9 P8 wymin Clipped P10 wxmin wxmax
13. 13. 13 of 30 Line Clipping Harder - examine the end-points of each line to see if they are in the window or not Situation Solution Example Both end-points inside Don’t clip the window One end-point inside the window, one Must clip outside Both end-points Don’t know! outside the window
14. 14. 14 of 30 Brute Force Line Clipping Brute force line clipping can be performed as follows: – Don’t clip lines with both end-points within the window – For lines with one end- point inside the window and one end-point outside, calculate the intersection point (using the equation of the line) and clip from this point out
15. 15. 15 of 30 Brute Force Line Clipping (cont…) – For lines with both end- points outside the window test the line for intersection with all of the window boundaries, and clip appropriately However, calculating line intersections is computationally expensive Because a scene can contain so many lines, the brute force approach to clipping is much too slow
16. 16. 16 of 30 Cohen-Sutherland Clipping Algorithm An efficient line clipping algorithm The key advantage of the algorithm is that it vastly reduces the number of line intersections that must be Dr. Ivan E. Sutherland co-developed the Cohen- calculated Sutherland clipping algorithm. Sutherland is a graphics giant and includes amongs t his Cohen is something of a mystery – can achievements the anybody find out who he was? invention of the head m o u n t e d d i s p l a y.
17. 17. 17 of 30 Cohen-Sutherland: World Division World space is divided into regions based on the window boundaries – Each region has a unique four bit region code – Region codes indicate the position of the regions with respect to the window 1001 1000 1010 3 2 1 0 0000 above below right left 0001 0010 Window Region Code Legend 0101 0100 0110
18. 18. 18 of 30 Cohen-Sutherland: Labelling Every end-point is labelled with the appropriate region code P11 [1010] P4 [1000] Window wymax P6 [0000] P3 [0001] P5 [0000] P12 [0010] P7 [0001] P9 [0000] P8 [0010] wymin P10 [0100] P13 [0101] P14 [0110] wxmin wxmax
19. 19. 19 of 30 Cohen-Sutherland: Lines In The Window Lines completely contained within the window boundaries have region code [0000] for both end-points so are not clipped P11 [1010] P4 [1000] Window wymax P6 [0000] P3 [0001] P5 [0000] P12 [0010] P7 [0001] P9 [0000] P8 [0010] wymin P10 [0100] P13 [0101] P14 [0110] wxmin wxmax
20. 20. 20 of Cohen-Sutherland: Lines Outside The 30 Window Any lines with a common set bit in the region codes of both end-points can be clipped – The AND operation can efficiently check this P11 [1010] P4 [1000] Window wymax P6 [0000] P3 [0001] P5 [0000] P12 [0010] P7 [0001] P9 [0000] P8 [0010] wymin P10 [0100] P13 [0101] P14 [0110] wxmin wxmax
21. 21. 21 of 30 Cohen-Sutherland: Other Lines Lines that cannot be identified as completely inside or outside the window may or may not cross the window interior These lines are processed as follows: – Compare an end-point outside the window to a boundary (choose any order in which to consider boundaries e.g. left, right, bottom, top) and determine how much can be discarded – If the remainder of the line is entirely inside or outside the window, retain it or clip it respectively
22. 22. 22 of 30 Cohen-Sutherland: Other Lines (cont…) – Otherwise, compare the remainder of the line against the other window boundaries – Continue until the line is either discarded or a segment inside the window is found We can use the region codes to determine which window boundaries should be considered for intersection – To check if a line crosses a particular boundary we compare the appropriate bits in the region codes of its end-points – If one of these is a 1 and the other is a 0 then the line crosses the boundary
23. 23. 23 of 30 Cohen-Sutherland Examples Consider the line P9 to P10 below – Start at P10 Window wymax – From the region codes of the two end-points we know the line doesn’t P [0000] 9 wymin cross the left or right P ’ [0000] 10 boundary P [0100] 10 wxmin wxmax – Calculate the intersection of the line with the bottom boundary to generate point P10’ – The line P9 to P10’ is completely inside the window so is retained
24. 24. 24 of 30 Cohen-Sutherland Examples (cont…) Consider the line P3 to P4 below – Start at P4 P ’ [1000] P [1000] 4 4 Window – From the region codes wymax of the two end-points P [0001] 3 we know the line crosses the left wymin boundary so calculate the intersection point to generate P4’ wxmin wxmax – The line P3 to P4’ is completely outside the window so is clipped
25. 25. 25 of 30 Cohen-Sutherland Examples (cont…) Consider the line P7 to P8 below – Start at P7 Window – From the two region wymax codes of the two end-points we know P7 [0001] P7’ [0000] P8 [0010] the line crosses the P8’ [0000] wymin left boundary so calculate the intersection point to wxmin wxmax generate P7’
26. 26. 26 of 30 Cohen-Sutherland Examples (cont…) Consider the line P7’ to P8 – Start at P8 Window – Calculate the wymax intersection with the right boundary to P7 [0001] P7’ [0000] P8 [0010] generate P8’ P8’ [0000] wymin – P7’ to P8’ is inside the window so is retained wxmin wxmax
27. 27. 27 of 30 Cohen-Sutherland Worked Example Window wymax wymin wxmin wxmax
28. 28. 28 of 30 Calculating Line Intersections Intersection points with the window boundaries are calculated using the line- equation parameters – Consider a line with the end-points (x1, y1) and (x2, y2) – The y-coordinate of an intersection with a vertical window boundary can be calculated using: y = y1 + m (xboundary - x1) where xboundary can be set to either wxmin or wxmax
29. 29. 29 of 30 Calculating Line Intersections (cont…) – The x-coordinate of an intersection with a horizontal window boundary can be calculated using: x = x1 + (yboundary - y1) / m where yboundary can be set to either wymin or wymax – m is the slope of the line in question and can be calculated as m = (y2 - y1) / (x2 - x1)
30. 30. 30 of 30 Area Clipping Similarly to lines, areas must be clipped to a window boundary Consideration must be taken as to which portions of the area must be clipped
31. 31. 31 of Sutherland-Hodgman Area Clipping 30 Algorithm Sutherland A technique for clipping areas turns up developed by Sutherland & again. This time with Hodgman Gary Hodgman with whom he worked at Put simply the polygon is clipped the first ever by comparing it against each graphics company Evans & Sutherland boundary in turn Original Area Clip Left Clip Right Clip Top Clip Bottom
32. 32. 32 of Sutherland-Hodgman Area Clipping 30 Algorithm (cont…) To clip an area against an individual boundary: – Consider each vertex in turn against the boundary. – Vertices inside the boundary are saved for clipping against the next boundary. – Vertices outside the boundary are clipped.
33. 33. 33 of Sutherland-Hodgman Area Clipping 30 Algorithm (cont…) To clip an area against an individual boundary: – If we proceed from a point inside the boundary to one outside, the intersection of the line with the boundary is saved. – If we cross from the outside to the inside intersection point and the vertex are saved.
34. 34. 34 of 30 Sutherland-Hodgman Example Each example S shows the point being processed (P) P I S and the previous P point (S) Save Point P Save Point I Saved points define P S area clipped to the I P boundary in question S No Points Saved Save Points I & P
35. 35. 35 of 30 Other Area Clipping Concerns Clipping concave areas can be a little more tricky as often superfluous lines must be removed Window Window Window Window Clipping curves requires more work – For circles we must find the two intersection points on the window boundary
36. 36. 36 of 30 Weiler-Atherton Polygon Clipping – Here, the vertex-processing procedures for window boundaries are modified so that concave polygons are displayed correctly. – The basic idea in this algorithm is that instead of always proceeding around the polygon edges as vertices are processed, we sometimes want to follow the window boundaries.
37. 37. 37 of 30 Weiler-Atherton Polygon Clipping – Which path we follow depends on the polygon-processing direction (clockwise or counterclockwise). – Whether the pair of polygon vertices currently being processed represents an outside-to-inside pair or an inside-to-outside pair.
38. 38. 38 of 30 Weiler-Atherton Polygon Clipping For clockwise processing of polygon vertices, we use the following rules: –For an outside-to-inside pair of vertices, follow the polygon boundary. –For an inside-to-outside pair of vertices, follow the window boundary in a clockwise direction.
39. 39. 39 of 30 Weiler-Atherton Polygon Clipping
40. 40. 40 of 30 Summary Objects within a scene must be clipped to display the scene in a window Because there can be so many objects clipping must be extremely efficient The Cohen-Sutherland algorithm can be used for line clipping The Sutherland-Hodgman algorithm can be used for area clipping
41. 41. 41 of 30
42. 42. 42 of 30 Cohen-Sutherland Clipping Algorithm VI Let’s consider the lines remaining below P11 [1010] P4 [1000] Window wymax P6 [0000] P3 [0001] P5 [0000] P12 [0010] P7 [0001] P9 [0000] P8 [0010] wymin P10 [0100] P13 [0101] P14 [0110] wxmin wxmax
43. 43. 43 of 30 Cohen-Sutherland Clipping Algorithm Easy - a point (x,y) is not clipped if: wxmin ≤ x ≤ wxmax AND wymin ≤ y ≤ wymax otherwise it is clipped P4 Clipped Clipped Window P2 wymax Clipped P5 P1 P7 Points Within the Window are Not Clipped P9 P8 wymin Clipped P10 wxmin wxmax
44. 44. 44 of 30 Clipping Point clipping is easy: – For point (x,y) the point is not clipped if wxmin ≤ x ≤Pwxmax AND wymin ≤ y ≤ wymax 4 Window P2 wymax P6 P3 P1 P7 P5 P9 P8 wymin P10 wxmin wxmax Before Clipping