diff options
Diffstat (limited to 'src/cmd/map/libmap/lagrange.c')
-rw-r--r-- | src/cmd/map/libmap/lagrange.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/cmd/map/libmap/lagrange.c b/src/cmd/map/libmap/lagrange.c new file mode 100644 index 00000000..02dd29eb --- /dev/null +++ b/src/cmd/map/libmap/lagrange.c @@ -0,0 +1,30 @@ +#include <u.h> +#include <libc.h> +#include "map.h" + +static int +Xlagrange(struct place *place, double *x, double *y) +{ + double z1,z2; + double w1,w2,t1,t2; + struct place p; + copyplace(place,&p); + if(place->nlat.l<0) { + p.nlat.l = -p.nlat.l; + p.nlat.s = -p.nlat.s; + } + Xstereographic(&p,&z1,&z2); + csqrt(-z2/2,z1/2,&w1,&w2); + cdiv(w1-1,w2,w1+1,w2,&t1,&t2); + *y = -t1; + *x = t2; + if(place->nlat.l<0) + *y = -*y; + return(1); +} + +proj +lagrange(void) +{ + return(Xlagrange); +} |