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 struct coord center;
6 28994509 2004-04-21 devnull
7 28994509 2004-04-21 devnull static int
8 28994509 2004-04-21 devnull Xelliptic(struct place *place, double *x, double *y)
9 28994509 2004-04-21 devnull {
10 28994509 2004-04-21 devnull double r1,r2;
11 28994509 2004-04-21 devnull r1 = acos(place->nlat.c*(place->wlon.c*center.c
12 28994509 2004-04-21 devnull - place->wlon.s*center.s));
13 28994509 2004-04-21 devnull r2 = acos(place->nlat.c*(place->wlon.c*center.c
14 28994509 2004-04-21 devnull + place->wlon.s*center.s));
15 28994509 2004-04-21 devnull *x = -(r1*r1 - r2*r2)/(4*center.l);
16 28994509 2004-04-21 devnull *y = (r1*r1+r2*r2)/2 - (center.l*center.l+*x**x);
17 28994509 2004-04-21 devnull if(*y < 0)
18 28994509 2004-04-21 devnull *y = 0;
19 28994509 2004-04-21 devnull *y = sqrt(*y);
20 28994509 2004-04-21 devnull if(place->nlat.l<0)
21 28994509 2004-04-21 devnull *y = -*y;
22 28994509 2004-04-21 devnull return(1);
23 28994509 2004-04-21 devnull }
24 28994509 2004-04-21 devnull
25 28994509 2004-04-21 devnull proj
26 28994509 2004-04-21 devnull elliptic(double l)
27 28994509 2004-04-21 devnull {
28 28994509 2004-04-21 devnull l = fabs(l);
29 28994509 2004-04-21 devnull if(l>89)
30 28994509 2004-04-21 devnull return(0);
31 28994509 2004-04-21 devnull if(l<1)
32 28994509 2004-04-21 devnull return(Xazequidistant);
33 28994509 2004-04-21 devnull deg2rad(l,&center);
34 28994509 2004-04-21 devnull return(Xelliptic);
35 28994509 2004-04-21 devnull }