#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "math.h"

#define DTOR 3.141592654 / 180.0
#define ABS(x) (x < 0 ? -(x) : (x))

int main(argc,argv)
int argc;
char **argv;
{
  int i,j;
  double about,above;
  int counter = 0;
  double x,y,z;
  double tmp;

  double radius,cx,cy,cz;
  int rows,columns;
  double dabout,dabove,above1,above2,about1,about2;
  char exp[10];

  /* Make sure we have been called correctly */
  if (argc < 13) {
    fprintf(stderr,"usage: %s octfile r ",argv[0]);
    fprintf(stderr,"cx cy cz dabove dabout above1 above2 about1 about2 exp");
    fprintf(stderr,"<rpictoptions>\n");
    fprintf(stderr,"where\n");
    fprintf(stderr,"\toctfile         oconv style oct file\n");
    fprintf(stderr,"\tr               distance of camera from view point\n");
    fprintf(stderr,"\tcx cy cz        camera view point\n");
    fprintf(stderr,"\tdabove          number of slices in above angle\n");
    fprintf(stderr,"\tdabout          number of columns in about angle\n");
    fprintf(stderr,"\tabove1 above2   range of above angles\n");
    fprintf(stderr,"\tabout1 about2   range of about angles\n");
    fprintf(stderr,"\texp             constant exposure for pfilt\n");
    fprintf(stderr,"All angles in degrees\n");
    exit(0);
  }

  radius  = atof(argv[2]);
  cx      = atof(argv[3]);
  cy      = atof(argv[4]);
  cz      = atof(argv[5]);
  dabove  = ABS(atof(argv[6]));
  dabout  = ABS(atof(argv[7]));
  above1  = atof(argv[8]);
  above2  = atof(argv[9]);
  about1  = atof(argv[10]);
  about2  = atof(argv[11]);
  strcpy(exp,argv[12]);

  printf("# %s %s %g %g %g %g %g %g %g %g %g %g %s\n\n",
	 argv[0],argv[1],radius,cx,cy,cz,dabove,dabout,
	 above1,above2,about1,about2,exp);

  if (about1 > about2) {
    tmp = about1;
    about1 = about2;
    about2 = tmp;
  }
  if (above1 < above2) {
    tmp = above1;
    above1 = above2;
    above2 = tmp;
  }

  for (above=above1;above>=above2;above-=dabove) {
    for (about=about1;about<about2;about+=dabout) {
    
      printf("# =========== Angle %g,%g ============\n",above,about);
      printf("echo Above %g   About %g\n",above,about);

      x = cx + radius * cos(about * DTOR) * cos(above * DTOR);
      y = cy + radius * sin(about * DTOR) * cos(above * DTOR);
      z = cz + radius * sin(above * DTOR);

      /* Create the rpict call */
      printf("rpict -vp %g %g %g -vd %g %g %g ",x,y,z,cx-x,cy-y,cz-z);
      for (i=13;i<argc;i++)
	printf("%s ",argv[i]);
      printf("%s > object.pic\n",argv[1]);
      printf("pfilt -1 -e %s object.pic > object.filt\n",exp);
      printf("ra_pict object.filt objectpict.%04d\n",counter++);
      
    }
  }
}



