#include <u.h> | |
#include <libc.h> | |
#include "map.h" | |
struct coord center; | |
static int | |
Xelliptic(struct place *place, double *x, double *y) | |
{ | |
double r1,r2; | |
r1 = acos(place->nlat.c*(place->wlon.c*center.c | |
- place->wlon.s*center.s)); | |
r2 = acos(place->nlat.c*(place->wlon.c*center.c | |
+ place->wlon.s*center.s)); | |
*x = -(r1*r1 - r2*r2)/(4*center.l); | |
*y = (r1*r1+r2*r2)/2 - (center.l*center.l+*x**x); | |
if(*y < 0) | |
*y = 0; | |
*y = sqrt(*y); | |
if(place->nlat.l<0) | |
*y = -*y; | |
return(1); | |
} | |
proj | |
elliptic(double l) | |
{ | |
l = fabs(l); | |
if(l>89) | |
return(0); | |
if(l<1) | |
return(Xazequidistant); | |
deg2rad(l,¢er); | |
return(Xelliptic); | |
} |