Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z funkcją
Forum PHP.pl > Forum > Przedszkole
tomekmvr
Witam
Znalazłem funkcje, która oblicza odległość między współrzędnymi, ale nie potrafię wyświetlić wyniku z tej funkcji.

Kod funkcji:
  1. function calcDistanceVincenty($lat1, $lon1, $lat2, $lon2)
  2. {
  3. $deg = 0.017453292519943;
  4. $lat1 *= $deg;
  5. $lat2 *= $deg;
  6. $lon1 *= $deg;
  7. $lon2 *= $deg;
  8.  
  9. $a = 6378137; $b = 6356752.3142; $f = 1/298.257223563; // WGS-84 ellipsoid
  10.  
  11. $L = $lon2 - $lon1;
  12.  
  13. $U1 = atan((1-$f) * tan($lat1));
  14. $U2 = atan((1-$f) * tan($lat2));
  15.  
  16. $sinU1 = sin($U1); $cosU1 = cos($U1);
  17. $sinU2 = sin($U2); $cosU2 = cos($U2);
  18.  
  19. $lambda = $L; $lambdaP = 2 * M_PI;
  20.  
  21. $iterLimit = 50;
  22.  
  23. while (abs($lambda - $lambdaP) > 1e-12 && --$iterLimit > 0)
  24. {
  25. $sinLambda = sin($lambda);
  26. $cosLambda = cos($lambda);
  27. $sinSigma = sqrt(($cosU2 * $sinLambda) * ($cosU2 * $sinLambda) +
  28. ($cosU1 * $sinU2 - $sinU1 * $cosU2 * $cosLambda) *
  29. ($cosU1 * $sinU2 - $sinU1 * $cosU2 * $cosLambda));
  30.  
  31. if ($sinSigma == 0) return 0; // co-incident points
  32.  
  33. $cosSigma = $sinU1 * $sinU2 + $cosU1 * $cosU2 * $cosLambda;
  34. $sigma = atan2($sinSigma, $cosSigma); // was atan2
  35. $alpha = asin($cosU1 * $cosU2 * $sinLambda / $sinSigma);
  36. $cosSqAlpha = cos($alpha) * cos($alpha);
  37. $cos2SigmaM = $cosSigma - 2 * $sinU1 * $sinU2 / $cosSqAlpha;
  38. $C = $f / 16 * $cosSqAlpha * (4 + $f * (4 - 3 * $cosSqAlpha));
  39. $lambdaP = $lambda;
  40. $lambda = $L + (1 - $C) * $f * sin($alpha) *
  41. ($sigma + $C * $sinSigma * ($cos2SigmaM + $C * $cosSigma *
  42. (-1 + 2 * $cos2SigmaM * $cos2SigmaM)));
  43. }
  44. if ($iterLimit == 0) return false; // formula failed to converge
  45.  
  46. $uSq = $cosSqAlpha * ($a * $a - $b * $b) / ($b * $b);
  47. $A = 1 + $uSq / 16384 * (4096 + $uSq * (-768 + $uSq * (320 - 175 * $uSq)));
  48. $B = $uSq / 1024 * (256 + $uSq * (-128 + $uSq * (74 - 47 * $uSq)));
  49.  
  50. $deltaSigma = $B * $sinSigma * ($cos2SigmaM + $B / 4 * ($cosSigma * (-1 + 2 * $cos2SigmaM * $cos2SigmaM) -
  51. $B / 6 * $cos2SigmaM * (-3 + 4 * $sinSigma * $sinSigma) * (-3 + 4 * $cos2SigmaM * $cos2SigmaM)));
  52.  
  53. $s = $b * $A * ($sigma - $deltaSigma);
  54.  
  55. return $s;
  56. }


Wywołuje ją tak:
  1. calcDistanceVincenty('15.7334807', '50.9021924', '15.5261478', '50.8274316');


ale jak teraz wyświetlić wynik obliczony przez funkcję? proszę o pomoc.
lobopol
  1. echo calcDistanceVincenty('15.7334807', '50.9021924', '15.5261478', '50.8274316');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.