deriveConstants.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import {SIXTH, RA4, RA6, EPSLN} from './constants/values';
  2. import {default as Ellipsoid, WGS84} from './constants/Ellipsoid';
  3. import match from './match';
  4. export function eccentricity(a, b, rf, R_A) {
  5. var a2 = a * a; // used in geocentric
  6. var b2 = b * b; // used in geocentric
  7. var es = (a2 - b2) / a2; // e ^ 2
  8. var e = 0;
  9. if (R_A) {
  10. a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));
  11. a2 = a * a;
  12. es = 0;
  13. } else {
  14. e = Math.sqrt(es); // eccentricity
  15. }
  16. var ep2 = (a2 - b2) / b2; // used in geocentric
  17. return {
  18. es: es,
  19. e: e,
  20. ep2: ep2
  21. };
  22. }
  23. export function sphere(a, b, rf, ellps, sphere) {
  24. if (!a) { // do we have an ellipsoid?
  25. var ellipse = match(Ellipsoid, ellps);
  26. if (!ellipse) {
  27. ellipse = WGS84;
  28. }
  29. a = ellipse.a;
  30. b = ellipse.b;
  31. rf = ellipse.rf;
  32. }
  33. if (rf && !b) {
  34. b = (1.0 - 1.0 / rf) * a;
  35. }
  36. if (rf === 0 || Math.abs(a - b) < EPSLN) {
  37. sphere = true;
  38. b = a;
  39. }
  40. return {
  41. a: a,
  42. b: b,
  43. rf: rf,
  44. sphere: sphere
  45. };
  46. }