1*59cc4ca5SDavid du Colombier #include <u.h> 2*59cc4ca5SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier #include "map.h" 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier static int Xmollweide(struct place * place,double * x,double * y)6219b2ee8SDavid du ColombierXmollweide(struct place *place, double *x, double *y) 73e12c5d1SDavid du Colombier { 8219b2ee8SDavid du Colombier double z; 9219b2ee8SDavid du Colombier double w; 103e12c5d1SDavid du Colombier z = place->nlat.l; 113e12c5d1SDavid du Colombier if(fabs(z)<89.9*RAD) 123e12c5d1SDavid du Colombier do { /*newton for 2z+sin2z=pi*sin(lat)*/ 133e12c5d1SDavid du Colombier w = (2*z+sin(2*z)-PI*place->nlat.s)/(2+2*cos(2*z)); 143e12c5d1SDavid du Colombier z -= w; 153e12c5d1SDavid du Colombier } while(fabs(w)>=.00001); 163e12c5d1SDavid du Colombier *y = sin(z); 173e12c5d1SDavid du Colombier *x = - (2/PI)*cos(z)*place->wlon.l; 183e12c5d1SDavid du Colombier return(1); 193e12c5d1SDavid du Colombier } 203e12c5d1SDavid du Colombier 213e12c5d1SDavid du Colombier proj mollweide(void)223e12c5d1SDavid du Colombiermollweide(void) 233e12c5d1SDavid du Colombier { 243e12c5d1SDavid du Colombier return(Xmollweide); 253e12c5d1SDavid du Colombier } 26