|  | #include <u.h> | 
|  | #include <libc.h> | 
|  | #include "map.h" | 
|  |  | 
|  | static int | 
|  | Xmercator(struct place *place, double *x, double *y) | 
|  | { | 
|  | if(fabs(place->nlat.l) > 80.*RAD) | 
|  | return(-1); | 
|  | *x = -place->wlon.l; | 
|  | *y = 0.5*log((1+place->nlat.s)/(1-place->nlat.s)); | 
|  | return(1); | 
|  | } | 
|  |  | 
|  | proj | 
|  | mercator(void) | 
|  | { | 
|  | return(Xmercator); | 
|  | } | 
|  |  | 
|  | static double ecc = ECC; | 
|  |  | 
|  | static int | 
|  | Xspmercator(struct place *place, double *x, double *y) | 
|  | { | 
|  | if(Xmercator(place,x,y) < 0) | 
|  | return(-1); | 
|  | *y += 0.5*ecc*log((1-ecc*place->nlat.s)/(1+ecc*place->nlat.s)); | 
|  | return(1); | 
|  | } | 
|  |  | 
|  | proj | 
|  | sp_mercator(void) | 
|  | { | 
|  | return(Xspmercator); | 
|  | } |