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.