TwoDimensional Viewing Jehee Lee Seoul National University Viewing



























- Slides: 27
Two-Dimensional Viewing Jehee Lee Seoul National University
Viewing Pipeline
Two-Dimensional Viewing • Two dimensional viewing transformation – From world coordinate scene description to device (screen) coordinates
Normalization and Viewport Transformation • World coordinate clipping window • Normalization square: usually [-1, 1]x[-1, 1] • Device coordinate viewport
Open. GL 2 D Viewing • Projection Mode – gl. Matrix. Mode(GL_PROJECTION); • GLU clipping-window function – glu. Ortho 2 D(xwmin, xwmax, ywmin, ywmax); – Normalized to [-1, 1]x[-1, 1] • Open. GL viewport function – gl. Viewport(xvmin, xvmax, yvmin, yvmax); – Rarely used because of GLUT device independent library
Clipping • Remove portion of output primitives outside clipping window • Two approaches – Clip during scan conversion: Per-pixel bounds check – Clip analytically, then scan-convert the modified primitives
Two-Dimensional Clipping • Point clipping – trivial • Line clipping – Cohen-Sutherland – Cyrus-beck – Liang-Barsky • Fill-area clipping – Sutherland-Hodgeman – Weiler-Atherton • Curve clipping • Text clipping
Line Clipping • Basic calculations: – Is an endpoint inside or outside the clipping window? – Find the point of intersection, if any, between a line segment and an edge of the clipping window. üBoth endpoints inside: trivial accept üOne inside: find intersection and clip üBoth outside: either clip or reject
Cohen-Sutherland Line Clipping • One of the earliest algorithms for fast line clipping • Identify trivial accepts and rejects by bit operations 1001 1000 1010 < Region code for each endpoint > Clipping window 0001 0000 0010 above below Bit 4 0101 0100 0110 3 right left 2 1
Cohen-Sutherland Line Clipping • • Compute region codes for two endpoints If (both codes = 0000 ) trivially accepted If (bitwise AND of both codes 0000) trivially rejected Otherwise, divide line into two segments – test intersection edges in a fixed order. (e. g. , top-to-bottom, right-to-left) 1001 1000 1010 Clipping window 0001 0000 0010 0101 0100 0110
Cohen-Sutherland Line Clipping • Fixed order testing and clipping cause needless clipping (external intersection)
Cohen-Sutherland Line Clipping • This algorithm can be very efficient if it can accept and reject primitives trivially – Clip window is much larger than scene data • Most primitives are accepted trivially – Clip window is much smaller than scene data • Most primitives are rejected trivially • Good for hardware implementation
Cyrus-Beck Line Clipping • Use a parametric line equation • Reduce the number of calculating intersections by exploiting the parametric form • Notations – Ei : edge of the clipping window – Ni : outward normal of Ei – An arbitrary point PEi on edge Ei
Cyrus-Beck Line Clipping
Cyrus-Beck Line Clipping • Solve for the value of t at the intersection of P 0 P 1 with the edge – Ni · [P(t) - PEi] = 0 and P(t) = P 0 + t(P 1 - P 0) – letting D = (P 1 - P 0), – Where • Ni 0 • D 0 (that is, P 0 P 1) • Ni · D 0 (if not, no intersection)
Cyrus-Beck Line Clipping • Given a line segment P 0 P 1, find intersection points against four edges – Discard an intersection point if t [0, 1] – Label each intersection point either PE (potentially entering) or PL (potentially leaving) – Choose the smallest (PE, PL) pair that defines the clipped line
Cyrus-Beck Line Clipping • Cyrus-Beck is efficient when many line segments need to be clipped • Can be extended easily to convex polygon (rather than upright rectangle) clip windows
Liang-Barsky Line Clipping • Liang-Barsky optimized Cyrus-Beck for upright rectangular clip windows Q(x 2. y 2) t. T P(x 1, y 1) t. B t. L t. R
Liang-Barsky Line Clipping L R t. T t. B T B
General Clipping Window • Line clipping using nonrectangular polygon clip windows – Convex polygon • Cyrus-Beck algorithm can be readily extended – Concave polygon • Split the concave polygon into convex polygons Vector Method for Concave Splitting • Calculate edge-vector cross products in a counterclockwise order • If any z component turns out to be negative, the polygon is concave
Polygon Fill-Area Clipping • Polyline vs polygon fill-area • Early rejection is useful Bounding box of polygon fill area Clipping Window
Sutherland-Hodgman Polygon Clipping • Clip against 4 infinite clip edges in succession
Sutherland-Hodgman Polygon Clipping • Accept a series of vertices (polygon) and outputs another series of vertices • Four possible outputs
Sutherland-Hodgman Polygon Clipping • The algorithm correctly clips convex polygons, but may display extraneous lines for concave polygons
Weiler-Atherton Polygon Clipping • 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
Weiler-Atherton Polygon Clipping • Polygon clipping using nonrectangular polygon clip windows
Text Clipping • All-or-none text clipping – Using boundary box for the entire text • All-or-non character clipping – Using boundary box for each individual character • Character clipping – Vector font: Clip boundary polygons or curves – Bitmap font: Clip individual pixels



























