İki enlem / boylam noktası arasındaki mesafeyi hesaplamaya çalışıyorum. Çoğunlukla ben den çekti çalıştığını kod parçası var bu yazı ama nasıl çalıştığını gerçekten anlamıyorum.
İşte kod:
<?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;
?>
Birkaç sorum var:
- xa, ya, za nedir? 3D kartezyen bir düzlemde noktalar olduklarını anlıyorum ama neye göre? Dünyanın merkezi mi?
- Bu
cos($xa * $xb + $ya * $yb + $za * $zb)
noktalar arasındaki mesafeyi nasıl hesaplar? 2D'de bunu yapacağımı biliyorum:
Pythagorean Theorem
distance^2 = b^2 + a^2
distance = sqr((y2-y1)^2 + (x2 - x1)^2)
- Bu ne kadar doğru olacak? Diğer sayfada bunun hakkında bir tartışma vardı. Ancak, özellikle kullanıcıların 10m, 20m veya 50m gibi bir şey içinde olup olmadığını söylemek için mesafeyi kullanmak istiyorum. Bunu iyi bir doğrulukla yapabilir miyim?
- Ne için kullanmalıyım
$MeanRadius
? Bu makul bir değer mi? Bence bu değer dünyanın bir elipse olduğunu varsayar.