2016年5月28日土曜日

むしあつめ

自分で遭遇したプログラムのバグを紹介する新コーナーです。1) 自分で遭遇すること 2)原因が判明していること 3)ネタとして使えること という基準なので、あんまり集まらないと思いますが。1と2についてはそのままの意味ですが、3について。例えば単純な演算で符号が逆だった等のちょっとしたミスの場合は、よほどのことがない限りは扱いません。

「コイツ馬鹿なことやってるなぁ」って笑ったり、似たようなことを扱っててバグった時の参考にしたり、各自てきとーに流して下さい。

記念すべき一つ目です。

事象

2点間の距離・方位を表示する際に、距離が約57倍ズレる。

原因

ソースコードをコピペした際に必要な修正を行っていなかった。

詳細

今回の処理は緯度・経度・高度(BLH)を2個与え、1点から他方を見た際の方位・仰角・距離(Azi Ele Dis)を出力する関数を作成した。内部処理では緯度・経度・方位・仰角の数値をラジアンで保存している。ラジアンで保存した場合は 1) 三角関数等に与える際にそのまま与えることができる 2) 都度変換した場合に誤差が蓄積されることを防げる といった利点がある。しかし人間が読む際には度(Degree)で表示したほうが直感的にわかりやすい場合が多く、今回もそのように変換を行った。その際、Aziの表示(変数を変換し表示処理に与える)をコピペしてEleやDisの表示処理を作成した。しかしDisはメートルで扱い、表示はキロメートルで行う仕様だったため、コピペした際に1000分の1にする処理は追加したが、Radian To Degreeの変換処理を削除し忘れた。そのためRadDeg変換の係数である約57倍された距離が表示された。

0 件のコメント:

コメントを投稿