Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

2点間の方角

2点間の方角を知りたくて調べていて,あるサイトにコードが書かれていたのですがなぜそのコードで求められるのかが理解できないです.
実際のコード
public static int getDirection(double latitude1, double longitude1, double latitude2, double longitude2) {
    double lat1 = Math.toRadians(latitude1);
    double lat2 = Math.toRadians(latitude2);
    double lng1 = Math.toRadians(longitude1);
    double lng2 = Math.toRadians(longitude2);
    double Y = Math.sin(lng2 - lng1) * Math.cos(lat2);
    double X = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lng2 - lng1);
    double deg = Math.toDegrees(Math.atan2(Y, X));
    double angle = (deg + 360) % 360;
    return (int) (Math.abs(angle) + (1 / 7200));
}
まずtoRadiansはリファレンスを読むと「度で計測した角度を、相当するラジアンに変換します。」とあります.
このメソッドの引数は経度,緯度だと思うので各値はdouble型の座標を表すものだと思います.
なのになぜ,座標を渡してラジアンに変換するのか。。。
その後のsin,cosを使った計算も分かりません.
arctanの所は2点間の角度を求める,ということしか分かりません(原理が分からない)
書いていて気づいたのですが,全部分からないですね笑
1行ごとに何をしているのかが全く理解できてないです.
プログラムではなく数学の知識ですが,教えて頂きたいです.

2

回答

155

閲覧

2件の回答

評価

0

すいません.
ガイドラインも読んで,よく考えたらここで聞くことではないかもしれないです.

評価

0

コードが理解できないのか、計算式が理解できないのかによるな
とりあえず三角関数のメソッドのJavadocを読む必要はありそうだが

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名