Blame


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