diff options
Diffstat (limited to 'src/cmd/map/libmap/fisheye.c')
-rw-r--r-- | src/cmd/map/libmap/fisheye.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/cmd/map/libmap/fisheye.c b/src/cmd/map/libmap/fisheye.c new file mode 100644 index 00000000..412d65e7 --- /dev/null +++ b/src/cmd/map/libmap/fisheye.c @@ -0,0 +1,26 @@ +#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; +} |