ジャミング中に敵機体を発見したら、ターゲットの座標をチャンネルに送信し、味方機が集結するようにしたい。 既に完成系がnas_Bさんによって公開されているが、これも試しに自分で組んでみた。
とりあえず、敵機体発見時に座標取得してチャンネル送信するようにした。 このとき、時間も一緒に送信しておき、受信側が時間を見て20秒以上経過していればチャンネルの値をクリアするようにした。 あとは肝心の移動方向の決定だ。 三角関数が全く分からないので、使わずに集結する方法を考える。 ジャミング中はレーダーの認識範囲が狭くなるとはいえ、50〜100m程度はあるので、厳密に方向を知る必要は無い。 およそ方向があっていれば、敵機体を発見出来る。 ということで、自機座標とターゲット座標の差を見て、45度刻みの8方向のうち、どこに向かうかを決めることにする。 以下、その方法などについて書いてみたが、かなり分かりづらくなってしまった。 内容は「続きを読む」の中に。
まずはX座標差とY座標差の符号から、上下左右の方向を決める。 X座標は右側が大、Y座標は下側が大なので、X座標差の符号とY座標差の符号が、-+なら上、--なら右、+-なら下、++なら左とする。 カウンタ入力の「自機の向き」で得られる値が上向きが±180度、下向きが0度なので、向かう方向が上なら-180、右なら-90、下なら0、左なら90としておく。 続いて、X座標差の絶対値からY座標差の絶対値を引いて、値が小さければ45度加算する。 自機から斜め方向にいるなら、X座標差の絶対値とY座標差の絶対値は等しくなるからだ。 これで方向が得られるので、あとは旋回して向きをあわせれば良い、のだがここで詰まった。 自機が上向きだと、+180と-180と大きく値が変わってしまうため、計算がおかしくなり、上向きで右旋回と左旋回を繰り返してしまう。 仕方なく右旋回のみとしたが、旋回に時間がかかる。 急速旋回は慣性が残って方向がずれるため使えない。
うーん、チップ数はnas_Bさんのものの倍近く、精度も駄目、とこれでは使い物にならない。 諦めてnas_Bさんの公開されたものを積もうか。
|