#include <cmacs.h>
#include <robotconfig.h>
#include <grinnell.h>
#include <image.h>
#include <imagemac.h>
   
main(argc,argv)
int argc; char *argv[];
{  int     i,j,prl,prh,pcl,pch,frl,fcl,pb,rv,rh,rt,ii,jj;
   float   lat,lng,lnglo,lnghi,latlo,lathi,x,y,z,r,dlat,dlng;
   int line[1024];  char *lineo;
   IMAGE *pic,*picr;   int frm,sh;
   rv=239;
   rh=239;
   dlat=0;  dlng=0;
   pic = imgopen("EARTH.img",0);
     printf("%d rows x %d cols x %d bits\n",rows(pic),cols(pic),pixbits(pic));
     g_init(0);
     frm = g_allocfrm(G_BW,MIN(8,pixbits(pic)));
     g_chgdisp(frm);
     prl = rstart(pic);  prh = rend(pic);
     pcl = cstart(pic);  pch = cend(pic);
     pb = pixbits(pic);
     picr = imgcreat("polar.img",0655,pb,0,479,0,479);
     for (ii = -rv; ii <= rv; ++ii)
       {printf("ii %d ",ii); fflush(stdout);
       y = ((double) ii)/((double) rv);
       rt = SQRT(1.0-y*y)*rh;
       for (jj = -rt; jj <= rt; ++jj)
          {x = ((double) jj)/((double) rh);   r = SQRT(x*x+y*y);
           z = SQRT(1.0-r*r);
           lng = ATAN2(x,y)+dlng;   lat = ATAN2(z,r)+dlat;
           while ((lat > PI/2) || (lat < -PI/2))
             { if (lat > PI/2) {lat = PI - lat;  lng += PI;}
               if (lat < -PI/2) lat += TWOPI; }
           while (lng < -PI) lng += TWOPI; while (lng > PI) lng -= TWOPI;
           j = (lng+PI)*(pch-pcl)/TWOPI + pcl;
           i = (-lat+PI/2)*(prh-prl)/PI + prl;
           j = MIN(pch,MAX(pcl,j));
           i = MIN(prh,MAX(prl,i));
           setpixel(picr,ii+240,jj+240,pixel(pic,i,j));
           }
         }
       imgclose(picr);  imgclose(pic);

}

