ftp.nice.ch/pub/next/unix/developer/plplot.3.0.s.tar.gz#/plplot/src/plbox3.c

This is plbox3.c in view mode; [Download] [Up]

/* Draws axes and axis labels for 3-d plots */

#include "plplot.h"

void plbox3(xopt,xlabel,xtick,nsubx,yopt,ylabel,ytick,nsuby,
            zopt,zlabel,ztick,nsubz)
char *xopt, *xlabel, *yopt, *ylabel, *zopt, *zlabel;
int nsubx, nsuby, nsubz;
double xtick, ytick, ztick;
{
      double dx,dy,tx,ty,ux,uy;
      double xmin,xmax,ymin,ymax,zmin,zmax,zscale;
      double cxx,cxy,cyx,cyy,cyz;
      int ln, level, font;
      int *zbflg, *zbcol;
      double *zbtck;

      glev(&level);
      if (level < 3) plexit("Please set up window before calling plbox3");

      gw3wc(&cxx,&cxy,&cyx,&cyy,&cyz);
      gdom(&xmin,&xmax,&ymin,&ymax);
      grange(&zscale,&zmin,&zmax);

      /* We have to wait until after the plot is drawn to draw back */
      /* grid so store this stuff. */
      gzback(&zbflg,&zbcol,&zbtck);
      *zbflg = stsearch(zopt,'d');
      if(*zbflg) {
         /* save tick spacing and color */
         *zbtck = ztick;
         gatt(&font,zbcol);
      }

      if (cxx >= 0.0 && cxy <= 0.0) {
        ln= stsearch(xopt,'n');
        tx=w3wcx(xmin,ymin,zmin);
        ty=w3wcy(xmin,ymin,zmin);
        ux=w3wcx(xmax,ymin,zmin);
        uy=w3wcy(xmax,ymin,zmin);
        plxybx(xopt,xlabel,tx,ty,ux,uy,xmin,xmax,xtick,nsubx,0);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,1,dx,dy,ux,uy,
             w3wcy(xmax,ymin,zmax),zmin,zmax,ztick,nsubz);
        tx=w3wcx(xmin,ymax,zmin);
        ty=w3wcy(xmin,ymax,zmin);
        ux=w3wcx(xmin,ymin,zmin);
        uy=w3wcy(xmin,ymin,zmin);
        plxybx(yopt,ylabel,tx,ty,ux,uy,ymax,ymin,ytick,nsuby,ln);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,0,dx,dy,tx,ty,
             w3wcy(xmin,ymax,zmax),zmin,zmax,ztick,nsubz);

      }
      else if (cxx <= 0.0 && cxy <= 0.0) {
        ln=stsearch(yopt,'n');
        tx=w3wcx(xmin,ymax,zmin);
        ty=w3wcy(xmin,ymax,zmin);
        ux=w3wcx(xmin,ymin,zmin);
        uy=w3wcy(xmin,ymin,zmin);
        plxybx(yopt,ylabel,tx,ty,ux,uy,ymax,ymin,ytick,nsuby,0);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,1,dx,dy,ux,uy,
             w3wcy(xmin,ymin,zmax),zmin,zmax,ztick,nsubz);
        tx=w3wcx(xmax,ymax,zmin);
        ty=w3wcy(xmax,ymax,zmin);
        ux=w3wcx(xmin,ymax,zmin);
        uy=w3wcy(xmin,ymax,zmin);
        plxybx(xopt,xlabel,tx,ty,ux,uy,xmax,xmin,xtick,nsubx,ln);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,0,dx,dy,tx,ty,
             w3wcy(xmax,ymax,zmax),zmin,zmax,ztick,nsubz);

      }
      else if (cxx <= 0.0 && cxy >= 0.0) {
        ln= stsearch(xopt,'n');
        tx=w3wcx(xmax,ymax,zmin);
        ty=w3wcy(xmax,ymax,zmin);
        ux=w3wcx(xmin,ymax,zmin);
        uy=w3wcy(xmin,ymax,zmin);
        plxybx(xopt,xlabel,tx,ty,ux,uy,xmax,xmin,xtick,nsubx,0);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,1,dx,dy,ux,uy,
             w3wcy(xmin,ymax,zmax),zmin,zmax,ztick,nsubz);
        tx=w3wcx(xmax,ymin,zmin);
        ty=w3wcy(xmax,ymin,zmin);
        ux=w3wcx(xmax,ymax,zmin);
        uy=w3wcy(xmax,ymax,zmin);
        plxybx(yopt,ylabel,tx,ty,ux,uy,ymin,ymax,ytick,nsuby,ln);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,0,dx,dy,tx,ty,
             w3wcy(xmax,ymin,zmax),zmin,zmax,ztick,nsubz);
      }
      else if (cxx >= 0.0 && cxy >= 0.0) {
        ln= stsearch(yopt,'n');
        tx=w3wcx(xmax,ymin,zmin);
        ty=w3wcy(xmax,ymin,zmin);
        ux=w3wcx(xmax,ymax,zmin);
        uy=w3wcy(xmax,ymax,zmin);
        plxybx(yopt,ylabel,tx,ty,ux,uy,ymin,ymax,ytick,nsuby,0);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,1,dx,dy,ux,uy,
             w3wcy(xmax,ymax,zmax),zmin,zmax,ztick,nsubz);
        tx=w3wcx(xmin,ymin,zmin);
        ty=w3wcy(xmin,ymin,zmin);
        ux=w3wcx(xmax,ymin,zmin);
        uy=w3wcy(xmax,ymin,zmin);
        plxybx(xopt,xlabel,tx,ty,ux,uy,xmin,xmax,xtick,nsubx,ln);
        dx = ux - tx;
        dy = uy - ty;
        plzbx(zopt,zlabel,0,dx,dy,tx,ty,
             w3wcy(xmin,ymin,zmax),zmin,zmax,ztick,nsubz);

      }
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Marcel Waldvogel and Netfuture.ch.