Upload
shawn-merritt
View
270
Download
1
Tags:
Embed Size (px)
Citation preview
Objective
To be able to understand the procedures for displaying views a two dimensional picture on an output device
Two-Dimensional Viewing
Co-ordinate Systems. Cartesian – offsets along the x and y axis from (0.0) Polar – rotation around the angle . Graphic libraries mostly using Cartesian co-ordinates Any polar co-ordinates must be converted to
Cartesian co-ordinates Four Cartesian co-ordinates systems in computer
Graphics.1. Modeling co-ordinates2. World co-ordinates3. Normalized device co-ordinates4. Device co-ordinates
Modeling Coordinates
Also known as local coordinate.Ex: where individual object in a scene within
separate coordinate reference frames.Each object has an origin (0,0)So the part of the objects are placed with
reference to the object’s origin.In term of scale it is user defined, so,
coordinate values can be any size.
World Co-ordinates.
The world coordinate system describes the relative positions and orientations of every generated objects.
The scene has an origin (0,0).The object in the scene are placed with
reference to the scenes origin.World co-ordinate scale may be the same as
the modeling co-ordinate scale or it may be different.
However, the coordinates values can be any size (similar to MC)
Normalized Device Co-ordinates
Output devices have their own co-ordinates.Co-ordinates values:The x and y axis range from 0 to 1All the x and y co-ordinates are floating
point numbers in the range of 0 to 1This makes the system independent of the
various devices coordinates.This is handled internally by graphic system
without user awareness.
Device Co-ordinates
Specific co-ordinates used by a device.Pixels on a monitorPoints on a laser printer.mm on a plotter.
The transformation based on the individual device is handled by computer system without user concern.
Two-Dimensional Viewing
Example: Graphic program which draw an entire building by
an architect but we only interested on the ground floor
Map of sales for entire region but we only like to know from certain region of the country.
Two-Dimensional Viewing
When we interested to display certain portion of the drawing, enlarge the portion, windowing technique is used
Technique for not showing the part of the drawing which one is not interested is called clipping
An area on the device (ex. Screen) onto which the window will be mapped is called viewport.
Window defines what to be displayed.
A viewport defines where it is to be displayed.
Most of the time, windows and viewports are usually rectangles in standard position(i.e aligned with the x and y axes). In some application, others such as general polygon shape and circles are also available
However, other than rectangle will take longer time to process.
Viewing Transformation
Viewing transformation is the mapping of a part of a world-coordinate scene to device coordinates.
In 2D (two dimensional) viewing transformation is simply referred as the window-to-viewport transformation or the windowing transformation.
Mapping a window onto a viewport involves converting from one coordinate system to another.
If the window and viewport are in standard position, this just
involves translation and scaling.
if the window and/or viewport are not in standard, then extra transformation which is rotation is required.
Window-To-Viewport Coordinate Transformation
.
XWmax
YWmax
XWmin
YWmin
XVmaxXVmin
YVmax
YVminxw,yw
xv,yv
Window-To-Viewport Coordinate Transformation
xv - xvmin = xw - xwmin
xvmax - xvmin xwmax - xwmin
yv – yvmin = yw - ywmin
yvmax – yvmin ywmax - ywmin
From these two equations we derived
xv = xvmin + (xw – xwmin)sx
yv = yvmin + (yw – ywmin)sy
where the scaling factors are
sx = xvmax – xvmin sy = yvmax - yvmin
xwmax – xwmin ywmax – ywmin
Window-To-Viewport Coordinate Transformation
The sequence of transformations are:1. Perform a scaling transformation using a
fixed-point position of (xwmin,ywmin) that scales the window area to the size of the viewport.
2. Translate the scaled window area to the position of the viewport.
Window-To-Viewport Coordinate Transformation
Relative proportions of objects are maintained if the scaling factors are the same (sx = sy). Otherwise, world objects will be stretched or contracted in either x or y direction when displayed on output device.
How about character strings when map to viewport? maintains a constant character size (apply
when standard character fonts cannot be changed).
If character size can be changed, then windowed will be applied like other primitives.
For characters formed with line segments, the mapping to viewport is carried through sequence of line transformations .
Viewport-to-Normalized Device Coordinate Transformation
From normalized coordinates, object descriptions can be mapped to the various display devices
When mapping window-to-viewport transformation is
done to different devices from one normalized space, it is
called workstation transformation.
OpenGL 2D Viewing Functions
To transform from world coordinate to screen coordinates, the appropriate matrix mode must be chosen glMatrixMode (GL_PROJECTION); glLoadIdentity( );
To define a 2D clipping window, we use OpenGL Utility function: gluOrtho2D( xwmin, xwmax, ywmin, ywmax); This function also perform normalization (NDC)
OpenGL 2D Viewing Functions
To specify the viewport parameters in OpenGL, we use function
glViewport(xvmin, yvmin, vpWidth, vpHeight);
Clipping Operations
Procedures that identifies those portions of a picture that are either inside or outside a specified region of a space is referred to as clipping algorithm or clipping
The region against which an object is to clipped is called clip window
before after
Clipping Operation
Note: different graphic elements may require different clipping techniques. Character, need to include all or completely omit depending on whether or not its center lies within the window.
Clipping
Application of clipping include: Extracting part of defined scene for viewing. Identifying visible surfaces in three-dimensional views. Anti-aliasing line segments or object boundaries. Creating objects using solid-modeling procedures. Displaying a multiwindow environment. Drawing and painting operations that allow parts of
picture to be selected for copying, moving, erasing, or duplication.
Clipping
Clipping algorithm can be applied in both world coordinate and normalized device coordinates
In world coordinate: only the contents of the window interior are mapped
to device coordinates world coordinate clipping removes those primitives
outside the window from further consideration. Eliminating the unnecessary processing to transform
In normalized device coordinate: mapping is fully done from world to normalized
device. clipping will reduce calculations by allowing
concatenation of viewing and geometric transformation matrices.
Clipping Algorithms
Algorithms have been developed for clipping for the following primitives types:
1. Point Clipping.2. Line Clipping (straight-line segments)3. Area Clipping (polygons)4. Curve Clipping5. Text Clipping.
Point Clipping
Assuming clip window is standard rectangle position, point P-(x,y) will be save for display if its satisfied:
xwmin <= x <= xwmax
ywmin <= y <= ywmax
where the edges of the clip window (xwmin, xwmax, ywmin, ywmax) can be either the world coordinate window boundaries or viewport boundaries.
Line Clipping
Cohen-Sutherland Outcode Algorithm This algorithm quickly removes lines which
entirely to one side of the clipping where both endpoints above, below, right or left.
The advantage of the algorithm is, it uses bit operations for testing.
Cohen Sutherland
Bit convention 1 First bit y > ymax Second bit y < ymin Third bit x > xmax Fourth bit x < xmin
Bit convention 2 (1 through 4 from right to left) bit 1 : left bit 2 : right bit 3 : below bit 4 : above
Cohen Sutherland
Segment endpoints are each given 4-bit binary codes. The high order bit is set to 1 if the point above
window The next bit set to 1 if point is below window The third and fourth indicate right or left of window.
Testing result: 0000 if both endpoints are inside window. if the line segment lies entirely on one side of the
window, then both endpoints will have a 1 in the outcode bit position for that side.
How?: By taking AND operation. If NONZERO then line
segment may be rejected. Ex: AB and CD
Cohen Sutherland (Problem?)
Certain lines cannot be identified as completely inside or outside a clip window by doing AND test. Lines which completely outside the clip window can also produce AND 0000. So, process of discarding is required and intersection with boundary must be calculated (divide and conquer).
Difficulty is when a line crossed one or more of the lines which contain the clipping boundary. Ex: EF and DJ
Cohen Sutherland (Solution)
The point of intersection between the line segment and clipping lines may be used to break up the line segment.
Intersection points with a clipping boundary can be calculated using the slope-intercept form of the line equation.
Cohen Sutherland (Solution)
For a line with endpoint (x1,y1) to (x2,y2) Y coordinate of the intersection point with
vertical boundary is obtained with y = y1 + m(x-x1)
where x value is set either xwmin or xwmax and the slope of the line is m = (y2 – y1) / (x2 – x1)
X coordinate of the intersection point with horizontal boundary is calculated by
x = x1 + (y-y1)/m where y is set either to ywmin or to ywmax
Cohen Sutherland (Pseudocode)
Brief outline of the algorithm. First compute the outcodes for the two endpoints (p1
and p2). Enter the loop, check whether both outcodes are zero
Both zero, then enter segment in display list. If not both zero, perform the AND function. If nonzero,
reject the line. If zero, subdivide the line segment. Repeat the loop.
Liang Barsky Line Clipping
Parametric equation of a line segment (x1,y1) and (x2,y2)
x = x1 + u∆x y = y1 + u∆y
Where 0 <= u <=1 ∆x = x2 – x1 ∆y = y2 –y1
From point clipping, we have xwmin < = x <= xwmax Ywmin <= y <= ywmax
For line clipping, we derived xwmin < = x1 + u∆x <= xwmax ywmin <= y1 + u∆y <= ywmax
Liang-Barsky Line Clipping
Based on these four equations, the following rules are introduced
upk <= qk where k = 1 (left boundary)
2 (right boundary) 3 (bottom boundary) 4 (top boundary)
parameters p and q are defined as:p1 = - ∆x, q1 = x1
- xwminp2 = ∆x, q2 = xwmax –
x1p3= - ∆y, q3 = y1 - ywminp4= ∆y, q4 = ywmax – y1
Liang-Barsky Line Clipping
If any line that is parallel to one of the clipping boundaries, pk = 0. If qk < 0 then line is completely outside the boundary.
When pk < 0, the infinite extension of the line proceeds from the outside to the inside.
If pk > 0, the line proceeds from the inside to the outside.
For nonzero value of pk , we can calculate the value of u corresponds to the point where infinitely extended line intersects the extension boundary k as
u = qk/ pk u1(outside to inside) where its value ranges
from 0 to ru2 (inside to outside) where its value ranges
from 1 to r.If u1 > u2, the line is completely outside the clip
window and can be rejected
Liang Barsky vs Cohen Sutherland
Liang-Barsky algorithm is more efficient than Cohen since intersection calculations are reduced.
Liang-Barsky require only one division and window intersections of the line are computed only once.
Cohen required repeated calculation even though the line may be completely outside the clip window.
Nicholl-Lee-Nicholl Line Clipping (NLN)
Creating more regions around the clip window to avoid multiple clipping of an individual line segment.
Different to Cohen where Cohen require multiple calculation along the path of a single line before an intersection on the clipping rectangle is locate or completely rejected.
NLN eliminate extra calculations through new region created.
Nicholl-Lee-Nicholl Line Clipping (NLN)
Compared to Cohen and Liang; NLN perform fever comparisons and
division.The trade-off is that NLN can only be
applied two two-dimensional clipping only.
Nicholl-Lee-Nicholl Line Clipping (NLN)
How its work? First , need to determine the endpoints P1 and P2 from the
possible nine regions.
Out of nine, NLN only interested on three regions. If P1 lies in any one of other six regions, symmetry
transformation will be applied first. Then, is to determine where P2 is.
If P1 is inside and P2 is outside we will follow the first case where intersection with appropriate window boundary is carried out. Four regions of L,T,R,B which contains P2 are introduced.
If P1 and P2 are inside the clipping rectangle, we save the entire line.
Nicholl-Lee-Nicholl Line Clipping (NLN)
For example when P2 is in region LT if Slope P1PTR < Slope P1P2 < Slope P1PTL
Or (YT - Y1)/(XR – X1)) < (Y2 - Y1)/(X2 – X1) < (YT – Y1)/(XL – X1)
Ex: (6-4)/(6-1) < (7-4)/(6-1) < (6-4)/(2-1) 2/5 < 3/5 < 2
And we clip the entire line if (YT – Y1)(X2 – X1) < (XL – X1)(Y2 – Y1)
Nicholl-Lee-Nicholl Line Clipping (NLN)
From the parametric equations:x = x1 + (x2 – x1)uy = y1 + (y2 – y1)u
An intersection position on the left boundary is x = xL with u = (xL – x1)/(x2 – x1) will give coordinate y = y1 +((y2 – y1)/(x2 – x1)) * (xL – x1)
An intersection position on the top boundary has y = yT with u = (yT – y1)/(y2 – y1) will give coordinate x = x1 +((x2 – x1)/(y2 – y1)) * (yT – y1)
Line Clipping Using Nonrectangular Clip Windows
Some applications clip lines against arbitrarily shaped polygons.
Liang and Cyrus-Beck algorithm can be extended to convex polygon windows.
For concave polygon-clipping regions, we need to split the concave polygon into set of convex polygons.
Circles or other curved-boundary clipping regions are also possible but slower because intersection calculations involve nonlinear curve equation.
Line can be identified as completely inside if the distance for both endpoints of a line is less than or equal to the radius squared.
If not, then intersection calculation is performed.