Two-Dimensional Viewing

1 / 27

Two-Dimensional Viewing - PowerPoint PPT Presentation

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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

PowerPoint Slideshow about 'Two-Dimensional Viewing' - burton

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Two-Dimensional Viewing

Jehee Lee

Seoul National University

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

1001

1000

1010

Clipping window

0001

0010

0000

0101

0100

0110

Cohen-Sutherland Line Clipping
• One of the earliest algorithms for fast line clipping
• Identify trivial accepts and rejects by bit operations

< Region code for each endpoint >

above

below

right

left

Bit 4 3 2 1

1001

1000

1010

Clipping window

0001

0010

0000

0101

0100

0110

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)

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
• Solve for the value of t at the intersection of P0P1 with the edge
• Ni·[P(t) - PEi] = 0 and P(t) = P0 + t(P1 - P0)
• letting D = (P1 - P0),
• Where
• Ni 0
• D  0 (that is, P0 P1)
• Ni· D  0 (if not, no intersection)
Cyrus-Beck Line Clipping
• Given a line segment P0P1, 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(x2.y2)

tR

tT

P(x1,y1)

tL

tB

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

Clipping Window

Bounding box of polygon fill area

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