Saya mencoba menghitung jarak antara dua titik lintang / bujur. Saya memiliki sepotong kode yang sebagian besar berfungsi yang saya tarik dari pos ini tetapi saya tidak begitu mengerti cara kerjanya.
Ini kodenya:
<?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;
?>
Saya punya beberapa pertanyaan:
- apa itu xa, ya, za? Saya mengerti bahwa itu adalah poin pada pesawat cartesian 3D tetapi di mana mereka relatif? Pusat bumi?
- Bagaimana cara
cos($xa * $xb + $ya * $yb + $za * $zb)
menghitung jarak antara titik-titik? Saya tahu bahwa dalam 2D saya akan melakukan ini:
Pythagorean Theorem
distance^2 = b^2 + a^2
distance = sqr((y2-y1)^2 + (x2 - x1)^2)
- Seberapa akurat hal ini? Ada beberapa diskusi tentang itu di halaman lain. Tapi saya secara khusus ingin menggunakan jarak untuk mengetahui apakah pengguna berada dalam jarak 10m, 20m, atau 50m. Apakah saya dapat melakukan ini dengan akurasi yang baik?
- Apa yang harus saya gunakan
$MeanRadius
? Apakah itu nilai yang masuk akal? Saya pikir nilai itu mengasumsikan bahwa bumi adalah elipse.