指定の座標への移動:解説編2007年10月01日 06時30分32秒

以前、指定座標へ移動するプログラムを載せたが、その仕組み を簡単に解説する。まず、プログラムの解説をすると手順は以下の通り。
  1. 指定座標の角度を求める
  2. 指定座標の角度と自分の向いている角度との差を求める
  3. +30度以上なら右旋回、-30度以下なら左旋回、それ以外なら直進
プログラムの大部分は、1.の指定座標の角度を求める計算に費やしている。 角度を求める計算は、下の図のように、tanの逆関数arctanがあれば、 自分と目標のX座標とY座標の差分を得るだけで求めることができる。
しかし残念ながら、CHPにはそんな便利な関数は備わっていない。では、どう すればいいかと言えば、実は以下のような便利な式がある。
これは-90度から90度の範囲で、上のarctanに似た値を返す近似式だ。|x|とは xの絶対値のこと。この近似式の誤差は射撃には使えないほど大きいのだが、 移動に使う分には問題ない。プログラムの1.の部分はこの計算をやっているわ けだ。

注意する必要があるのが座標系の話。上の図は、学校の数学の時間に習うXY座 標系なのだが、CHPで使われているXY座標系は下の図のようにコンピューター で一般的に使われるYの正方向が下向きのものだ。さらに、0度方向はなぜか下 向きだ。なので、上の近似式で得られた角度をこの座標系に応じて変換する必 要がある。