Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function distance(fA, lA, fB, lB) {
  2.     // перевести координаты в радианы
  3.     var lat1 = fA * Math.PI / 180;
  4.     var lat2 = fB * Math.PI / 180;
  5.     var long1 = lA * Math.PI / 180;
  6.     var long2 = lB * Math.PI / 180;
  7.  
  8.     // косинусы и синусы широт и разницы долгот
  9.     var cl1 = Math.cos(lat1);
  10.     var cl2 = Math.cos(lat2);
  11.     var sl1 = Math.sin(lat1);
  12.     var sl2 = Math.sin(lat2);
  13.     var delta = long2 - long1;
  14.     var cdelta = Math.cos(delta);
  15.     var sdelta = Math.sin(delta);
  16.  
  17.     // вычисления длины большого круга
  18.     var y = Math.sqrt(Math.pow(cl2 * sdelta, 2) + Math.pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2));
  19.     var x = sl1 * sl2 + cl1 * cl2 * cdelta;
  20.  
  21.     return Math.atan2(y, x) * 6372795 /* earth radius */;
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement