| #include <u.h> | |
| #include <libc.h> | |
| #include "map.h" | |
| static int | |
| Xmollweide(struct place *place, double *x, double *y) | |
| { | |
| double z; | |
| double w; | |
| z = place->nlat.l; | |
| if(fabs(z)<89.9*RAD) | |
| do { /*newton for 2z+sin2z=pi*sin(lat)*/ | |
| w = (2*z+sin(2*z)-PI*place->nlat.s)/(2+2*cos(2*z)); | |
| z -= w; | |
| } while(fabs(w)>=.00001); | |
| *y = sin(z); | |
| *x = - (2/PI)*cos(z)*place->wlon.l; | |
| return(1); | |
| } | |
| proj | |
| mollweide(void) | |
| { | |
| return(Xmollweide); | |
| } |