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 struct coord stdpar; 6219b2ee8SDavid du Colombier static double r0; 73e12c5d1SDavid du Colombier 83e12c5d1SDavid du Colombier static Xbonne(struct place * place,double * x,double * y)9219b2ee8SDavid du ColombierXbonne(struct place *place, double *x, double *y) 103e12c5d1SDavid du Colombier { 113e12c5d1SDavid du Colombier double r, alpha; 123e12c5d1SDavid du Colombier r = r0 - place->nlat.l; 133e12c5d1SDavid du Colombier if(r<.001) 143e12c5d1SDavid du Colombier if(fabs(stdpar.c)<1e-10) 153e12c5d1SDavid du Colombier alpha = place->wlon.l; 163e12c5d1SDavid du Colombier else if(fabs(place->nlat.c)==0) 173e12c5d1SDavid du Colombier alpha = 0; 183e12c5d1SDavid du Colombier else 193e12c5d1SDavid du Colombier alpha = place->wlon.l/(1+ 203e12c5d1SDavid du Colombier stdpar.c*stdpar.c*stdpar.c/place->nlat.c/3); 213e12c5d1SDavid du Colombier else 223e12c5d1SDavid du Colombier alpha = place->wlon.l * place->nlat.c / r; 233e12c5d1SDavid du Colombier *x = - r*sin(alpha); 243e12c5d1SDavid du Colombier *y = - r*cos(alpha); 253e12c5d1SDavid du Colombier return(1); 263e12c5d1SDavid du Colombier } 273e12c5d1SDavid du Colombier 283e12c5d1SDavid du Colombier proj bonne(double par)29219b2ee8SDavid du Colombierbonne(double par) 303e12c5d1SDavid du Colombier { 313e12c5d1SDavid du Colombier if(fabs(par*RAD) < .01) 323e12c5d1SDavid du Colombier return(Xsinusoidal); 333e12c5d1SDavid du Colombier deg2rad(par, &stdpar); 343e12c5d1SDavid du Colombier r0 = stdpar.c/stdpar.s + stdpar.l; 353e12c5d1SDavid du Colombier return(Xbonne); 363e12c5d1SDavid du Colombier } 37