This is plgrid3.c in view mode; [Download] [Up]
/* Routine to draw a grid around the back side of the 3d plot */ /* wih hidden line removal */ #include "plplot.h" #include <math.h> void plgrid3a(tick) double tick; { double xmin, ymin, zmin, xmax, ymax, zmax, zscale; double cxx, cxy, cyx, cyy, cyz; int u[3], v[3]; int nsub, mode, prec, scal; double tp, dummy; gw3wc(&cxx,&cxy,&cyx,&cyy,&cyz); gdom(&xmin,&xmax,&ymin,&ymax); grange(&zscale,&zmin,&zmax); nsub = 0; dummy = tick; /* Code to get around AIX bug. */ pldtik(zmin,zmax,&dummy,&nsub,&mode,&prec,&scal); tick = dummy; tp = tick * floor(zmin/tick) + tick; set3upd(0); if (cxx >= 0.0 && cxy <= 0.0) { while ( tp <= zmax ) { u[0] = wcpcx(w3wcx(xmin,ymax,tp)); v[0] = wcpcy(w3wcy(xmin,ymax,tp)); u[1] = wcpcx(w3wcx(xmax,ymax,tp)); v[1] = wcpcy(w3wcy(xmax,ymax,tp)); u[2] = wcpcx(w3wcx(xmax,ymin,tp)); v[2] = wcpcy(w3wcy(xmax,ymin,tp)); plnxtv(u,v,3,0); tp += tick; } u[0] = wcpcx(w3wcx(xmax,ymax,zmin)); v[0] = wcpcy(w3wcy(xmax,ymax,zmin)); u[1] = wcpcx(w3wcx(xmax,ymax,zmax)); v[1] = wcpcy(w3wcy(xmax,ymax,zmax)); plnxtv(u,v,2,0); } else if(cxx <= 0.0 && cxy <= 0.0) { while ( tp <= zmax ) { u[0] = wcpcx(w3wcx(xmax,ymax,tp)); v[0] = wcpcy(w3wcy(xmax,ymax,tp)); u[1] = wcpcx(w3wcx(xmax,ymin,tp)); v[1] = wcpcy(w3wcy(xmax,ymin,tp)); u[2] = wcpcx(w3wcx(xmin,ymin,tp)); v[2] = wcpcy(w3wcy(xmin,ymin,tp)); plnxtv(u,v,3,0); tp += tick; } u[0] = wcpcx(w3wcx(xmax,ymin,zmin)); v[0] = wcpcy(w3wcy(xmax,ymin,zmin)); u[1] = wcpcx(w3wcx(xmax,ymin,zmax)); v[1] = wcpcy(w3wcy(xmax,ymin,zmax)); plnxtv(u,v,2,0); } else if(cxx <= 0.0 && cxy >= 0.0) { while ( tp <= zmax ) { u[0] = wcpcx(w3wcx(xmax,ymin,tp)); v[0] = wcpcy(w3wcy(xmax,ymin,tp)); u[1] = wcpcx(w3wcx(xmin,ymin,tp)); v[1] = wcpcy(w3wcy(xmin,ymin,tp)); u[2] = wcpcx(w3wcx(xmin,ymax,tp)); v[2] = wcpcy(w3wcy(xmin,ymax,tp)); plnxtv(u,v,3,0); tp += tick; } u[0] = wcpcx(w3wcx(xmin,ymin,zmin)); v[0] = wcpcy(w3wcy(xmin,ymin,zmin)); u[1] = wcpcx(w3wcx(xmin,ymin,zmax)); v[1] = wcpcy(w3wcy(xmin,ymin,zmax)); plnxtv(u,v,2,0); } else if(cxx >= 0.0 && cxy >= 0.0) { while ( tp <= zmax ) { u[0] = wcpcx(w3wcx(xmin,ymin,tp)); v[0] = wcpcy(w3wcy(xmin,ymin,tp)); u[1] = wcpcx(w3wcx(xmin,ymax,tp)); v[1] = wcpcy(w3wcy(xmin,ymax,tp)); u[2] = wcpcx(w3wcx(xmax,ymax,tp)); v[2] = wcpcy(w3wcy(xmax,ymax,tp)); plnxtv(u,v,3,0); tp += tick; } u[0] = wcpcx(w3wcx(xmin,ymax,zmin)); v[0] = wcpcy(w3wcy(xmin,ymax,zmin)); u[1] = wcpcx(w3wcx(xmin,ymax,zmax)); v[1] = wcpcy(w3wcy(xmin,ymax,zmax)); plnxtv(u,v,2,0); } set3upd(1); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.