Title: TwoDimensional Viewing
1Two-Dimensional Viewing
Chapter 6
2The Viewing Pipeline
- Window
- A world-coordinate area selected for display.
- defines what is to be viewed
- Viewport
- An area on a display device to which a window is
mapped. - defines where it is to be displayed
- Viewing transformation
- The mapping of a part of a world-coordinate scene
to device coordinates. - A window could be a rectangle to have any
orientation.
3Two-Dimensional Viewing
4The Viewing Pipeline
5The Viewing Pipeline
6Viewing Effects
- Zooming effects
- Successively mapping different-sized windows on a
fixed-sized viewports. - Panning effects
- Moving a fixed-sized window across the various
objects in a scene. - Device independent
- Viewports are typically defined within the unit
square (normalized coordinates)
7Viewing Coordinate Reference Frame
- The reference frame for specifying the
world-coordinate window. - Viewing-coordinate origin P0 (x0, y0)
- View up vector V Define the viewing yv direction
8Window-to-Viewport Coordinate Transformation
9Window-to-Viewport Coordinate Transformation
10Workstation transformtion
11Clipping Operations
- Clipping
- Identify those portions of a picture that are
either inside or outside of a specified region of
space. - Clip window
- The region against which an object is to be
clipped. - The shape of clip window
- Applications of clipping
- World-coordinate clipping
12Clipping Operations
- Viewport clipping
- It can reduce calculations by allowing
concatenation of viewing and geometric
transformation matrices. - Types of clipping
- Point clipping
- Line clipping
- Area (Polygon) clipping
- Curve clipping
- Text clipping
- Point clipping (Rectangular clip window)
13Line Clipping
- Possible relationships between line positions and
a standard rectangular clipping region
Before clipping
after clipping
14Line Clipping
- Possible relationships
- Completely inside the clipping window
- Completely outside the window
- Partially inside the window
- Parametric representation of a line
- x x1 u(x2 - x1)
- y y1 u(y2 - y1)
- The value of u for an intersection with a
rectangle boundary edge - Outside the range 0 to 1
- Within the range from 0 to 1
15Cohen-Sutherland Line Clipping
- Region code
- A four-digit binary code assigned to every line
endpoint in a picture. - Numbering the bit positions in the region code as
1 through 4 from right to left.
16Cohen-Sutherland Line Clipping
- Bit values in the region code
- Determined by comparing endpoint coordinates to
the clip boundaries - A value of 1 in any bit position The point is in
that relative position. - Determined by the following steps
- Calculate differences between endpoint
coordinates and clipping boundaries. - Use the resultant sign bit of each difference
calculation to set the corresponding bit value.
17Cohen-Sutherland Line Clipping
- The possible relationships
- Completely contained within the window
- 0000 for both endpoints.
- Completely outside the window
- Logical and the region codes of both endpoints,
its result is not 0000. - Partially
18Liang-Barsky Line Clipping
- Rewrite the line parametric equation as follows
-
- Point-clipping conditions
- Each of these four inequalities can be expressed
as
19Liang-Barsky Line Clipping
- Parameters p and q are defined as
20Liang-Barsky Line Clipping
- pk 0, parallel to one of the clipping boundary
- qk lt 0, outside the boundary
- qk gt 0, inside the parallel clipping boundary
- pk lt 0, the line proceeds from outside to the
inside - pk gt 0, the line proceeds from inside to outside
21Liang-Barsky Line Clipping
22Liang-Barsky Line Clipping
- Parameters u1 and u2 that define that part of the
line lies within the clip rectangle - The value of u1 From outside to inside (pk lt 0)
-
- The value of u2 From inside to outside (pk gt 0)
-
- If u1 gt u2, the line is completely outside the
clip window.
23Liang-Barsky Line Clipping
24Nicholl-Lee-Nicholl Line Clipping
- Compared to C-S and L-B algorithms
- NLN algorithm performs fewer comparisons and
divisions. - NLN can only be applied to 2D clipping.
- The NLN algorithm
- Clip a line with endpoints P1 and P2
- First determine the position of P1 for the nine
possible regions. - Only three regions need be considered
- The other regions using a symmetry transformation
- Next determine the position of P2 relative to
P1.
25Nicholl-Lee-Nicholl Line Clipping
26Nicholl-Lee-Nicholl Line Clipping
27Nicholl-Lee-Nicholl Line Clipping
28Nicholl-Lee-Nicholl Line Clipping
- To determine the region in which P2 is located
- Compare the slope of the line to the slopes of
the boundaries of the clip region. - Example P1 is left of the clipping rectangle, P2
is in region LT.
29Nonrectangular Clip Windows
- Algorithms based on parametric line equations can
be extended - Liang-Barsky method
- Modify the algorithm to include the parametric
equations for the boundaries of the clip region - Concave polygon-clipping regions
- Split into a set of convex polygons
- Apply parametric clipping procedures
- Circle or other curved-boundary clipping regions
- Lines can be clipped against the bounding
rectangle
30Splitting Concave Polygons
- Identify a concave polygon
- Calculating the cross product of successive edge
vectors. - If the z component of some cross product is
positive while others have a negative, it is
concave.
31Splitting Concave Polygons
- Vector method
- Calculate the edge-vector cross product in a
counterclockwise order. - If any z component turns out to be negative
- The polygon is concave.
- Split it along the line of the first edge vector
in the cross-product pair.
32Splitting Concave Polygons
- Rotational method
- Proceeding counterclockwise around the polygon
edges. - Translate each polygon vertex Vk to the
coordinate origin. - Rotate in a clockwise direction so that the next
vertex Vk1 is on the x axis. - If the next vertex, Vk2, is below the x axis,
the polygon is concave. - Split the polygon along the x axis.
33Splitting Concave Polygons
34Polygon Clipping
35Sutherland-Hodgeman Polygon Clipping
- Processing the polygon boundary as a whole
against each window edge - Processing all polygon vertices against each clip
rectangle boundary in turn
36Sutherland-Hodgeman Polygon Clipping
- Pass each pair of adjacent polygon vertices to a
window boundary clipper - There are four cases
37Sutherland-Hodgeman Polygon Clipping
- Intermediate output vertex list
- Once all vertices have been processed for one
clip window boundary, it is generated. - The output list of vertices is clipped against
the next window boundary. - It can be eliminated by a pipeline of clipping
routine. - Convex polygons are correctly clipped.
- If the clipped polygon is concave
- Split the concave polygon
38Sutherland-Hodgeman Polygon Clipping
v3
v2
v1
39Weiler-Atherton Polygon Clipping
- Developed as a method for identifying visible
surfaces - It can be applied with arbitrary polygon-clipping
region. - Not always proceeding around polygon edges
- Sometimes follows the window boundaries
- For clockwise processing of polygon vertices
- 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 clockwise direction.
40Weiler-Atherton Polygon Clipping
41Other Clipping
- Curve clipping
- Use bounding rectangle to test for overlap with a
rectangular clip window. - Text clipping
- All-or-none string-clipping
- All-or-none character-clipping
- Clip the components of individual characters
42Exterior Clipping
- Save the outside region
- Applications
- Multiple window systems
- The design of page layouts in advertising or
publishing - Adding labels or design patterns to a picture
- Procedures for clipping objects to the interior
of concave polygon windows
43Exterior Clipping