Guest User

Untitled

a guest
Oct 21st, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.92 KB | None | 0 0
  1. float TinyGPS::distance_between (float lat1, float long1, float lat2, float long2)
  2. {
  3.   // returns distance in meters between two positions, both specified
  4.   // as signed decimal-degrees latitude and longitude. Uses great-circle
  5.   // distance computation for hypothetical sphere of radius 6372795 meters.
  6.   // Because Earth is no exact sphere, rounding errors may be up to 0.5%.
  7.   // Courtesy of Maarten Lamers
  8.   float delta = radians(long1-long2);
  9.   float sdlong = sin(delta);
  10.   float cdlong = cos(delta);
  11.   lat1 = radians(lat1);
  12.   lat2 = radians(lat2);
  13.   float slat1 = sin(lat1);
  14.   float clat1 = cos(lat1);
  15.   float slat2 = sin(lat2);
  16.   float clat2 = cos(lat2);
  17.   delta = (clat1 * slat2) - (slat1 * clat2 * cdlong);
  18.   delta = sq(delta);
  19.   delta += sq(clat2 * sdlong);
  20.   delta = sqrt(delta);
  21.   float denom = (slat1 * slat2) + (clat1 * clat2 * cdlong);
  22.   delta = atan2(delta, denom);
  23.   return delta * 6372795;
Add Comment
Please, Sign In to add comment