Download presentation
Presentation is loading. Please wait.
Published byAngela Kelley Modified over 9 years ago
1
Two-Dimensional Viewing Jehee Lee Seoul National University
2
Viewing Pipeline
3
Two-Dimensional Viewing Two dimensional viewing transformation –From world coordinate scene description to device (screen) coordinates
4
Normalization and Viewport Transformation World coordinate clipping window Normalization square: usually [-1,1]x[-1,1] Device coordinate viewport
5
OpenGL 2D Viewing Projection Mode –glMatrixMode(GL_PROJECTION); GLU clipping-window function –gluOrtho2D(xwmin,xwmax,ywmin,ywmax); –Normalized to [-1,1]x[-1,1] OpenGL viewport function –glViewport(xvmin,xvmax,yvmin,yvmax); –Rarely used because of GLUT device independent library
6
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
7
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
8
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
9
Cohen-Sutherland Line Clipping One of the earliest algorithms for fast line clipping Identify trivial accepts and rejects by bit operations above belowrightleft Bit 4 3 2 1 0000 10001001 0001 010101000110 0010 1010 Clipping window
10
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) 0000 10001001 0001 010101000110 0010 1010 Clipping window
11
Cohen-Sutherland Line Clipping Fixed order testing and clipping cause needless clipping (external intersection)
12
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
13
Cyrus-Beck Line Clipping Use a parametric line equation Reduce the number of calculating intersections by exploiting the parametric form Notations –E i : edge of the clipping window –N i : outward normal of E i –An arbitrary point P Ei on edge E i
14
Cyrus-Beck Line Clipping
15
Solve for the value of t at the intersection of P 0 P 1 with the edge –N i · [P(t) - P Ei ] = 0 and P(t) = P 0 + t(P 1 - P 0 ) –letting D = (P 1 - P 0 ), –Where N i 0 D 0 (that is, P 0 P 1 ) N i · D 0 (if not, no intersection)
16
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
17
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
18
Liang-Barsky Line Clipping Liang-Barsky optimized Cyrus-Beck for upright rectangular clip windows P(x 1,y 1 ) Q(x 2.y 2 ) tBtB tTtT tRtR tLtL
19
Liang-Barsky Line Clipping T B RL tTtT tBtB
20
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
21
Polygon Fill-Area Clipping Polyline vs polygon fill-area Early rejection is useful Clipping Window Bounding box of polygon fill area
22
Sutherland-Hodgman Polygon Clipping Clip against 4 infinite clip edges in succession
23
Sutherland-Hodgman Polygon Clipping Accept a series of vertices (polygon) and outputs another series of vertices Four possible outputs
24
Sutherland-Hodgman Polygon Clipping The algorithm correctly clips convex polygons, but may display extraneous lines for concave polygons
25
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
26
Weiler-Atherton Polygon Clipping Polygon clipping using nonrectangular polygon clip windows
27
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.