前回はミサイル(誘導弾)の誘導ロジックを取り上げた。ミサイルは誘導制御機構と動力源を内蔵している形が普通だから、撃った後でもある程度の修正が効く。では、今回のお題である爆弾(ここでは、誘導機構を持たない自由落下爆弾を指す)や銃弾・砲弾の場合にはどうなっているのだろうか。

銃弾・砲弾の場合

まず、銃弾・砲弾の話から始める。サイズ(口径)は、小さいものでは5mmを下回るところから存在するし、大きいものでは80cmに達するものもあった。いずれにせよ、装薬と呼ばれる火薬を起爆させて、その燃焼ガスの力で弾を撃ち出すところは同じである。

基本的に、銃弾・砲弾を飛ばす手段は撃った瞬間に与えられたエネルギーがすべてである。そして、撃った後の修正が利かないので、最初から精確に狙いをつけておかなければならない。最近では例外も出てきているが、その話を持ち出すとややこしくなるのでおいておく。

誘導砲弾を使わないで銃弾・砲弾を撃つ場合の射撃管制を煎じ詰めると、銃身や砲身を指向する向きを割り出す作業ということになる。正しい方向に狙いをつけて撃てば、弾は当たる。ところが、それが簡単ではない。

まず、弾にはそれ自身の質量があるから、撃った弾は引力によって少しずつ落下する。射距離が短い場合、銃身や砲身を直接、目標に指向して撃つから、まだしもわかりやすい。拳銃を撃つ場合のことを考えてみれば理解しやすいと思う……実際にやったことはないけど。

ところが、射距離が伸びてくると、弾道の落下という問題が出てくる。ということは、射距離が長くなるにつれ、それに応じて目標よりいくらか上を狙って撃つ必要があるわけだ。弾道が落下して、ちょうど目標の位置に来るようにしなければならないから。その修正量はもちろん、射距離に応じて変わる。

さらに射距離が伸びてくると、直接狙ったのでは届かないので、斜め上方に向けて弾を撃ち出す。すると、弾は弾道飛行して飛んでいく。たぶん、「銃」に分類される武器は射程距離が短いから、こういう撃ち方はしない。「砲」に分類される武器に限られる話だろう。

すると今度は、弾道計算が必要になる。基本的には物理学の問題で、弾の重量、初速、撃ち出す角度(砲身の仰角)がわかれば、飛翔する軌道は計算できる。

射距離が長くなった場合の落下量にしても、弾道飛行する場合の飛翔経路にしても、事前にデータをそろえておけば、狙いをつける作業が容易になる。そのデータのことを「射表」といい、実際に撃ってみてデータを収集して、射表を作って配布しておく。射撃の際には、目標までの距離などを測って、得られたデータと射表のデータを照合して、狙う位置、あるいは砲身を指向する角度を決める。それが射撃管制システムの仕事になる。

  • 訓練でM109A6 Paladinを撃つ米国の陸軍兵 Photo:U.S. Army by Gertrud Zach

弾が逸れる外部の原因

ただし実際には、外的な影響によって弾がそれることがある。例えば、風の影響は避けられない。ということは、射表のデータを使って狙いをつけた後で、風向・風速のデータに応じて風上側に少し狙いを修正する作業が必要になるわけだ。もちろん、風が強い場合ほど修正量は大きくなる。

実際には、撃つ場所とその先で同じように風が吹いているとは限らないのだが、それはどうにもならない。撃ってみて、外れたら修正するしかないだろう。

また、射距離が極端に長くなると、地球の自転による影響も出てくる。しかもこれは、撃つ方向によって影響の度合が違ってくるはずだ。また、長射程の弾道飛行ほど弾道の頂点は高い位置になるので、その分だけ空気が薄くなる。ということは、大気密度の影響も考慮しなければならない。これは事前にデータをそろえておくことができそうだ。

つまり、射撃管制システムのロジックには、こういった外的要因に基づく修正の仕組みも必要になるわけだ。

実際には、射距離が短ければ射撃位置と目標を結ぶ直線、射距離が長ければ射撃位置と目標を結ぶ弾道を割り出した上で、弾道の落下、風向・風速、地球の自転、大気密度といったファクターを算入して修正をかけることになると思われる。そういう計算をやって始めて、銃身や砲身を指向すべき向きがわかる。

昔は、そのロジックを機械式計算機という形で作り込んでいた。だから、ロジックを修正するには計算機をごっそりつくり直す必要があった。しかし、今ならもちろんコンピュータでやれるし、ロジックの修正はソフトウェアの手直しで済む。

空中戦での機関砲射撃

ここまでは話をシンプルにするために、目標は動かないという前提で書いた。ところが実際には、動いている目標に向けて弾を当てなければならない場面はしばしばある。

例えば、戦闘機同士(戦闘機と爆撃機でもいいけど)が機関銃や機関砲で撃ち合う場合。自分も相手も飛行中だから、常に動いている。

仮に、双方とも水平直線飛行していて真後ろから撃つという「最も易しい条件」を設定した場合でも、目標を照準器にとらえて撃ったのでは当たらない。前回に書いたように、弾道は一直線ではなくて、少しずつ落下するからだ。そして実際の空中戦では、そんな易しい場面は滅多にない。

例えば、敵機の真後ろについて撃っても、敵機が直線飛行をしていなければ弾は当たらない。しかも、撃った弾が敵機のところに到達するまでにはなにがしかの時間がかかる。

そこで、敵機の未来位置と、そこに弾が届くまでに要する時間を考慮に入れて、敵機の前方を狙って撃つ必要がある。いわゆる見越し角射撃で、それを計算するのが照準ロジックである。

口でいうのは簡単だが、これをやるには「敵機までの距離」「敵機の移動方向と角速度」「自機の弾速」といったデータが必要である。昔のパイロットは、それを経験とカンに基づいてやっていた。それでは、ベテランになるまで生き延びるか、敵機にギリギリまで肉薄する術を身につけるかしないと、空中戦で勝てない。

そこで、最初は機械で、後にレーダーとコンピュータを組み合わせて、前述したような計算を行い、どこを狙えばよいかをパイロットに教える仕組みができた。本稿のテーマはソフトウェアのロジックの話だから、機械的に実現していた時の話は割愛する。

レーダー仕掛けの射撃管制システムであれば、そのレーダーを使って敵機を捕捉・追尾する。それによって敵機までの距離や敵機のベクトルが得られるので、それに基づいて狙うべき場所を計算する。その情報に基づき、狙うべき場所をHUD(Head Up Display)か何かに表示してやればよい。

陸上や艦上の機関砲で航空機を撃つ場合の考え方も、基本的には同じである。ときには、敵機を捕捉・追尾するためのレーダーとは別に、自分が撃った弾を追尾するレーダーを用意して、外れそうになったら修正する、という仕組みを取り入れているものもある。

艦艇同士が大砲を撃ち合う場合にも、未来位置を予測して撃たなければならないのは同じである。ただし航空機同士で撃ち合う場合と違い、艦艇は必ず水面上にいるから、2次元の話で済む。