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