2

現時点では、Google マップ上に 2 つのポイント (LatLng) A と B があります。次の画像のように問題を提示します。 ここに画像の説明を入力

垂直軸でデバイスを回転させるとき、点Aと点Bの間の角度@を取得したい ここに画像の説明を入力

ABと北軸(y軸)のなす角度を知りたいのですがどうすればいいですか? 角度を取得する関数を作成しましたが、null を返します:(

    public double getAngleTwoPoint(LatLng point1,LatLng point2){
    double lat1=point1.latitude;
    double lat2=point2.latitude;
    double long1=point1.longitude;
    double long2=point2.longitude;
    double deltaLong=long2-long1;
    double angle = Math.atan2(Math.sin(deltaLong)*Math.cos(lat2), Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(deltaLong));     
    return Math.toDegrees(angle);
}
4

2 に答える 2

4

この式を使用して、緯度経度間の角度を取得できます。

θ = atan2(sin(Δlong)*cos(lat2), cos(lat1)*sin(lat2) − sin(lat1)*cos(lat2)*cos(Δlong))

この式と Δlong = long2 - long1 を使用する前に、角度 (θ) をラジアンに変換する必要があることに注意してください。

atan2 は、ほぼすべてのプログラミング言語 (ほとんどが Math パッケージ) に見られる共通の関数です。通常、度とラジアンを変換する関数もあります (Math パッケージにもあります)。

atan2 は -π ... +π の範囲の値を返すことに注意してください。結果をコンパス方位に変換するには、θ に 180/π を掛けてから (θ+360) % 360 を使用する必要があります。% はモジュラス除算です。除算の余りを返す演算。

次のリンクは、緯度と経度を含む数式の優れたリソースです。また、数式の Javascript 実装も提供します。実際、答えはこのページの情報に基づいています。

http://www.yourhomenow.com/house/haversine.html

于 2013-11-14T08:50:04.410 に答える
0

三角形がある場合

CB
A

AB と y 軸の間の角度は CAB 角度に等しくなります。tg(CAB) = BC/AC、角度が必要なので、実際に求めているのは arctg(BC/AC) です。

于 2013-11-14T08:49:49.683 に答える