|
|
1.1 root 1: #include "map.h"
2:
3: struct coord stdp0, stdp1;
4: float k;
5:
6: Xlambert(place, x, y)
7: struct place *place;
8: float *x, *y;
9: {
10: float r;
11: if(place->nlat.l < -80.*RAD||place->nlat.l > 89.*RAD)
12: return(-1);
13: r = stdp0.c*exp(0.5*k*log(
14: (1+stdp0.s)*(1-place->nlat.s)/((1-stdp0.s)*(1+place->nlat.s))));
15: if(stdp1.l<0.)
16: r = -r;
17: *x = - r*sin(k * place->wlon.l);
18: *y = - r*cos(k * place->wlon.l);
19: return(1);
20: }
21:
22: int (*lambert(par0, par1))()
23: float par0, par1;
24: {
25: extern (*mercator())(), (*perspective())();
26: float temp;
27: if(fabs(par0)>fabs(par1)){
28: temp = par0;
29: par0 = par1;
30: par1 = temp;
31: }
32: deg2rad(par0, &stdp0);
33: deg2rad(par1, &stdp1);
34: if(fabs(par1+par0)<.1)
35: return(mercator());
36: if(fabs(par1-par0)<.1)
37: return(perspective(-1.));
38: if(fabs(par0)>89.5||fabs(par1)>89.5)
39: return(0);
40: k = 2*log(stdp1.c/stdp0.c)/log(
41: (1+stdp0.s)*(1-stdp1.s)/((1-stdp0.s)*(1+stdp1.s)));
42: return(Xlambert);
43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.