Previous: clppg3 Up: ../plot79_c.html Next: clppi


CLPPH

       SUBROUTINE  CLPPH (P1,P2,NORMAL,NPLANE,MOVED1,MOVED2,REJECT,
      X                   ALPHA1,ALPHA2)
 C$    (4-Dimensional Polyhedron Clip)
 C$    Clip  a   line  segment   defined  by   its  endpoints   in
 C$    4-dimensional   homogeneous   coordinates   to   a   convex
 C$    polyhedron defined by  a series  of planes  in space.   The
 C$    arguments are:
 C$
 C$    P1(*)..........(X,Y,Z,H) coordinates of first point.
 C$    P2(*)..........(X,Y,Z,H) coordinates of second point.
 C$    NORMAL(4,*)....REAL  array   containing   the   homogeneous
 C$                   surface normals of  the planes defining  the
 C$                   polyhedron.  These must point to the visible
 C$                   side of the plane.
 C$    NPLANE.........Number of clipping planes.
 C$    MOVED1.........LOGICAL value set .TRUE. if point 1 is moved.
 C$    MOVED2.........LOGICAL value set .TRUE. if point 2 is moved.
 C$    REJECT.........LOGICAL value set .TRUE.  if the segment  is
 C$                   rejected (i.e. invisible).   If the line  is
 C$                   rejected,  ALPHA1   and   ALPHA2   will   be
 C$                   unchanged on return.
 C$    ALPHA1.........Parameter alpha for the  first point in  the
 C$                   parametric line representation  (1-alpha)*P1
 C$                   + alpha*P2.
 C$    ALPHA2.........Parameter alpha for the second point.
 C$
 C$    The normal  vectors  need  not be  unit  vectors.   If  the
 C$    equation defining a plane is AX + BY + CZ + D = 0, then the
 C$    homogeneous normal vector is  simply (A,B,C,D).  To  ensure
 C$    that  the  normal  points  to  the  visible  side,  it   is
 C$    sufficient to choose its sign such that the dot product  of
 C$    the normal with the homogeneous coordinates of any point on
 C$    the visible side  is positive.  As  an example, the  planes
 C$    defining a box  with X  in (-2,3), Y  in (-4,5),  and Z  in
 C$    (-6,7) are as follows:
 C$
 C$             ( A  B  C  D)
 C$    LEFT   = ( 1, 0, 0, 2)
 C$    RIGHT  = (-1, 0, 0, 3)
 C$    BOTTOM = ( 0, 1, 0, 4)
 C$    TOP    = ( 0,-1, 0, 5)
 C$    NEAR   = ( 0, 0, 1, 6)
 C$    FAR    = ( 0, 0,-1, 7)
 C$
 C$    The far plane is defined by the equation 0X + 0Y - Z + 7  =
 C$    0, or Z = 7 (assuming a left-handed coordinate system as is
 C$    usually  the  case  in   computer  graphics).   The   point
 C$    (0,0,0,1) is inside the box,  and its dot product with  the
 C$    far clipping plane normal  is 0*0 +  0*0 - 0*1  + 1*7 =  7,
 C$    which is positive and thus verifies that the normal  points
 C$    to the visible side.
 C$
 C$    Author: John Halleck, University of Utah Computing Center,
 C$            Salt Lake City, Utah 84112, USA
 C$    (03-APR-82)