/* poly.c -- precompute x,y coordinates to speed drawing */

#include "lattice/stdio.h"
#include "lattice/math.h"

short int x1[50][15];
short int x2[50][27];
short int x3[50][51];
short int y1[50][15];
short int y2[50][27];
short int y3[50][51];

main()
{
   register short int a,i,l,ls,n1,s;
   double an,n;
   FILE *fp;

   for (a=0;a<50;a++){
      ls=a+1;
      for (i=0;i<3;i++){
         switch (i) {
            case 0:
               an=PI/2.0;
               s=0;
               for (l=10;l<=20;l+=5){
                  x1[a][s]=(l*ls)/10;
                  y1[a][s]=0;
                  ++s;
                  for (n=an;n<=(2*PI+.001);n+=an){
                     x1[a][s]=(short int)(l*(ls*cos(n))/10);
                     y1[a][s]=(short int)(ls*sin(n));
                     s++;
                  }
               }
               break;
            case 1:
               an=PI/4.0;
               s=0;
               for (l=10;l<=20;l+=5){
                  x2[a][s]=(l*ls)/10;
                  y2[a][s]=0;
                  ++s;
                  for (n=an;n<=(2*PI+.001);n+=an){
                     x2[a][s]=(short int)(l*(ls*cos(n))/10);
                     y2[a][s]=(short int)(ls*sin(n));
                     s++;
                  }
               }
               break;
            case 2:
               an=PI/8.0;
               s=0;
               for (l=10;l<=20;l+=5){
                  x3[a][s]=(l*ls)/10;
                  y3[a][s]=0;
                  ++s;
                  for (n=an;n<=(2*PI+.001);n+=an){
                     x3[a][s]=(short int)(l*(ls*cos(n))/10);
                     y3[a][s]=(short int)(ls*sin(n));
                     s++;
                  }
               }
               break;
         }
      }
   }
   fp = fopen("polynums.c","w");
   fprintf (fp,"short int x1[50][15] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<15;n1++){
         fprintf(fp,"\t%d",x1[a][n1]);
         if (n1!=14)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fprintf (fp,"short int y1[50][15] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<15;n1++){
         fprintf(fp,"\t%d",y1[a][n1]);
         if (n1!=14)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fprintf (fp,"short int x2[50][27] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<27;n1++){
         fprintf(fp,"\t%d",x2[a][n1]);
         if (n1!=26)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fprintf (fp,"short int y2[50][27] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<27;n1++){
         fprintf(fp,"\t%d",y2[a][n1]);
         if (n1!=26)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fprintf (fp,"short int x3[50][51] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<51;n1++){
         fprintf(fp,"\t%d",x3[a][n1]);
         if (n1!=50)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fprintf (fp,"short int y3[50][51] = {\n\n");
   for (a=0;a<50;a++){
      if (a!=0)
         fprintf(fp,"\t},\n\n");
      fprintf(fp,"\t{\n");
      for (n1=0;n1<51;n1++){
         fprintf(fp,"\t%d",y3[a][n1]);
         if (n1!=50)
            fprintf(fp,",");
         if (n1 % 7 == 6)
            fprintf(fp,"\n");
      }
   }
   fprintf (fp,"\t}\n};\n\n");
   fclose(fp);
}
