1. Qiita
  2. 投稿
  3. Java

2点間の距離と角度と座標の求め方

  • 94
    いいね
  • 18
    コメント

2点間の距離と角度と座標の求め方

位置情報の座標の求め方はこっちを合わせて参照すれば緯度経度も出せるんじゃないでしょうか

一年の以上の時を経て変数渡しのミスがとれました!
デバイス・言語に限らずデフォルトのWidgetから自由になりたいとおもったら、
sin、cos、tanから逃げられないと25くらいで気がついて、
慌てて三角関数の本を買ったけど結局、読んでない無学なプログラマは僕だけはないと思う。

なぜ高校の授業中にこち亀を呼んでしまったのかとか、
授業をすっぽかして、近所のファミブ(FamilyBookという大型レンタルビデオ・本・ゲーム等を扱う北関東とかにあるチェーン店)にいってしまったのかと嘆いてもしかたがない、親や先生の言う事は聞くべきですね。

ブログ等に昔メモったが、プログラミングで使うたびにQiitaに移していく。

Javaで記載しますので他言語は適時読み替えください。
Mathに当たるライブラリは一般的に商用でつかうような言語なら、まずありますので心配はいらないかと。

念のため直交座標ABの概念図を載せておきます。
Untitled (1).png

2点間の距離

理屈はいい公式がわかれば。
いやいや理屈は他の優秀なブログ等に譲る。

直交座標A(x,y)とB(x2,y2)の間の距離を求める関数

protected int getDistance(double x, double y, double x2, double y2) {
    double distance = Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y));

    return (int) distance;
}

2点間の角度

ABの角度を求める関数
protected double getRadian(double x, double y, double x2, double y2) {
    double radian = Math.atan2(y2 - y,x2 - x);
    return radian;
}
//radianをdegreeに変換
double degree = arcLineMargineRadian * 180d / Math.PI;

角度(θ)と距離が分かっている場合に座標Bを求める方法

θと距離から座標を求める処理
/*
  θ(degree)にMath.PI / 180を掛けているのはdegreeをradianに変換している
  radiusは半径である、距離とは半径を求めているのと同じ
*/
double  radian = degree * Math.PI / 180;
y2 = Math.sin(radian) * radius;
x2 = Math.cos(radian) * radius;

最後に

たぶんあってる。間違っていたら編集リクエストくらはいm(__)m