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