|
|
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.