home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d3xx / d306 / rexxplplot.lha / RexxPlPlot / src / src.zoo / plgrid3.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-06  |  3.0 KB  |  98 lines

  1. /* Routine to draw a grid around the back side of the 3d plot */
  2. /* wih hidden line removal */
  3.  
  4. #include "plplot.h"
  5. #include <math.h>
  6.  
  7. void plgrid3(tick)
  8. float tick;
  9. {
  10.     float xmin, ymin, zmin, xmax, ymax, zmax, zscale;
  11.     float cxx, cxy, cyx, cyy, cyz;
  12.     int u[3], v[3];
  13.     int nsub, mode, prec;
  14.     float tp;
  15.     float ftick = tick;
  16.  
  17.     gw3wc(&cxx,&cxy,&cyx,&cyy,&cyz);
  18.     gdom(&xmin,&xmax,&ymin,&ymax);
  19.     grange(&zscale,&zmin,&zmax);
  20.  
  21.     nsub = 0;
  22.     pldtik(zmin,zmax,&ftick,&nsub,&mode,&prec);
  23.     tp = ftick * floor(zmin/ftick) + ftick;
  24.  
  25.     if (cxx >= 0.0 && cxy <= 0.0)  {
  26.         while ( tp <= zmax ) {
  27.             u[0] = wcpcx(w3wcx(xmin,ymax,tp));
  28.             v[0] = wcpcy(w3wcy(xmin,ymax,tp));
  29.             u[1] = wcpcx(w3wcx(xmax,ymax,tp));
  30.             v[1] = wcpcy(w3wcy(xmax,ymax,tp));
  31.             u[2] = wcpcx(w3wcx(xmax,ymin,tp));
  32.             v[2] = wcpcy(w3wcy(xmax,ymin,tp));
  33.             plnxtv(u,v,3,2);
  34.  
  35.             tp += ftick;
  36.         }
  37.         u[0] = wcpcx(w3wcx(xmax,ymax,zmin));
  38.         v[0] = wcpcy(w3wcy(xmax,ymax,zmin));
  39.         u[1] = wcpcx(w3wcx(xmax,ymax,zmax));
  40.         v[1] = wcpcy(w3wcy(xmax,ymax,zmax));
  41.         plnxtv(u,v,2,2);
  42.     }
  43.     else if(cxx <= 0.0  && cxy <= 0.0)  {
  44.         while ( tp <= zmax ) {
  45.             u[0] = wcpcx(w3wcx(xmax,ymax,tp));
  46.             v[0] = wcpcy(w3wcy(xmax,ymax,tp));
  47.             u[1] = wcpcx(w3wcx(xmax,ymin,tp));
  48.             v[1] = wcpcy(w3wcy(xmax,ymin,tp));
  49.             u[2] = wcpcx(w3wcx(xmin,ymin,tp));
  50.             v[2] = wcpcy(w3wcy(xmin,ymin,tp));
  51.             plnxtv(u,v,3,2);
  52.  
  53.             tp += ftick;
  54.         }
  55.         u[0] = wcpcx(w3wcx(xmax,ymin,zmin));
  56.         v[0] = wcpcy(w3wcy(xmax,ymin,zmin));
  57.         u[1] = wcpcx(w3wcx(xmax,ymin,zmax));
  58.         v[1] = wcpcy(w3wcy(xmax,ymin,zmax));
  59.         plnxtv(u,v,2,2);
  60.     }
  61.     else if(cxx <= 0.0  && cxy >= 0.0)  {
  62.         while ( tp <= zmax ) {
  63.             u[0] = wcpcx(w3wcx(xmax,ymin,tp));
  64.             v[0] = wcpcy(w3wcy(xmax,ymin,tp));
  65.             u[1] = wcpcx(w3wcx(xmin,ymin,tp));
  66.             v[1] = wcpcy(w3wcy(xmin,ymin,tp));
  67.             u[2] = wcpcx(w3wcx(xmin,ymax,tp));
  68.             v[2] = wcpcy(w3wcy(xmin,ymax,tp));
  69.             plnxtv(u,v,3,2);
  70.  
  71.             tp += ftick;
  72.         }
  73.         u[0] = wcpcx(w3wcx(xmin,ymin,zmin));
  74.         v[0] = wcpcy(w3wcy(xmin,ymin,zmin));
  75.         u[1] = wcpcx(w3wcx(xmin,ymin,zmax));
  76.         v[1] = wcpcy(w3wcy(xmin,ymin,zmax));
  77.         plnxtv(u,v,2,2);
  78.     }
  79.     else if(cxx >= 0.0  && cxy >= 0.0)  {
  80.         while ( tp <= zmax ) {
  81.             u[0] = wcpcx(w3wcx(xmin,ymin,tp));
  82.             v[0] = wcpcy(w3wcy(xmin,ymin,tp));
  83.             u[1] = wcpcx(w3wcx(xmin,ymax,tp));
  84.             v[1] = wcpcy(w3wcy(xmin,ymax,tp));
  85.             u[2] = wcpcx(w3wcx(xmax,ymax,tp));
  86.             v[2] = wcpcy(w3wcy(xmax,ymax,tp));
  87.             plnxtv(u,v,3,2);
  88.  
  89.             tp += ftick;
  90.         }
  91.         u[0] = wcpcx(w3wcx(xmin,ymax,zmin));
  92.         v[0] = wcpcy(w3wcy(xmin,ymax,zmin));
  93.         u[1] = wcpcx(w3wcx(xmin,ymax,zmax));
  94.         v[1] = wcpcy(w3wcy(xmin,ymax,zmax));
  95.         plnxtv(u,v,2,2);
  96.     }
  97. }
  98.