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 int
6 28994509 2004-04-21 devnull Xpolyconic(struct place *place, double *x, double *y)
7 28994509 2004-04-21 devnull {
8 28994509 2004-04-21 devnull double r, alpha;
9 28994509 2004-04-21 devnull double lat2, lon2;
10 28994509 2004-04-21 devnull if(fabs(place->nlat.l) > .01) {
11 28994509 2004-04-21 devnull r = place->nlat.c / place->nlat.s;
12 28994509 2004-04-21 devnull alpha = place->wlon.l * place->nlat.s;
13 28994509 2004-04-21 devnull *y = place->nlat.l + r*(1 - cos(alpha));
14 28994509 2004-04-21 devnull *x = - r*sin(alpha);
15 28994509 2004-04-21 devnull } else {
16 28994509 2004-04-21 devnull lon2 = place->wlon.l * place->wlon.l;
17 28994509 2004-04-21 devnull lat2 = place->nlat.l * place->nlat.l;
18 28994509 2004-04-21 devnull *y = place->nlat.l * (1+(lon2/2)*(1-(8+lon2)*lat2/12));
19 28994509 2004-04-21 devnull *x = - place->wlon.l * (1-lat2*(3+lon2)/6);
20 28994509 2004-04-21 devnull }
21 28994509 2004-04-21 devnull return(1);
22 28994509 2004-04-21 devnull }
23 28994509 2004-04-21 devnull
24 28994509 2004-04-21 devnull proj
25 28994509 2004-04-21 devnull polyconic(void)
26 28994509 2004-04-21 devnull {
27 28994509 2004-04-21 devnull return(Xpolyconic);
28 28994509 2004-04-21 devnull }