Blob
1 #include <u.h>2 #include <libc.h>3 #include "map.h"5 struct coord center;7 static int8 Xelliptic(struct place *place, double *x, double *y)9 {10 double r1,r2;11 r1 = acos(place->nlat.c*(place->wlon.c*center.c12 - place->wlon.s*center.s));13 r2 = acos(place->nlat.c*(place->wlon.c*center.c14 + place->wlon.s*center.s));15 *x = -(r1*r1 - r2*r2)/(4*center.l);16 *y = (r1*r1+r2*r2)/2 - (center.l*center.l+*x**x);17 if(*y < 0)18 *y = 0;19 *y = sqrt(*y);20 if(place->nlat.l<0)21 *y = -*y;22 return(1);23 }25 proj26 elliptic(double l)27 {28 l = fabs(l);29 if(l>89)30 return(0);31 if(l<1)32 return(Xazequidistant);33 deg2rad(l,¢er);34 return(Xelliptic);35 }