8

我正在另一个使用 AR 的 iPhone 应用程序中工作,并且我正在创建自己的框架,但是我在尝试获取第二个坐标相对于当前设备位置的角度时遇到了麻烦,任何人都知道可以帮我解决这个问题?

提前致谢!

4

2 回答 2

16

如果两点足够接近,并且远离两极,您可以使用一些简单的三角:

float dy = lat2 - lat1;
float dx = cosf(M_PI/180*lat1)*(long2 - long1);
float angle = atan2f(dy, dx);

编辑:我忘了提到latNand longN- 因此dxand dy- 可以是度数或弧度,只要你不混合单位。angle但是,总是会以弧度返回。当然,如果乘以 180/M_PI,则可以返回度数。

于 2010-09-28T02:24:56.757 回答
1

这是这段代码的android版本

import com.google.android.maps.GeoPoint;
    public double calculateAngle(GeoPoint startPoint, GeoPoint endPoint) {
        double lat1 = startPoint.getLatitudeE6() / 1E6;
        double lat2 = endPoint.getLatitudeE6() / 1E6;
        double long2 = startPoint.getLongitudeE6() / 1E6;
        double long1 = endPoint.getLongitudeE6() / 1E6;
        double dy = lat2 - lat1;
        double dx = Math.cos(Math.PI / 180 * lat1) * (long2 - long1);
        double angle = Math.atan2(dy, dx);
        return angle;
    }
于 2013-11-14T09:13:58.923 回答