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,
前回と結果が異なるが、より自然な方向テーブルが作成できたのではないだろうか。