Я намагаюся обчислити відстань між двома точками широти / довготи. У мене є фрагмент коду, який здебільшого працює, який я витягнув з цієї посади, але я не дуже розумію, як це працює.
Ось код:
<?php
// POINT 1
$thisLat = deg2rad(44.638);
$thisLong = deg2rad(-63.587);
// POINT 2
$otherLat = deg2rad(44.644);
$otherLong = deg2rad(-63.911);
$MeanRadius = 6378 - 21 * sin($lat1);
$xa = (Cos($thisLat)) * (Cos($thisLong));
$ya = (Cos($thisLat)) * (Sin($thisLong));
$za = (Sin($thisLat));
$xb = (Cos($otherLat)) * (Cos($otherLong));
$yb = (Cos($otherLat)) * (Sin($otherLong));
$zb = (Sin($otherLat));
$distance = $MeanRadius * Acos($xa * $xb + $ya * $yb + $za * $zb);
echo $distance;
?>
У мене є кілька питань:
- що таке xa, ya, za? Я розумію, що вони є точками на 3D-декартовій площині, але де вони відносні? Центр землі?
- Як це
cos($xa * $xb + $ya * $yb + $za * $zb)
обчислює відстань між точками? Я знаю, що в 2D я би зробив це:
Pythagorean Theorem
distance^2 = b^2 + a^2
distance = sqr((y2-y1)^2 + (x2 - x1)^2)
- Наскільки точно це буде? Про це було якесь обговорення на іншій сторінці. Але я спеціально хочу використовувати відстань, щоб сказати, чи користувачі знаходяться в межах приблизно 10 м, 20 м або 50 м один від одного. Чи зможу я це зробити з хорошою точністю?
- Для чого я повинен користуватися
$MeanRadius
? Це розумна цінність? Я думаю, що це значення передбачає, що Земля - це затемнення.