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

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

/* Illustration of 1-1 scaling for polar plot */
#include <stdio.h>
#include <math.h>

main()
{
  int i,j;
  double dtr, theta, dx, dy, r;
  char text[3];
  static FLOAT x0[361], y0[361];
  static FLOAT x[361], y[361];

  dtr = 3.141592654/180.0;
  for (i=0; i<=360; i++) {
    x0[i] = cos(dtr * i);
    y0[i] = sin(dtr * i);
  }

  plstar(1,1);

  /* Set up viewport and window, but do not draw box */

  plenv(-1.3,1.3,-1.3,1.3,1,-2);
  for (i=1; i<=10; i++) {
    for (j=0; j<=360; j++) {
      x[j] = 0.1*i*x0[j];
      y[j] = 0.1*i*y0[j];
    }

   /* Draw circles for polar grid */

    plline(361,x,y);
  }

  plcol(2);
  for (i=0; i<=11; i++) {
    theta = 30.0*i;
    dx = cos(dtr*theta);
    dy = sin(dtr*theta);

    /* Draw radial spokes for polar grid */

    pljoin(0.0,0.0,dx,dy);
    sprintf(text,"%d",round(theta));

    /* Write labels for angle */

    if (dx >= 0)
      plptex(dx,dy,dx,dy,-0.15,text);
    else
      plptex(dx,dy,-dx,-dy,1.15,text);
  }

  /* Draw the graph */

  for (i=0; i<=360; i++) {
    r = sin(dtr*(5*i));
    x[i] = x0[i] * r;
    y[i] = y0[i] * r;
  }
  plcol(3);
  plline(361,x,y);

  plcol(4);
  plmtex("t",2.0,0.5,0.5,"#frPLPLOT Example 3 - r(#gh)=sin 5#gh");

  /* Close the plot at end */

  plend();
}


int
round(d)
double	d;
{
	return((int)(d+0.5));
}

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