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 Netfuture.ch.