プログラマメモ2 - programmer no memo2

角度から東西南北を求める その2 - 北北西へ進路をとれはヒッチコックだったと思う。 2010/04/02

Javaです。角度を指定してそこから東西南北を求めます。0度を北として考えてます。
iphoneとかで地図上の2点間から角度を求めてそこから東西南北を求めることができるかしらという試みのためです。
16分割です。

方位 - Wikipedia
sub -= Math.floor(sub / 360.0) * 360.0; - Flashゲーム講座&ASサンプル集【角度の計算について】

public class AAAA {

public static void main(String[] args) {

for (double d = -90; d <= 361; d+=0.5) {
System.out.printf("%.2f:%s %n", d, 東西南北を求める2(d));
}
}
static String 東西南北を求める2(double d角度) {
final double D = 22.5;
final double D2 = 22.5 / 2;
double d= d角度 + D2;// 指定された角度を中心として考えたため
d -= Math.floor(d / 360.0) * 360.0;

final String[] s = { "北", "北北東", "北東", "東北東", "東", "東南東", "南東", "南南東", "南",
"南南西", "南西", "西南西", "西", "西北西", "北西", "北北西" };
int i = (int)(d / D);
return s[i];
}

}



結果長いけど

-90.00度:方位(西)
-80.00度:方位(西)
-70.00度:方位(西北西)
-60.00度:方位(西北西)
-50.00度:方位(北西)
-40.00度:方位(北西)
-30.00度:方位(北北西)
-20.00度:方位(北北西)
-10.00度:方位(北)
0.00度:方位(北)
10.00度:方位(北)
20.00度:方位(北北東)
30.00度:方位(北北東)
40.00度:方位(北東)
50.00度:方位(北東)
60.00度:方位(東北東)
70.00度:方位(東北東)
80.00度:方位(東)
90.00度:方位(東)
100.00度:方位(東)
110.00度:方位(東南東)
120.00度:方位(東南東)
130.00度:方位(南東)
140.00度:方位(南東)
150.00度:方位(南南東)
160.00度:方位(南南東)
170.00度:方位(南)
180.00度:方位(南)
190.00度:方位(南)
200.00度:方位(南南西)
210.00度:方位(南南西)
220.00度:方位(南西)
230.00度:方位(南西)
240.00度:方位(西南西)
250.00度:方位(西南西)
260.00度:方位(西)
270.00度:方位(西)
280.00度:方位(西)
290.00度:方位(西北西)
300.00度:方位(西北西)
310.00度:方位(北西)
320.00度:方位(北西)
330.00度:方位(北北西)
340.00度:方位(北北西)
350.00度:方位(北)
360.00度:方位(北)
370.00度:方位(北)
380.00度:方位(北北東)
390.00度:方位(北北東)
400.00度:方位(北東)
410.00度:方位(北東)
420.00度:方位(東北東)
430.00度:方位(東北東)
440.00度:方位(東)
450.00度:方位(東)


北北西に進路を取れ 50周年記念 スペシャル・エディション [DVD]
B002PHBIDE

: