Rumah >Java >javaTutorial >Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud, Longitud dan Altitud?

Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud, Longitud dan Altitud?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 04:18:30494semak imbas

How to Calculate Distance Between Two Points Using Latitude, Longitude, and Altitude?

Mengira Jarak antara Dua Titik Menggunakan Latitud dan Longitud

Untuk mengira jarak antara dua titik dengan tepat berdasarkan latitud dan longitudnya, adalah penting untuk mempertimbangkan kelengkungan permukaan bumi. Kaedah Haversine, formula yang terkenal, menangani kelengkungan ini dan memberikan hasil yang tepat.

Kod Dommer

Kod Dommer menggunakan formula Haversine untuk mengira jarak. Walau bagaimanapun, ia tidak mengambil kira sebarang perbezaan ketinggian antara kedua-dua titik.

Pelaksanaan Disyorkan

Untuk trek GPS atau aplikasi dengan ketinggian merupakan faktor, pertimbangkan ini diubah suai pelaksanaan:

<code class="java">public static double distance(double lat1, double lat2, double lon1,
        double lon2, double el1, double el2) {

    final int R = 6371; // Radius of the earth
    
    double latDistance = Math.toRadians(lat2 - lat1);
    double lonDistance = Math.toRadians(lon2 - lon1);
    double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
            + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
            * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double distance = R * c * 1000; // convert to meters

    double height = el1 - el2;

    distance = Math.pow(distance, 2) + Math.pow(height, 2);

    return Math.sqrt(distance);
}</code>

Kod ini menggabungkan kedua-dua formula Haversine dan perbezaan ketinggian untuk mengira jarak antara dua titik dengan tepat.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud, Longitud dan Altitud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn