Learning Center
Plans & pricing Sign in
Sign Out

Introduction to Computer Graphics - Download Now PowerPoint


									CGMB214: Introduction to
  Computer Graphics

         CHAPTER 7
        2D VIEWING

 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-
   Four Cartesian co-ordinates systems in computer Graphics.
    1.   Modeling co-ordinates
    2.   World co-ordinates
    3.   Normalized device co-ordinates
    4.   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
   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 1
 All the x and y co-ordinates are floating point
  numbers in the range of 0 to 1
 This 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 monitor
  Points 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
       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.
          Viewing Transformation

                   window     1                 window

                              0             1

      world                       Normalised device
Window-To-Viewport Coordinate Transformation

        Window-to-Viewport transformation
Window-To-Viewport Coordinate Transformation

 YWmin                   YVmin

     XWmin       XWmax           XVmin         XVmax
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

 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.
The Viewing Pipeline
          OpenGL 2D Viewing Functions

 To transform from world coordinate to screen
 coordinates, the appropriate matrix mode must be
    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

 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.
 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 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
              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 Clipping
    5. Text Clipping.
                   Point Clipping

 Assuming clip window is standard rectangle
 position, point P-(x,y) will be save for display if its
            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

     I                     E
  1001 B        1000           G 1010
                 L                 H
           S                   M
A 0001                             0010
               0000                           F
                 T                        J

                       D           0110
  0101     C   0100
                 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
    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
 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
 Intersection points with a clipping boundary can be
  calculated using the slope-intercept form of the line
           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
        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 - xwmin
            p2 = ∆x,               q2 = xwmax – x1
            p3= - ∆y,              q3 = y1 - ywmin
            p4= ∆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
   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 r
   u2 (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
  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
   If P1 and P2 are inside the clipping rectangle, we save the entire
Nicholl-Lee-Nicholl Line Clipping (NLN)

             (2,6)         LT     (6,6)

   P1                                   LR

           (2,2)           LB   (6,2)
Nicholl-Lee-Nicholl Line Clipping (NLN)

 For example when P2 is in region LT if
  Slope P1PTR < Slope P1P2 < Slope P1PTL
   (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)u
             y = 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
   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.

To top