如何在地球上获得从point1到point2的角度

时间:2015-03-24 06:41:30

标签: java geography

我花了很多时间在互联网上找到一种方法来做到这一点。通过存在的文档我写下面的代码,但它没有显示正确的角度。 什么问题?  enter image description here

private double angleFromCoordinate(double lat1, double long1, double lat2,
            double long2) {

        double dLon = (long2 - long1);

        double y = Math.sin(dLon) * Math.cos(lat2);
        double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
                * Math.cos(lat2) * Math.cos(dLon);

        double brng = Math.atan2(y, x);

        brng = Math.toDegrees(brng);

        brng %= 360;
        // brng = 360 - brng;

        return brng;
    }

已更新     以下代码的结果:

int angle = (int) angleFromCoordinate(36.288024, 59.615656
                    , 39.033659, 48.662504);
angle is '58'

1 个答案:

答案 0 :(得分:2)

方法Math.cosMath.sin的参数需要多个弧度。您正在将度数传递给此方法。您需要在方法开始时将度数转换为弧度。

private double angleFromCoordinate(double lat1, double long1, double lat2,
        double long2) {
    double lat1Rad = Math.toRadians(lat1);
    double long1Rad = Math.toRadians(long1);
    double lat2Rad = Math.toRadians(lat2);
    double long2Rad = Math.toRadians(long2);

然后使用新变量lat1Rad等等剩下的数学。