1*59cc4ca5SDavid du Colombier #include <u.h> 2*59cc4ca5SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier #include "map.h" 43e12c5d1SDavid du Colombier /* refractive fisheye, not logarithmic */ 53e12c5d1SDavid du Colombier 6219b2ee8SDavid du Colombier static double n; 73e12c5d1SDavid du Colombier 83e12c5d1SDavid du Colombier static int Xfisheye(struct place * place,double * x,double * y)9219b2ee8SDavid du ColombierXfisheye(struct place *place, double *x, double *y) 103e12c5d1SDavid du Colombier { 11219b2ee8SDavid du Colombier double r; 12219b2ee8SDavid du Colombier double u = sin(PI/4-place->nlat.l/2)/n; 133e12c5d1SDavid du Colombier if(fabs(u) > .97) 143e12c5d1SDavid du Colombier return -1; 153e12c5d1SDavid du Colombier r = tan(asin(u)); 163e12c5d1SDavid du Colombier *x = -r*place->wlon.s; 173e12c5d1SDavid du Colombier *y = -r*place->wlon.c; 183e12c5d1SDavid du Colombier return 1; 193e12c5d1SDavid du Colombier } 203e12c5d1SDavid du Colombier 213e12c5d1SDavid du Colombier proj fisheye(double par)22219b2ee8SDavid du Colombierfisheye(double par) 233e12c5d1SDavid du Colombier { 243e12c5d1SDavid du Colombier n = par; 253e12c5d1SDavid du Colombier return n<.1? 0: Xfisheye; 263e12c5d1SDavid du Colombier } 27