ref: 7d7e8ae31ac01434c7017afce4eb0a033281a757
dir: /sys/src/cmd/map/libmap/fisheye.c/
#include <u.h> #include <libc.h> #include "map.h" /* refractive fisheye, not logarithmic */ static double n; static int Xfisheye(struct place *place, double *x, double *y) { double r; double u = sin(PI/4-place->nlat.l/2)/n; if(fabs(u) > .97) return -1; r = tan(asin(u)); *x = -r*place->wlon.s; *y = -r*place->wlon.c; return 1; } proj fisheye(double par) { n = par; return n<.1? 0: Xfisheye; }