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行ごとに何をしているのかが全く理解できてないです.
プログラムではなく数学の知識ですが,教えて頂きたいです.