1*59cc4ca5SDavid du Colombier #include <u.h> 2*59cc4ca5SDavid du Colombier #include <libc.h> 33e12c5d1SDavid du Colombier #include "map.h" 43e12c5d1SDavid du Colombier 5219b2ee8SDavid du Colombier static double scale; 63e12c5d1SDavid du Colombier 73e12c5d1SDavid du Colombier static int Xgall(struct place * place,double * x,double * y)8219b2ee8SDavid du ColombierXgall(struct place *place, double *x, double *y) 93e12c5d1SDavid du Colombier { 103e12c5d1SDavid du Colombier /* two ways to compute tan(place->nlat.l/2) */ 113e12c5d1SDavid du Colombier if(fabs(place->nlat.s)<.1) 123e12c5d1SDavid du Colombier *y = sin(place->nlat.l/2)/cos(place->nlat.l/2); 133e12c5d1SDavid du Colombier else 143e12c5d1SDavid du Colombier *y = (1-place->nlat.c)/place->nlat.s; 153e12c5d1SDavid du Colombier *x = -scale*place->wlon.l; 163e12c5d1SDavid du Colombier return 1; 173e12c5d1SDavid du Colombier } 183e12c5d1SDavid du Colombier 193e12c5d1SDavid du Colombier proj gall(double par)20219b2ee8SDavid du Colombiergall(double par) 213e12c5d1SDavid du Colombier { 22219b2ee8SDavid du Colombier double coshalf; 233e12c5d1SDavid du Colombier if(fabs(par)>80) 243e12c5d1SDavid du Colombier return 0; 253e12c5d1SDavid du Colombier par *= RAD; 263e12c5d1SDavid du Colombier coshalf = cos(par/2); 273e12c5d1SDavid du Colombier scale = cos(par)/(2*coshalf*coshalf); 283e12c5d1SDavid du Colombier return Xgall; 293e12c5d1SDavid du Colombier } 30