Sto tentando di calcolare la distanza tra due punti di latitudine / longitudine. Ho un pezzo di codice che funziona principalmente che ho strappato da questo post ma non capisco davvero come funzioni.
Ecco il codice:
<?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;
?>
Ho un paio di domande:
- cosa sono xa, ya, za? Capisco che sono punti su un piano cartesiano 3D ma dove sono relativi? Il centro della terra?
- In che modo
cos($xa * $xb + $ya * $yb + $za * $zb)
calcola la distanza tra i punti? So che in 2D lo farei:
Pythagorean Theorem
distance^2 = b^2 + a^2
distance = sqr((y2-y1)^2 + (x2 - x1)^2)
- Quanto sarà accurato? C'è stata qualche discussione al riguardo nell'altra pagina. Ma in particolare voglio usare la distanza per dire se gli utenti si trovano all'interno di qualcosa come 10m, 20m o 50m l'uno dall'altro. Sarò in grado di farlo con una buona precisione?
- Per cosa dovrei usare
$MeanRadius
? È un valore ragionevole? Penso che quel valore presupponga che la terra sia un'ellisse.