conic.c 496 B

123456789101112131415161718192021222324252627
  1. #include <u.h>
  2. #include <libc.h>
  3. #include "map.h"
  4. static struct coord stdpar;
  5. static int
  6. Xconic(struct place *place, double *x, double *y)
  7. {
  8. double r;
  9. if(fabs(place->nlat.l-stdpar.l) > 80.*RAD)
  10. return(-1);
  11. r = stdpar.c/stdpar.s - tan(place->nlat.l - stdpar.l);
  12. *x = - r*sin(place->wlon.l * stdpar.s);
  13. *y = - r*cos(place->wlon.l * stdpar.s);
  14. if(r>3) return(0);
  15. return(1);
  16. }
  17. proj
  18. conic(double par)
  19. {
  20. if(fabs(par) <.1)
  21. return(Xcylindrical);
  22. deg2rad(par, &stdpar);
  23. return(Xconic);
  24. }