Provided by: libncarg-dev_6.6.2-10build2_amd64 bug

NAME

       PPPPAP - can be called to preprocess a polygon in such a way as to remove certain peculiarities that can
       cause minor cosmetic errors in the output from the routines that return trapezoids.

SYNOPSIS

       CALL PPPPAP (XCIP,YCIP,NCIP,NBTS)

C-BINDING SYNOPSIS

       #include <ncarg/ncargC.h>

       void c_ppppap(float *xcip, float *ycip, int ncip, int nbts)

DESCRIPTION

       XCIP        (an  input/output  array  of type REAL) is the X coordinate array for a polygon to be used as
                   input to one of the routines PPDITR, PPINTR, or PPUNTR.  PPPPAP will alter  the  contents  of
                   this array.

       YCIP        (an  input/output  array of type REAL) is the Y coordinate arrays for a polygon to be used as
                   input to one of the routines PPDITR, PPINTR, or PPUNTR.  PPPPAP will alter  the  contents  of
                   this array.

       NCIP        (an  input/output  variable  of  type  INTEGER)  is  the  number of points defining the input
                   polygon. PPPPAP may reduce the value of NCIP.

       NBTS        (an input expression of type INTEGER) is the number of significant bits to be  left  unzeroed
                   in  the  fractional  part of each coordinate. Generally, one would probably not want to use a
                   value less than 10 or 12. On a 32-bit machine on which reals have 24-bit fractions, 18 may be
                   a good choice; on a 64-bit machine with 48-bit fractions, larger values may be desirable.

C-BINDING DESCRIPTION

       The C-binding argument descriptions are the same as the FORTRAN argument descriptions.

USAGE

       The FORTRAN statement

         CALL PPPPAP (XCIP,YCIP,NCIP,NBTS)

       causes preprocessing of the X and Y coordinates of the points defining a polygon which is to be  used  as
       input  to  one  of  the  principal  POLYPACK  routines  that produce trapezoids. The object is to cure an
       annoying (but basically cosmetic) problem that sometimes occurs.

       The nature of the problem is as follows: Sometimes, when adjacent points have Y coordinates  that  differ
       only  very slightly, there will be, among the output trapezoids, degenerates, of essentially zero height,
       that stick out to the left or right from the body of the polygon of which each trapezoid is a part.  This
       happens  because,  in the calls to the user-defined trapezoid-processing routine URPT, the values of DXLE
       and DXRE become very large and the difference between the values of YCOT and YCOB becomes very small;  in
       URPT,  then,  to get the X coordinates at the ends of the top of the trapezoid, the very large values and
       the very small values are multiplied together and the result is highly inaccurate.

       What PPPPAP does is this: Each of the input coordinates is first modified by  zeroing  out  all  but  the
       first  NBTS bits of its fractional part; then, any point with the same coordinates as the preceding point
       is culled. This ensures that there are no adjacent points with X or Y  coordinates  that  are  so  nearly
       identical as to cause the observed problem, but has little real effect on the values of the coordinates.

       There  are  several  reasons why this was not done automatically: 1) Because it's a little time-consuming
       (zeroing the low-order bits in a way that doesn't violate the FORTRAN-77 standard is a bit difficult), it
       shouldn't be done if it doesn't have to be done, and the user may have reason to know  that  the  problem
       doesn't  arise.   2) The problem may arise in one of the polygons, but not the other (most likely, in the
       subject polygon, but not in the clip polygon).  3) The  user  knows  best  what  precision  needs  to  be
       maintained in the data.

EXAMPLES

       Use the ncargex command to see the following relevant examples: ppex01, tppack, c_ppex01.

ACCESS

       To  use PPPPAP or c_ppppap, load the NCAR Graphics libraries ncarg, ncarg_gks, and ncarg_c, preferably in
       that order.

SEE ALSO

       Online: polypack, ppdipo, ppditr, ppinpo, ppintr, ppplcl, ppunpo, ppuntr, ncarg_cbind.

       Hardcopy: None.

COPYRIGHT

       Copyright (C) 1987-2009
       University Corporation for Atmospheric Research
       The use of this Software is governed by a License Agreement.

UNIX                                               March 1995                                     PPPPAP(3NCARG)