- 締切済み
マイコンプログラムでGPS距離計算について
PICマイコン18F4620、コンパイラccsc、開発環境 MPLAB 以上でGPSのデータから距離と方位を計算するプログラムを組んでいるんですが。 距離の計算で、どうも値がおかしくなる個所があります ↓距離を求める関数 //ラジアン変換 mx = mx * PI / 1800000.0; my = my * PI / 1800000.0; tx = tx * PI / 1800000.0; ty = ty * PI / 1800000.0; //距離を求める ram = tx - mx; xx = sin(my) * sin(ty) + cos(my) * cos(ty) * cos(ram); // ↑ ここでxxに値を入れるんですが。デバックで変数の 値を見ても、Nanと表示されてしまって値が入らないです if (xx == -1.0) sig = PI; else if(xx == 1.0) sig = 0.0; else sig = atan(- xx / sqrt( - xx * xx + 1.0)) + PI / 2.0; kyori = ER * sig * 1000.0; 以下略 メイン文で、二箇所の緯度経度をlht座標に変換して距離を求める関数に値を投げます 上でも書きましたがxxに値を入れるんですが。デバックで変数の値を見ても、Nanと表示されてしまって値が入らないです.原因がよくわからないので詳しい方や有識者の方教えてくださいお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
NaN ですよね。 これは、Not a Number の略で、「数値として扱えないもの」です。数学系のライブラリ関数であれば、引数がオーバーフローしているときに返してきたりします。 変数の値が見えるのであれば、まずは、mx や my の中身から順次調べるのが良いのではと思いますが。 その次に、sin(my) や cos(my) etc. あと、ラジアン変換で出てくるのは、普通 180 ですが、これは、正しいですか?