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 int
6 28994509 2004-04-21 devnull Xlagrange(struct place *place, double *x, double *y)
7 28994509 2004-04-21 devnull {
8 28994509 2004-04-21 devnull double z1,z2;
9 28994509 2004-04-21 devnull double w1,w2,t1,t2;
10 28994509 2004-04-21 devnull struct place p;
11 28994509 2004-04-21 devnull copyplace(place,&p);
12 28994509 2004-04-21 devnull if(place->nlat.l<0) {
13 28994509 2004-04-21 devnull p.nlat.l = -p.nlat.l;
14 28994509 2004-04-21 devnull p.nlat.s = -p.nlat.s;
15 28994509 2004-04-21 devnull }
16 28994509 2004-04-21 devnull Xstereographic(&p,&z1,&z2);
17 28994509 2004-04-21 devnull csqrt(-z2/2,z1/2,&w1,&w2);
18 28994509 2004-04-21 devnull cdiv(w1-1,w2,w1+1,w2,&t1,&t2);
19 28994509 2004-04-21 devnull *y = -t1;
20 28994509 2004-04-21 devnull *x = t2;
21 28994509 2004-04-21 devnull if(place->nlat.l<0)
22 28994509 2004-04-21 devnull *y = -*y;
23 28994509 2004-04-21 devnull return(1);
24 28994509 2004-04-21 devnull }
25 28994509 2004-04-21 devnull
26 28994509 2004-04-21 devnull proj
27 28994509 2004-04-21 devnull lagrange(void)
28 28994509 2004-04-21 devnull {
29 28994509 2004-04-21 devnull return(Xlagrange);
30 28994509 2004-04-21 devnull }