Provided by: geomview_1.9.4-4.1_amd64 bug

NAME

       clip - Clip an OOGL object against planes or other surfaces

SYNOPSIS

       clip [-v axisx,y,z,...]
           [-g value-or-point] [-l value-or-point]
           [-s nstrips[,fraction]] [-e]
           [-sph centerx,y,z,...] [-cyl centerx,y,z,...]
           [ooglfile]

DESCRIPTION

       Clip,  adapted  from Daeron Meyer's ginsu module, allows clipping an OOGL object against planes, spheres,
       or cylinders from the UNIX command line.  Its input can come from a file or  standard  input;  output  is
       written to standard output.

       Options  specify a function of space position; the output is the portion of the object where the function
       is greater or less than some given value, or the portion lying between  two  values.   Alternatively,  an
       object  can  be  sliced  into  equally-spaced  strips.  Objects may be of any dimension (but see the BUGS
       section).

       Options are:

       -g value-or-point

       -l value-or-point
              Select the portion of the object where the function is greater than (-g) or  less  than  (-l)  the
              given  value.   If  both  are  specified,  the result is the portion of the object satisfying both
              conditions.

              If, rather than a single number, the argument to -l or -g is a point (a series of x,y,z,... values
              separated  by  commas,  with  no embedded blanks), then the clipping surface is one chosen to pass
              through that point.

       -v axisx,y,z,...
              Specifies a direction in space.   For  planar  clipping  (the  default),  it's  the  plane  normal
              direction;  the  clipping function is the inner product between the direction vector and the point
              on the object.  For cylindrical clipping, -v specifies the direction of the cylinder's  axis;  the
              clipping function is the distance from the axis.

       -sph centerx,y,z,...
              Clip  against spheres centered on x,y,z,....  The clipping function is the distance from the given
              center.  Coordinates must be separated by commas without intervening spaces.

       -cyl centerx,y,z,...
              Clip against cylinders with an axis passing through centerx,y,z,..., with axis direction given  by
              the -v option.  The clipping function is the distance from the axis.

       -s nslices[,fraction]
              Clip  an  object  into  a  series  of  nslices  ribbons spanning its entire extent -- the range of
              function-values over the object.  Part of each ribbon is omitted; the fraction, default  .5,  sets
              the  width  of  the  visible part of a ribbon compared to the ribbon period.  There are a total of
              (nslices+fraction-1) ribbon periods across the object, so e.g.  -s 2,.5  slices  the  object  into
              equal  thirds,  omitting  the  middle  third.   The  output OOGL object is a LIST of OFFs, one per
              ribbon.

       -e     Don't emit a clipped OOGL object, just print two numbers, listing the minimum and maximum function
              values  for  the object.  If -g or -l clipping options are specified, the object is clipped before
              determining the function range.  If none of the object remains, clip prints "0 0".

EXAMPLES

       To extract the portion of an object lying below the x+y+z=1 plane:

         clip -l 1  -v 1,1,1  file.oogl  > portion.oogl

       To extract the portion of an object lying in the positive octant and below the x+y+z=1 plane, we can pipe
       multiple instances of clip together to find the intersection of several half-spaces:

         clip -g 0  -v 1,0,0 file.oogl | \
            clip -g 0 -v 0,1,0 | \
            clip -g 0 -v 0,0,1 | \
            clip -l 1 -v 1,1,1 > portion.oogl

       To  find  the region lying between two surfaces (either above one and below the other, or below the first
       and above the second), say the planes 2x + y -.5z = 1 and y + 2z = 0:

            echo "{ LIST"
            clip -v 2,1,-.5 -g 1  file.oogl | clip -v 0,1,2 -l 0
            clip -v 2,1,-.5 -l 1  file.oogl | clip -v 0,1,2 -g 0
            echo "}"

       We use pipelines to compute intersections, and a LIST to form their union.

SEE ALSO

       ginsu(1)

BUGS

       Uses anytooff(1) to convert input data to OFF format internally; this can  lose  information.   The  only
       arbitrary-dimensional form accepted at present is nOFF, not nSKEL or nMESH.  However the four-dimensional
       4OFF, 4QUAD, 4MESH, 4VECT, etc. formats should work.

       Clip really only clips edges.  If a curved clipping surface cuts  an  edge  twice,  or  removes  only  an
       interior  portion  of  some polygon, clip misses it entirely.  Clipping against a curved surface yields a
       straight edge (a chord of the ideal curved edge segment).  This latter failing might be fixed someday.