yorick banner

Home

Manual

Packages

Global Index

Keywords

Quick Reference


/*
   PL3D.I
   Viewing transforms and other aids for 3D plotting.

   $Id$
 */
/*    Copyright (c) 1996.  The Regents of the University of California.
                    All rights reserved.  */

/* General overview:

   (1) Viewing transform machinery.  Arguably the simplest model
       is the CAD/CAM notion that the object you see is oriented
       as you see it in the current picture.  You can then move
       it left, right, up, down, or toward or away from you,
       or you can rotate it about any of the three axes (horizontal,
       vertical, or out of the screen).  The xyz coordinates of the
       object remains unchanged throughout all of this, but this

       object coordinate system changes relative to the fixed
       xyz of the viewer, in which x is always to the right, y is
       up, and z is directed out of the screen.  Initially, the
       two coordinate systems coincide.

       rot3, xangle,yangle,zangle
         Rotate the object about viewer's x-axis by xangle, then
	 about viewer's y-axis by yangle, then about viewer's
	 z-axis by zangle
       mov3, xchange,ychange,zchange
         Move the object by the specified amounts.

       setz3, zcamera
         The "camera" is located at (0,0,zcamera) in the viewer's

	 coordinate system, looking in the minus-z direction.
	 Initially, zcamera is very large, and the magnification
	 factor is correspondingly large, giving an isometric view.
	 Decreasing zcamera makes the perspective more extreme.
	 If parts of the object are behind the camera, strange things
	 may happen.

       undo3
       undo3, n

         Undo the last N (default 1) viewpoint commands (rot3, mov3,

	 or setz3).  Up to 100 viewpoint changes are remembered.
       viewpoint= save3()
       ...
       restore3, viewpoint
         The current viewpoint transformation can be saved and later
	 restored.

       gnomon, on_off

         Toggle the gnomon (a simple display showing the orientation
	 of the xyz axes of the object).
 */

/* ------------------------------------------------------------------------ */


func rot3 (xa,ya,za)
/* DOCUMENT rot3, xa,ya,za

     rotate the current 3D plot by XA about viewer's x-axis,
     YA about viewer's y-axis, and ZA about viewer's z-axis.

   SEE ALSO: orient3, mov3, aim3, setz3, undo3, save3, restore3, light3
 */
{
  if (is_void(xa)) xa= 0.;
  if (is_void(ya)) ya= 0.;
  if (is_void(za)) za= 0.;
  x= [1.,0.,0.];
  y= [0.,1.,0.];
  z= [0.,0.,1.];
  _rot3, za, x, y;
  _rot3, ya, z, x;
  _rot3, xa, y, z;

  _setrot3, [x,y,z](,+)*_getrot3()(+,);
}


func _rot3 (a, &x, &y)
{
  ca= cos(a);
  sa= sin(a);
  a= x;
  x=  ca*a + sa*y;
  y= -sa*a + ca*y;
}


func mov3 (xa,ya,za)
/* DOCUMENT mov3, xa,ya,za

     move the current 3D plot by XA along viewer's x-axis,
     YA along viewer's y-axis, and ZA along viewer's z-axis.

   SEE ALSO: rot3, orient3, setz3, undo3, save3, restore3, light3
 */
{
  if (is_void(xa)) xa= 0.;
  if (is_void(ya)) ya= 0.;
  if (is_void(za)) za= 0.;

  _setorg3, _getorg3() - _getrot3()(+,)*[xa,ya,za](+);
}


func aim3 (xa,ya,za)
/* DOCUMENT aim3, xa,ya,za

     move the current 3D plot to put the point (XA,YA,ZA) in object
     coordinates at the point (0,0,0) -- the aim point -- in the
     viewer's coordinates.  If any of XA, YA, or ZA is nil, it defaults
     to zero.

   SEE ALSO: mov3, rot3, orient3, setz3, undo3, save3, restore3, light3
 */
{
  if (is_void(xa)) xa= 0.;
  if (is_void(ya)) ya= 0.;
  if (is_void(za)) za= 0.;
  _setorg3, [xa,ya,za];
}


func setz3 (zc)
/* DOCUMENT setz3, zc
     Set the camera position to z=ZC (x=y=0) in the viewer's coordinate
     system.  If ZC is nil, set the camera to infinity (default).

   SEE ALSO: rot3, orient3, undo3, save3, restore3, light3
 */
{
  if (!is_void(zc)) {

    if (dimsof(zc)(1)) error, "camera position must be scalar";
    zc= double(zc);
  }
  _setzc3, zc;
}


func orient3 (phi, theta)
/* DOCUMENT orient3, phi, theta
         or orient3, phi
         or orient3, , theta
         or orient3
     Set the "orientation" of the object to (PHI,THETA).  "Orientations"
     are a subset of the possible rotation matrices in which the z-axis
     of the object appears vertical on the screen (that is, the object
     z-axis projects onto the viewer y-axis).  The THETA angle is the
     angle from the viewer y-axis to the object z-axis, positive if
     the object z-axis is tilted toward you (toward viewer +z).  PHI is
     zero when the object x-axis coincides with the viewer x-axis.  If

     neither PHI nor THETA is specified, PHI defaults to -pi/4 and

     THETA defaults to pi/6.  If only one of PHI or THETA is specified,

     the other remains unchanged, unless the current THETA is near pi/2,

     in which case THETA returns to pi/6, or unless the current
     orientation does not have a vertical z-axis, in which case the
     unspecified value returns to its default.


     Unlike rot3, orient3 is not a cumulative operation.


   SEE ALSO: rot3, mov3, aim3, save3, restore3, light3, limit3
 */
{

  if (is_void(theta) && is_void(phi)) {
    theta= _orient3_theta;
    phi= _orient3_phi;

  } else if (is_void(theta) || is_void(phi)) {

    z= _getrot3()(,+)*[0.,0.,1.](+);
    if (abs(z(1))>1.e-6) {
      /* object z-axis not aligned with viewer y-axis */

      if (is_void(theta)) theta= _orient3_theta;
      else phi= _orient3_phi;
    } else if (is_void(theta)) {

      if (abs(z(2))<1.e-6) theta= _orient3_theta;
      else theta= atan(z(3),z(2));
    } else /*if (is_void(phi))*/ {
      y= [0.,z(3),-z(2)];  /* in object xy-plane */

      x= _getrot3()(,+)*[1.,0.,0.](+);
      phi= atan(y(+)*x(+), x(1));
    }
  }
  x= [1.,0.,0.];
  y= [0.,1.,0.];
  z= [0.,0.,1.];
  _rot3, theta, y, z;
  _rot3, phi, z, x;
  _setrot3, [x,-z,y];
}


/* unless user has supplied alternative defaults, set orient3 defaults */

if (is_void(_orient3_theta)) _orient3_theta= pi/6;

if (is_void(_orient3_phi)) _orient3_phi= -pi/4;


func limit3 (xn,xx,yn,yx,zn,zx,aspect=)

/* DOCUMENT limit3, xmin,xmax, ymin,ymax

         or limit3, xmin,xmax, ymin,ymax, zmin,zmax

     Set the 3D axis limits for use with the cage.

     Use keyword aspect=[ax,ay,az] to set the aspect ratios of the
     cage to ax:ay:az -- that is, the ratios of the lengths of the
     cage axes will become ax:ay:az.

   SEE ALSO: cage3, range3, plwf (include plwf.i), orient3
 */
{
  local limits;

  eq_nocopy, limits, _car(_draw3_list, _draw3_nll+1);
  if (dimsof(xn)(1)>1) {

    if (dimsof(xn)(1)!=2 || anyof(dimsof(xn)(2:3)!=3))

      error, "bad limit3 arguments";
    _setscl3, xn;
    return limits;
  }

  void= [[is_void(xn),is_void(xx)],[is_void(yn),is_void(yx)],
	 [is_void(zn),is_void(zx)]];

  if (nallof(void) || !is_void(aspect)) {

    if (is_void(limits)) {
      if (anyof(void))

	error, "no xyz limits currently set -- you must set all six";
      lims= array([0.,1.,1.],3);
    } else {
      lims= limits;
    }
    if (!void(1,1)) lims(1,1)= xn;
    if (!void(2,1)) lims(2,1)= xx;
    if (!void(1,2)) lims(1,2)= yn;
    if (!void(2,2)) lims(2,2)= yx;
    if (!void(1,3)) lims(1,3)= zn;
    if (!void(2,3)) lims(2,3)= zx;

    if (!is_void(aspect)) lims(3,)= aspect;
    _setscl3, lims;
  }
  return limits;
}


func range3 (zn,zx,aspect=)
/* DOCUMENT range3, zmin,zmax

     Set the 3D axis z limits for use with the cage.

     Use keyword aspect=[ax,ay,az] to set the aspect ratios of the
     cage to ax:ay:az -- that is, the ratios of the lengths of the
     cage axes will become ax:ay:az.

   SEE ALSO: cage3, limit3, plwf (include plwf.i), orient3
 */
{

  return limit3(,,,,zn,zx,aspect=aspect);
}


func save3 (void)
/* DOCUMENT view= save3()
     Save the current 3D viewing transformation and lighting.

   SEE ALSO: restore3, rot3, mov3, aim3, light3
 */
{
  return _cpy(_draw3_list, _draw3_n);
}


func restore3 (view)
/* DOCUMENT restore3, view
     Restore a previously saved 3D viewing transformation and lighting.
     If VIEW is nil, rotate object to viewer's coordinate system.

   SEE ALSO: restore3, rot3, mov3, aim3, light3
 */
{

  if (!is_void(view)) view= _cpy(view);

  else view= _cat(_cpy(_draw3_view), _cpy(_light3_list));

  _cdr, view, _draw3_n, _cdr(_draw3_list, _draw3_n, []);
  _draw3_list= view;

  _undo3_set, restore3, old;
}

/* set default viewing direction if user hasn't already done so */

if (is_void(_draw3_view)) _draw3_view= _lst(unit(3), [0.,0.,0.], []);
_draw3_nv= _len(_draw3_view);

/* ------------------------------------------------------------------------ */


func light3 (ambient=,diffuse=,specular=,spower=,sdir=)
/* DOCUMENT light3, ambient=a_level,
                    diffuse=d_level,
		    specular=s_level,
		    spower=n,
		    sdir=xyz
     Sets lighting properties for 3D shading effects.
     A surface will be shaded according to its to its orientation
     relative to the viewing direction.

     The ambient level A_LEVEL is a light level (arbitrary units)
     that is added to every surface independent of its orientation.

     The diffuse level D_LEVEL is a light level which is proportional

     to cos(theta), where theta is the angle between the surface
     normal and the viewing direction, so that surfaces directly
     facing the viewer are bright, while surfaces viewed edge on are
     unlit (and surfaces facing away, if drawn, are shaded as if they
     faced the viewer).

     The specular level S_LEVEL is a light level proportional to a high

     power spower=N of 1+cos(alpha), where alpha is the angle between
     the specular reflection angle and the viewing direction.  The light
     source for the calculation of alpha lies in the direction XYZ (a

     3 element vector) in the viewer's coordinate system at infinite
     distance.  You can have ns light sources by making S_LEVEL, N, and
     XYZ (or any combination) be vectors of length ns (3-by-ns in the
     case of XYZ).  (See source code for specular_hook function

     definition if powers of 1+cos(alpha) aren't good enough for you.)

     With no arguments, return to the default lighting.

   EXAMPLES:

     light3, diffuse=.1, specular=1., sdir=[0,0,-1]
       (dramatic "tail lighting" effect)

     light3, diffuse=.5, specular=1., sdir=[1,.5,1]
       (classic "over your right shoulder" lighting)

     light3, ambient=.1,diffuse=.1,specular=1.,
             sdir=[[0,0,-1],[1,.5,1]],spower=[4,2]
       (two light sources combining previous effects)


   SEE ALSO: rot3, save3, restore3
 */
{

  old= _cpy(_cdr(_draw3_list,_draw3_nv),5);

  flags= 0;
  if (!is_void(ambient)) {

    if (dimsof(ambient)(1)) error, "ambient light level must be scalar";
    flags|= 1;

    _car, _draw3_list, _draw3_nv+1, double(ambient);
  }
  if (!is_void(diffuse)) {

    if (dimsof(diffuse)(1)) error, "diffuse light level must be scalar";
    flags|= 2;

    _car, _draw3_list, _draw3_nv+2, double(diffuse);
  }

  if (!is_void(specular)) flags|= 4;

  else specular= _car(_draw3_list, _draw3_nv+3);
  if (!is_void(spower)) flags|= 8;

  else spower= _car(_draw3_list, _draw3_nv+4);
  if (!is_void(sdir)) {
    dims= dimsof(sdir);
    if (dims(1)<1 || dims(2)!=3)

      error, "lighting direction must be 3 vector or 3-by-ns array"
    flags|= 16;
  } else {

    sdir= _car(_draw3_list, _draw3_nv+5);
  }
  if (flags&28) {

    if (is_void(dimsof(specular,spower,sdir(1,..))))

      error, "specular, spower, and sdir not conformable";

    if (flags&4) _car, _draw3_list, _draw3_nv+3, double(specular);

    if (flags&8) _car, _draw3_list, _draw3_nv+4, spower;

    if (flags&16) _car, _draw3_list, _draw3_nv+5, double(sdir);
  }

  if (!flags) {
    for (i=1 ; i<=5 ; ++i)

      _car, _draw3_list, _draw3_nv+i, _car(_light3_list,i);
  }


  _undo3_set, _light3, old;
}


func _light3 (arg)
{
  for (i=1 ; i<=5 ; ++i)

    _car, _draw3_list, _draw3_nv+i, _car(arg,i);
}

/* set default values if user hasn't already done so */

if (is_void(_light3_ambient)) _light3_ambient= 0.2;

if (is_void(_light3_diffuse)) _light3_diffuse= 1.0;

if (is_void(_light3_specular)) _light3_specular= 0.0;

if (is_void(_light3_spower)) _light3_spower= 2;

if (is_void(_light3_sdir)) _light3_sdir= [1.0, 0.5, 1.0]/sqrt(2.25);

_light3_list= _lst(_light3_ambient,_light3_diffuse,_light3_specular,
		   _light3_spower,_light3_sdir);


func get3_light (xyz, nxyz)

/* DOCUMENT get3_light(xyz, nxyz)
         or get3_light(xyz)

     return 3D lighting for polygons with vertices XYZ.  If NXYZ is

     specified, XYZ should be 3-by-sum(nxyz), with NXYZ being the

     list of numbers of vertices for each polygon (as for the plfp
     function).  If NXYZ is not specified, XYZ should be a quadrilateral

     mesh, 3-by-ni-by-nj (as for the plf function).  In the first case,

     the return value is numberof(NXYZ); in the second case, the
     return value is (ni-1)-by-(nj-1).

     The parameters of the lighting calculation are set by the
     light3 function.


   SEE ALSO: light3, set3_object, get3_normal, get3_centroid
 */
{
  list= _cdr(_draw3_list, _draw3_nv);
  ambient= _nxt(list);
  diffuse= _nxt(list);
  specular= _nxt(list);
  spower= _nxt(list);
  sdir= _nxt(list);

  /* get normal */

  normal= get3_normal(xyz, nxyz);

  /* get direction to viewer's eye (camera) */
  zc= _getzc3();
  if (is_void(zc)) {
    view= [0.,0.,1.];
  } else {

    view= [0.,0.,zc]-get3_centroid(xyz, nxyz);

    m1= abs(view(1,..),view(2,..),view(3,..))(-,..);
    m1= m1 + (m1==0.0);
    view/= m1;
  }

  /* do lighting calculation */
  nv= (normal*view)(sum,..);
  light= ambient + diffuse*abs(nv);
  if (anyof(specular)) {
    sdir= sdir(,*);

    sdir/= abs(sdir(1,),sdir(2,),sdir(3,))(-,);
    sv= sdir(+,*)*view(+,..);
    sn= sdir(+,*)*normal(+,..);

    m1= max(sn*nv(-,) - 0.5*sv + 0.5, 1.e-30);  /* max(1+cos(alpha),0) */
    if (is_func(specular_hook))

      m1= specular_hook(m1, abs(nv)(-,..), spower);
    else
      m1= m1^spower;
    light+= (specular(*)*m1)(sum,..);
  }

  return light;
}


func get3_normal (xyz, nxyz)

/* DOCUMENT get3_normal(xyz, nxyz)
         or get3_normal(xyz)

     return 3D normals for polygons with vertices XYZ.  If NXYZ is

     specified, XYZ should be 3-by-sum(nxyz), with NXYZ being the

     list of numbers of vertices for each polygon (as for the plfp
     function).  If NXYZ is not specified, XYZ should be a quadrilateral

     mesh, 3-by-ni-by-nj (as for the plf function).  In the first case,

     the return value is 3-by-numberof(NXYZ); in the second case, the
     return value is 3-by-(ni-1)-by-(nj-1).

     The normals are constructed from the cross product of the lines

     joining the midpoints of two edges which as nearly quarter the
     polygon as possible (the medians for a quadrilateral).  No check
     is made that these not be parallel; the returned "normal" is
     [0,0,0] in that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, if the polygon vertices are not
     coplanar, that case.  Also, i