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

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

/* Draws the next zig-zag line for a 3-d plot. The data is stored in */
/* array **z as a function of x[] and y[]. */
/* Depending on the state of "flg0", the sequence of data points */
/* sent to plnxtv is altered so as to allow cross-hatch plotting, */
/* or plotting parallel to either the x-axis or the y-axis. */

#include "plplot.h"

void plt3zz(xstar0,ystar0,dx,dy,flg0,init,x,y,z,nx,ny,u,v)
int xstar0, ystar0, dx, dy, flg0, nx, ny, init;
FLOAT *x, *y, **z;
int *u, *v;
{
      int flag;
      int n;
      int xstart, ystart;

      n = 0;
      xstart = xstar0;
      ystart = ystar0;
      flag = flg0;

lab1:
      if (1 <= xstart && xstart <= nx && 1 <= ystart && ystart <= ny) {
        u[n] = wcpcx(w3wcx(x[xstart-1],y[ystart-1],z[xstart-1][ystart-1]));
        v[n] = wcpcy(w3wcy(x[xstart-1],y[ystart-1],z[xstart-1][ystart-1]));
        if (flag == -3) {
          ystart = ystart + dy;
          flag = -flag;
        }
        else if (flag == -2)
          ystart = ystart + dy;
        else if (flag == -1) {
          ystart = ystart + dy;
          flag = 1;
        }
        else if (flag == 1)
          xstart = xstart + dx;
        else if (flag == 2)  {
          xstart = xstart + dx;
          flag = -2;
        }
        else if (flag == 3) {
          xstart = xstart + dx;
          flag = -flag;
        }
        n = n+1;
        goto lab1;
      }

      if (flag == 1 || flag == -2) {
        if (flag == 1) {
          xstart = xstart - dx;
          ystart = ystart + dy;
        }
        else if (flag == -2) {
          ystart = ystart - dy;
          xstart = xstart + dx;
        }

        if (1 <= xstart && xstart <= nx  && 1 <= ystart && ystart <= ny) {
          u[n] = wcpcx(w3wcx(x[xstart-1],y[ystart-1],z[xstart-1][ystart-1]));
          v[n] = wcpcy(w3wcy(x[xstart-1],y[ystart-1],z[xstart-1][ystart-1]));
          n = n+1;
        }

      }
      plnxtv(u,v,n,init);
}

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