Blob


1 #include <u.h>
2 #include <libc.h>
3 #include "map.h"
5 static struct coord stdpar;
6 static double r0;
8 static int
9 Xbonne(struct place *place, double *x, double *y)
10 {
11 double r, alpha;
12 r = r0 - place->nlat.l;
13 if(r<.001)
14 if(fabs(stdpar.c)<1e-10)
15 alpha = place->wlon.l;
16 else if(fabs(place->nlat.c)==0)
17 alpha = 0;
18 else
19 alpha = place->wlon.l/(1+
20 stdpar.c*stdpar.c*stdpar.c/place->nlat.c/3);
21 else
22 alpha = place->wlon.l * place->nlat.c / r;
23 *x = - r*sin(alpha);
24 *y = - r*cos(alpha);
25 return(1);
26 }
28 proj
29 bonne(double par)
30 {
31 if(fabs(par*RAD) < .01)
32 return(Xsinusoidal);
33 deg2rad(par, &stdpar);
34 r0 = stdpar.c/stdpar.s + stdpar.l;
35 return(Xbonne);
36 }