Arduboyで狙い撃つぜ!(atan2テーブルの作り方) その7

レーダー法のテーブル作成プログラムを修正した。

atan2関数で各マス目への方向を求めるようにしたので、
角度の分割数や画面サイズの変更にも容易に対応できる。

import math

for y in range(23):
    for x in range(31):
        # 中心へずらす
        cx = x - 15
        cy = y - 11
        # ラジアンから度へ変換する
        angle = math.atan2(cy, cx) * 180 / math.pi
        # 角度を32分割したときにどの値になるか求める
        idx = round(angle / (360 / 32))
        # 今回は全てプラスの値にする
        if idx < 0:
            idx += 32

        print(format(idx, '#2') + ',', end='')

    print('')
19,19,20,20,20,20,21,21,21,21,22,22,23,23,24,24,24,25,25,26,26,27,27,27,27,28,28,28,28,29,29,
19,19,19,20,20,20,20,21,21,21,22,22,23,23,23,24,25,25,25,26,26,27,27,27,28,28,28,28,29,29,29,
19,19,19,19,19,20,20,20,21,21,21,22,22,23,23,24,25,25,26,26,27,27,27,28,28,28,29,29,29,29,29,
18,19,19,19,19,19,20,20,20,21,21,22,22,23,23,24,25,25,26,26,27,27,28,28,28,29,29,29,29,29,30,
18,18,19,19,19,19,19,20,20,20,21,21,22,23,23,24,25,25,26,27,27,28,28,28,29,29,29,29,29,30,30,
18,18,18,18,19,19,19,19,20,20,20,21,22,22,23,24,25,26,26,27,28,28,28,29,29,29,29,30,30,30,30,
18,18,18,18,18,18,19,19,19,20,20,21,21,22,23,24,25,26,27,27,28,28,29,29,29,30,30,30,30,30,30,
17,17,18,18,18,18,18,18,19,19,19,20,21,22,23,24,25,26,27,28,29,29,29,30,30,30,30,30,30,31,31,
17,17,17,17,17,17,18,18,18,18,19,19,20,21,22,24,26,27,28,29,29,30,30,30,30,31,31,31,31,31,31,
17,17,17,17,17,17,17,17,17,18,18,18,19,20,22,24,26,28,29,30,30,30,31,31,31,31,31,31,31,31,31,
16,16,16,16,16,17,17,17,17,17,17,17,18,18,20,24,28,30,30,31,31,31,31,31,31,31, 0, 0, 0, 0, 0,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
16,16,16,16,16,15,15,15,15,15,15,15,14,14,12, 8, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
15,15,15,15,15,15,15,15,15,14,14,14,13,12,10, 8, 6, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
15,15,15,15,15,15,14,14,14,14,13,13,12,11,10, 8, 6, 5, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
15,15,14,14,14,14,14,14,13,13,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1,
14,14,14,14,14,14,13,13,13,12,12,11,11,10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2,
14,14,14,14,13,13,13,13,12,12,12,11,10,10, 9, 8, 7, 6, 6, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2,
14,14,13,13,13,13,13,12,12,12,11,11,10, 9, 9, 8, 7, 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2,
14,13,13,13,13,13,12,12,12,11,11,10,10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2,
13,13,13,13,13,12,12,12,11,11,11,10,10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3,
13,13,13,12,12,12,12,11,11,11,10,10, 9, 9, 9, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3,
13,13,12,12,12,12,11,11,11,11,10,10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3,

前回と結果が異なるが、より自然な方向テーブルが作成できたのではないだろうか。
f:id:raohu69:20180701175223p:plain