distance.c 770 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <grass/gis.h>
  2. double distance(double east, double west)
  3. {
  4. double incr;
  5. double meters;
  6. double e1, e2;
  7. /* calculate the distance from east edge to west edge at north==0.0
  8. * for lat-lon this will be along equator. For other databases the
  9. * north value will make no difference
  10. *
  11. * Note, must do lat-lon in 3 pieces, otherwise distance "line" may
  12. * go the wrong way around the globe
  13. */
  14. G_begin_distance_calculations();
  15. if (east < west) {
  16. double temp;
  17. temp = east;
  18. east = west;
  19. west = temp;
  20. }
  21. incr = (east - west) / 3.0;
  22. e1 = west + incr;
  23. e2 = e1 + incr;
  24. meters = G_distance(west, 0.0, e1, 0.0) +
  25. G_distance(e1, 0.0, e2, 0.0) + G_distance(e2, 0.0, east, 0.0);
  26. return meters;
  27. }