ref: 5fd2e746e1a2a00d2acbc0c3b1924b1ea22101e8
dir: /sys/src/cmd/map/libmap/lagrange.c/
#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); }