home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344b.lha / plplot_v2.6 / src / plgrid3.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-27  |  3.0 KB  |  104 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. extern PLINT pl3upv;
  8.  
  9. void plgrid3a(tick)
  10. PLFLT tick;
  11. {
  12.     PLFLT xmin, ymin, zmin, xmax, ymax, zmax, zscale;
  13.     PLFLT cxx, cxy, cyx, cyy, cyz;
  14.     PLINT u[3], v[3];
  15.     PLINT nsub, mode, prec;
  16.     PLFLT tp;
  17.  
  18.     gw3wc(&cxx,&cxy,&cyx,&cyy,&cyz);
  19.     gdom(&xmin,&xmax,&ymin,&ymax);
  20.     grange(&zscale,&zmin,&zmax);
  21.  
  22.     nsub = 0;
  23.     pldtik(zmin,zmax,&tick,&nsub,&mode,&prec);
  24.     tp = tick * floor(zmin/tick) + tick;
  25.  
  26.     pl3upv = 0;
  27.  
  28.     if (cxx >= 0.0 && cxy <= 0.0)  {
  29.         while ( tp <= zmax ) {
  30.             u[0] = wcpcx(w3wcx(xmin,ymax,tp));
  31.             v[0] = wcpcy(w3wcy(xmin,ymax,tp));
  32.             u[1] = wcpcx(w3wcx(xmax,ymax,tp));
  33.             v[1] = wcpcy(w3wcy(xmax,ymax,tp));
  34.             u[2] = wcpcx(w3wcx(xmax,ymin,tp));
  35.             v[2] = wcpcy(w3wcy(xmax,ymin,tp));
  36.             plnxtv(u,v,3,0);
  37.  
  38.             tp += tick;
  39.         }
  40.         u[0] = wcpcx(w3wcx(xmax,ymax,zmin));
  41.         v[0] = wcpcy(w3wcy(xmax,ymax,zmin));
  42.         u[1] = wcpcx(w3wcx(xmax,ymax,zmax));
  43.         v[1] = wcpcy(w3wcy(xmax,ymax,zmax));
  44.         plnxtv(u,v,2,0);
  45.     }
  46.     else if(cxx <= 0.0  && cxy <= 0.0)  {
  47.         while ( tp <= zmax ) {
  48.             u[0] = wcpcx(w3wcx(xmax,ymax,tp));
  49.             v[0] = wcpcy(w3wcy(xmax,ymax,tp));
  50.             u[1] = wcpcx(w3wcx(xmax,ymin,tp));
  51.             v[1] = wcpcy(w3wcy(xmax,ymin,tp));
  52.             u[2] = wcpcx(w3wcx(xmin,ymin,tp));
  53.             v[2] = wcpcy(w3wcy(xmin,ymin,tp));
  54.             plnxtv(u,v,3,0);
  55.  
  56.             tp += tick;
  57.         }
  58.         u[0] = wcpcx(w3wcx(xmax,ymin,zmin));
  59.         v[0] = wcpcy(w3wcy(xmax,ymin,zmin));
  60.         u[1] = wcpcx(w3wcx(xmax,ymin,zmax));
  61.         v[1] = wcpcy(w3wcy(xmax,ymin,zmax));
  62.         plnxtv(u,v,2,0);
  63.     }
  64.     else if(cxx <= 0.0  && cxy >= 0.0)  {
  65.         while ( tp <= zmax ) {
  66.             u[0] = wcpcx(w3wcx(xmax,ymin,tp));
  67.             v[0] = wcpcy(w3wcy(xmax,ymin,tp));
  68.             u[1] = wcpcx(w3wcx(xmin,ymin,tp));
  69.             v[1] = wcpcy(w3wcy(xmin,ymin,tp));
  70.             u[2] = wcpcx(w3wcx(xmin,ymax,tp));
  71.             v[2] = wcpcy(w3wcy(xmin,ymax,tp));
  72.             plnxtv(u,v,3,0);
  73.  
  74.             tp += tick;
  75.         }
  76.         u[0] = wcpcx(w3wcx(xmin,ymin,zmin));
  77.         v[0] = wcpcy(w3wcy(xmin,ymin,zmin));
  78.         u[1] = wcpcx(w3wcx(xmin,ymin,zmax));
  79.         v[1] = wcpcy(w3wcy(xmin,ymin,zmax));
  80.         plnxtv(u,v,2,0);
  81.     }
  82.     else if(cxx >= 0.0  && cxy >= 0.0)  {
  83.         while ( tp <= zmax ) {
  84.             u[0] = wcpcx(w3wcx(xmin,ymin,tp));
  85.             v[0] = wcpcy(w3wcy(xmin,ymin,tp));
  86.             u[1] = wcpcx(w3wcx(xmin,ymax,tp));
  87.             v[1] = wcpcy(w3wcy(xmin,ymax,tp));
  88.             u[2] = wcpcx(w3wcx(xmax,ymax,tp));
  89.             v[2] = wcpcy(w3wcy(xmax,ymax,tp));
  90.             plnxtv(u,v,3,0);
  91.  
  92.             tp += tick;
  93.         }
  94.         u[0] = wcpcx(w3wcx(xmin,ymax,zmin));
  95.         v[0] = wcpcy(w3wcy(xmin,ymax,zmin));
  96.         u[1] = wcpcx(w3wcx(xmin,ymax,zmax));
  97.         v[1] = wcpcy(w3wcy(xmin,ymax,zmax));
  98.         plnxtv(u,v,2,0);
  99.     }
  100.  
  101.     pl3upv = 1;
  102. }
  103.  
  104.