2015/5/5

計算兩點之間連線的方位角[網路修改版]

網路上找到的程式碼算出來的都是與縱軸的最小夾角,加了一點程式碼讓結果變為與北方的方位角

private static double gps2d(double lat_a, double lng_a, double lat_b, double lng_b) {
  double d = 0;
        lat_a = lat_a * Math.PI / 180;
        lng_a = lng_a * Math.PI / 180;
        lat_b = lat_b * Math.PI / 180;
        lng_b = lng_b * Math.PI / 180;

        d = Math.sin(lat_a) * Math.sin(lat_b) + Math.cos(lat_a) * Math.cos(lat_b) * Math.cos(lng_b - lng_a);
        d = Math.sqrt(1 - d * d);
        d = Math.cos(lat_b) * Math.sin(lng_b - lng_a) / d;
        d = Math.asin(d) * 180 / Math.PI;

        if (lat_b >= lat_a) {
            if (d < 0) {
                d = 360 + d;
            }
        } else {
            d = 180 - d;
        }

        return d;
 }
http://ideone.com/woZsDA

0 意見:

張貼留言