home *** CD-ROM | disk | FTP | other *** search
- /* Draws axes and axis labels for 3-d plots */
-
- #include "plplot.h"
-
- extern PLINT zbackflag, zbcolor;
- extern PLFLT zticksp;
-
- void plbox3(xopt,xlabel,xtick,nsubx,yopt,ylabel,ytick,nsuby,
- zopt,zlabel,ztick,nsubz)
- char *xopt, *xlabel, *yopt, *ylabel, *zopt, *zlabel;
- PLINT nsubx, nsuby, nsubz;
- PLFLT xtick, ytick, ztick;
- {
- PLFLT dx,dy,tx,ty,ux,uy;
- PLFLT xmin,xmax,ymin,ymax,zmin,zmax,zscale;
- PLFLT cxx,cxy,cyx,cyy,cyz;
- PLINT ln, level, font;
-
- 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. */
- zbackflag = stsearch(zopt,'d');
- if(zbackflag) {
- /* save tick spacing and color */
- zticksp = ztick;
- gatt(&font,&zbcolor);
- }
-
- 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);
-
- }
- }
-
-