13e12c5d1SDavid du Colombier #include "map.h" 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier static int 4*219b2ee8SDavid du Colombier Xlagrange(struct place *place, double *x, double *y) 53e12c5d1SDavid du Colombier { 6*219b2ee8SDavid du Colombier double z1,z2; 73e12c5d1SDavid du Colombier double w1,w2,t1,t2; 83e12c5d1SDavid du Colombier struct place p; 93e12c5d1SDavid du Colombier copyplace(place,&p); 103e12c5d1SDavid du Colombier if(place->nlat.l<0) { 113e12c5d1SDavid du Colombier p.nlat.l = -p.nlat.l; 123e12c5d1SDavid du Colombier p.nlat.s = -p.nlat.s; 133e12c5d1SDavid du Colombier } 143e12c5d1SDavid du Colombier Xstereographic(&p,&z1,&z2); 153e12c5d1SDavid du Colombier csqrt(-z2/2,z1/2,&w1,&w2); 163e12c5d1SDavid du Colombier cdiv(w1-1,w2,w1+1,w2,&t1,&t2); 173e12c5d1SDavid du Colombier *y = -t1; 183e12c5d1SDavid du Colombier *x = t2; 193e12c5d1SDavid du Colombier if(place->nlat.l<0) 203e12c5d1SDavid du Colombier *y = -*y; 213e12c5d1SDavid du Colombier return(1); 223e12c5d1SDavid du Colombier } 233e12c5d1SDavid du Colombier 243e12c5d1SDavid du Colombier proj 253e12c5d1SDavid du Colombier lagrange(void) 263e12c5d1SDavid du Colombier { 273e12c5d1SDavid du Colombier return(Xlagrange); 283e12c5d1SDavid du Colombier } 29