ref: 290c921d1d01119b7d4550770da06c491508508f
dir: /sys/src/cmd/map/libmap/polyconic.c/
#include <u.h> #include <libc.h> #include "map.h" int Xpolyconic(struct place *place, double *x, double *y) { double r, alpha; double lat2, lon2; if(fabs(place->nlat.l) > .01) { r = place->nlat.c / place->nlat.s; alpha = place->wlon.l * place->nlat.s; *y = place->nlat.l + r*(1 - cos(alpha)); *x = - r*sin(alpha); } else { lon2 = place->wlon.l * place->wlon.l; lat2 = place->nlat.l * place->nlat.l; *y = place->nlat.l * (1+(lon2/2)*(1-(8+lon2)*lat2/12)); *x = - place->wlon.l * (1-lat2*(3+lon2)/6); } return(1); } proj polyconic(void) { return(Xpolyconic); }