(57)【要約】【課題】本発明は、発射物が所望の地点で作用するように、発射物の想定し得る２つの仰角及び関連づけられた飛行時間を準実時間で計算する方法に関する。【解決手段】本発明は、発明の一部ではない従来技術による方法で、発射物の発射方向の方位角を決定することから始まる。発射物の発射方向の仰角及び飛行時間は、軌道に沿った位置及び関連付けられた時点を離散的に適時に計算をする計算部、及び第１の仰角方向を設定し、発射物の位置および飛行時間の計算を監視し、前記計算を中断する論理部の２つの主要部に区分される処理で計算され、上記中断は、中心に上記所望の地点を有する承認円内に上記発射物が位置し、仰角方向及び飛行時間の現在の値を解として決定されるときに行われるか、または計算された発射物の位置が所定の境界条件の外側にあるときに行われる。次いで、論理部は、２つの解が見つかるまで第２の仰角方向を設定する。
2006519358.tif 000002
【特許請求の範囲】
【請求項１】
発射物を所望の地点で作用させるように、該発射物の想定し得る２つの仰角及び関連づけられた飛行時間を準実時間で計算する方法であって、
前記発射物の発射方向がある垂直面（ＸＺ平面）の方位角が、従来技術による方法、例えば、該発射物が作用すべきターゲットの方向を直接測定することによって決定され、
原点が前記発射物の発射地点に固定され、Ｘ軸が水平面と平行に固定され、
前記仰角及び飛行時間は、計算部及び論理部の２つの主要部に区分される処理で計算され、
該計算部は、前記発射物の直径（ｄ）、質量（ｍ）、空気抵抗係数（Ｃｄ）、及び発射速度（Ｖｌａｕｎｃｈ）から始めて、軌道上の発射物の位置及び関連付けられた飛行時間を離散的に適時に計算し、
論理部は、該論理部での最大誤差（ａｃｃ）、所望の高さの下限値（ｌｈ）、前記ターゲットまでの水平距離（ｘｐ）、および該ターゲットに対する相対高さ（ｚｐ）から始めて、
第１の仰角方向（αｌａｕｎｃｈ）を設定し、
発射物の位置および飛行時間の計算を監視し、
前記計算を中断し、ここで、前記中断は、
中心に前記所望の地点を有し、半径が該論理部の誤差（ａｃｃ）の値の半分に等しい承認円（circle of acceptance）内に該発射物が位置し、仰角方向及び飛行時間の現在の値が解として決定されるときに行われるか、または
計算された発射物の位置が所定の境界条件の外側にあるときに行われ、
その後、２つの解が見つかるまで第２の仰角方向を設定することを特徴とする方法。
【請求項２】
前記発射速度（Ｖｌａｕｎｃｈ）の少なくとも４倍の値で除算された前記最大誤差（ａｃｃ）として、前記計算部で用いられる時間ステップ（ｔｔｉｃｋ）を最初に計算することを特徴とする請求項１に記載の方法。
【請求項３】
確実に解の最小仰角以下である角度を第１の仰角として固定、例えば、−９０°に固定することを特徴とする請求項１または２に記載の方法。
【請求項４】
軌道上における位置を以下のように反復することを特徴とする方法であって、
Ｖｘ＝Ｖ＊ＣＯＳ（α＊ｄｅｇ２ｒａｄ）−ｔｔｉｃｋ＊（ｋｆ＊Ｖ２＊ＣＯＳ（α＊ｄｅｇ２ｒａｄ）／ｍ）、
Ｖｚ＝Ｖ＊ＳＩＮ（α＊ｄｅｇ２ｒａｄ）−ｔｔｉｃｋ＊（ｇ＋ｋｆ＊Ｖ２＊ＳＩＮ（α＊ｄｅｇ２ｒａｄ）／ｍ）、を、
Ｘｖ＝Ｘｖ＋Ｖx＊ｔｔｉｃｋ、
Ｚｖ＝Ｚｖ＋Ｖz＊ｔｔｉｃｋ、
ｔ＝ｔ＋ｔｔｉｃｋ、に与え、ここで、
Ｘｖは最も直近に計算されたＸ方向の位置であり、Ｚｖは最も直近に計算されたＺ方向の位置であり、
Ｖｘは最も直近に計算されたＸ方向の速度であり、Ｖｚは最も直近に計算されたＺ方向の速度であり、
【数１】
2006519358.tif 000008
は最も直近に計算され、結果的に得られたＸＺ平面での速度であり、
α=ＡＴＡＮ（Ｖｚ／（Ｖｘ＋１＊１０−２０））＊ｒａｄ２ｄｅｇであり、
ここで、ｄｅｇ２ｒａｄは角度からラジアンへの変換を意味し、ｒａｄ２ｄｅｇはその逆を意味し、
ｋｆ＝Ｃｄ＊ρ＊ａｒｅａ／２は、結果的に得られた空気抵抗係数であり（ρは空気密度に等しい）、
ｍは質量であり、ｇは重力加速度であり、
αはαｌａｕｎｃｈに固定され、Ｖは開始時間ｔ＝０でＶｌａｕｎｃｈに固定されることを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記最も直近に計算されたＸ方向の位置（ｘｖ）がＸ方向におけるターゲットまでの距離（ｘｐ）よりも大きくなり、前記開始位置とＸ方向のターゲット位置との距離が０でなくなるまで前記反復処理が続き、その後、第１の解がある軌道についての仰角及び飛行時間で見つかったことが確定することを意味する、前記軌道が前記承認円内にあるか否かの判定、または該軌道が該ターゲットの上にあるかまたは下にあるかの判定がなされることを特徴とする請求項４に記載の方法。
【請求項６】
前記軌道がターゲットの下にある場合、より大きな仰角を新たに選択することを特徴とする請求項５に記載の方法。
【請求項７】
前記軌道がターゲットの上にある場合、軌道をターゲットの下にする直前の仰角に戻り、前のステップの増分の一部（例えば、１０分の１）である仰角方向のステップの増分でもって軌道に沿った位置及び時間の一連の計算を新たに始めることを特徴とする請求項５に記載の方法。 
【請求項８】
前記解が第１の解である場合、前記第１の仰角が９０°、すなわち、真上方向の場合であり、同じ仰角が選択されるときを除いて、別の仰角を選択することによって始まる第２の解の計算を開始することを特徴とする請求項５に記載の方法。
【請求項９】
前記最も直近に計算されたＺ方向の位置（ｚｖ）がＺ方向におけるターゲットまでの距離（ｚｐ）よりも小さくなり、αが０よりも小さくなると共に、前記開始位置とＸ方向のターゲット位置との距離が０でなくなるまで前記反復処理が続き、その後、第２の解がある軌道についての仰角及び飛行時間で見つかったことが確定したことを意味する、前記軌道が前記承認円内にあるか否かの判定、または該軌道が、Ｘ方向において、開始位置から見て、該ターゲットの位置の手前側または向こう側にあるかどうかの判定がなされることを特徴とする請求項８に記載の方法。
【請求項１０】
前記軌道がＸ方向においてターゲットの向こう側にある場合、より大きな仰角を新たに選択することを特徴とする請求項９に記載の方法。
【請求項１１】
前記軌道がＸ方向においてターゲットの手前側にある場合、軌道をターゲットの向こう側にした直前の仰角に戻り、前のステップの増分の一部（例えば、１０分の１）である仰角方向のステップの増分でもって軌道に沿った位置及び時間の一連の計算を新たに始めることを特徴とする請求項９に記載の方法。
【請求項１２】
前記仰角の増加の選択は仰角の増加とともに減少することを特徴とする請求項６または１０に記載の方法。 
【請求項１３】
前記計算において、温度、気圧、及び空気湿度に依存して変化する空気抵抗係数（Ｃｄ）を用いることを特徴とする請求項１〜１２のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算された仰角及び飛行時間を使って、軌道上の発射物を距離及び高さが既知の地点において準実時間で作用させる方法に関する。本方法は、発射物を放つための総合システムにおけるＰＣベースのサポートまたは構成要素のいずれかとして用いることができる。
【背景技術】
【０００２】
本明細書において、横方向の位置決め又はアラインメント（方位角）に関しては論じないが、従来技術による方法において、例えば、ターゲットに対する方向を直接測定することによって行われると仮定する。 
【０００３】
ここで、最適化する方法は、本質的に、軌道に沿った位置及び関連付けられた時点を離散的に適時に計算（discretely timed calculate）する計算部、及び第１の仰角方向を設定し、計算部での計算を監視し、計算された位置が所定の限界値の外側にあるときにその計算を中断し、その後、第２の仰角方向の設定等を行う論理部の２つの部分から構成される。論理部は、仰角方向及び飛行時間の形態で２つの解を決定及び確定する。
【０００４】
この最適化する方法は、擲弾（てきだん）類／発射物の空気抵抗力パラメータの特性を特定できる程度に発射試験を受けた軌道システムに用いるためのものである。この方法はまた、空気抵抗力パラメータを実際に特定するためにも用いることができる。初速がより速い発射物については、発射試験によって、温度、気圧、及び空気湿度に対する空気抵抗力の想定し得る依存度を特定することができる。この種の確定された関係に基づいて、このような変化し得る空気抵抗力を本発明の変形例での計算に用いることができるが、これは、各時間ステップにおいてその時の高さが利用できるために可能となっている。
【０００５】
この方法は、ターゲットの測定位置に基づいて、ターゲットに到達させるために、発射装置がどのように向けられるべきかということに対して、迅速かつ選択された精度で応答するために用いることができる。この方法はまた、発砲から擲弾類/発射物がターゲットに到達するまでの軌道において必要とされる所要飛行時間についての出力データを供給する。
【０００６】
対抗的攻撃手段を用いて敵のミサイルを逸らせたいときには、所望の特定的な軌道パターンを生じる戦術的アイデアをもつことになろう。このパターンを達成するためには、発射装置をどのように向けるべきか、そして、意図する対抗手段の効果が発揮されるまでの時間を知る必要がある。この戦術的アイデアに基づいて、ターゲット位置を距離、高さ、及び発射方位で示すことは容易であるが、以前より公知の方法を用いてその位置に到達させることは容易ではない。このような対抗システムでは、脅威を発見してから自身の位置、例えば、船等の周囲の所定のターゲット位置で効果が求められるまでの時間は短く、多くの場合において非常に短い。これには、発射装置の位置決め又はアラインメントを計算し、かつ擲弾類の起爆時間を設定するためのシステムが非常に迅速である必要がある。そのようなシステムが本発明の着想の動機であった。しかしながら、本発明はまた、擲弾発射装置及び榴弾砲等の軌道を与える他のシステムにも用いることができるほか、自動火器等を用いて移動するターゲットと戦うための予測アルゴリズムのサポートとして用いることができる。出願人は、本発明たる、この創意ある方法は、全ての用途に関連するという明確な見解を有する。
【０００７】
本発明は、距離及び高さと、発射装置を直接制御することが可能な仰角とを置き換えることが可能であることを具体的に示す。擲弾類を変更可能な起爆時間設定で用いることにより、所望の時点において正確な位置に到達させることができる。艦砲の発射装置（naval launchers）を含む例では、チャフ（chaff． レーダ妨害片）を散乱させることができるほか、信号弾の炸薬（pyrotechnic charge）を起こすことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、多くの場合において不正確である信頼できない射程図（firing diagrams）の使用に代え、軌道上の発射物を距離及び高さが既知の地点で所望の時点で準実時間で作用させるという課題を解決するものである。
【課題を解決するための手段】
【０００９】
これは、発明を独立請求項から明らかとなるように構成することにより実現される。本発明の適切な実施形態は残りの請求項より明らかとなる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明を添付の図面を参照しながらさらに詳細に説明する。
【００１１】
本発明は、本質的に、計算部及び論理部の２つの部分から構成される（図１参照）。これらの部分は、相互に密接に関連付けられ、結び付けられて一まとめにされているが、これらの特性はそれぞれ、ある程度個別に説明することができる。
【００１２】
これら２つの部分が正しく起動し連続的に動作することができるためには、これらは最初に８つの初期パラメータ、すなわち、
（種目）                                              （変数名）
発射物直径ｄ                                          ｄ［ｍ］
質量                                                  ｍ［Ｋｇ］
発射速度                                              Ｖｌａｕｎｃｈ［ｍ／ｓ］
空気抵抗力係数                                        Ｃｄ
所望高さの下限値
（考え得るターゲット高さの下限値）                    ｌｈ［ｍ］
出力データの最大誤差                                  ａｃｃ［ｍ］
ターゲットまでの水平距離                              ｘｐ［ｍ］
ターゲットに対する相対高さ                            ｚｐ［ｍ］
を収集する必要がある。
【００１３】
まず、動的フェーズで用いられる時間ステップｔｔｉｃｋが計算される。この時間ステップは、論理部での最大誤差ａｃｃの使用に適合するような大きさに設計される。よって、発射速度Ｖｌａｕｎｃｈと最大誤差ａｃｃとの間でどの組み合わせが選択されるかに関わらず、論理部は常に、ａｃｃの大きさに基づいて比較がなされる正確な動作範囲で動作することができる。
【００１４】
計算部は、常時、ある仰角の軌道に沿った発射物の次の位置を計算する。論理部は、計算部を制御し、例えば、不要な計算を行うことを防止する。論理部は、よって、ある仰角で成功が得られなかった場合には、計算部の計算を中断し、そのかわり、選択された新たな仰角で一連の計算を新たに開始する。また、いくつかの異なる選択可能な方法で、新たな仰角がインクリメント（（変数の）値を増加させること）されるように制御する。計算部と論理部の関係は、図２において基本部分が要約されている。
【００１５】
図３を参照して、完全な論理チャートを以下に示すが、本発明は、図面上では状態と称する１２の異なる条件を用いて説明される。以下の個々の段落では、説明文と共にプログラムコードを示す。
【００１６】
［状態１］
Ｘｖ＝０．０（第１の軌道を確認する前に水平距離の零点規正をする［ｍ］）
ｚｖ＝０．０（第１の軌道を確認する前にターゲットに対する高さの初期値の零点規正をする［ｍ］）
ｔｔｉｃ＝ａｃｃ／（４＊Ｖｌａｕｎｃｈ）（軌道の離散的（連続的でない）な計算のための時間ステップ［ｓ］）
ｄｅｇ２ｒａｄ＝π／１８０（換算係数（角度からラジアン））
ｒａｄ２ｄｅｇ＝１８０／π（換算係数（ラジアンから角度））
ｐ＝１．２（空気密度［ｇ／ｍ３］）
ｇ＝９．８１（重力加速度［ｍ／ｓ２］）
ａｒｅａ＝π＊ｄ２／４（発射物の断面積［ｍ２］）
ｋｆ＝Ｃｄ＊ｐ＊ａｒｅａ／２（得られる空気抵抗係数）
ｆｉｎｄｓｅｃｓｏｌ＝０（０：第１の解を見つける、１：第２の解を見つける）
ｐａｓｓｆｉｒｓｔｈｉｔ＝０（第２の解の誤検出を防ぐためのフラグ（１：関数が起動される））
ｎｉｎｅｔｙｄｅｇｒｅｅｓｄｅｔｅｃｔｅｄ＝０（９０°での検出がなされたときを示すフラグ（初期値の零点規正をする））
α１＝０．０（第１の解の仰角（初期値の零点規正をする）［°］）
ｔｉｍｅｏｆｆｌｉｇｈｔ１＝０．０（第１の解の飛行時間（初期値の零点規正をする）［ｓ］）
α２＝０．０（第２の解の仰角（初期値の零点規正をする）［°］）
ｔｉｍｅｏｆｆｌｉｇｈｔ２＝０．０（第２の解の飛行時間（初期値の零点規正をする）（ｓ））
ｌｅｖｅｌｆｌａｇ３０＝０（状態７参照）
ｌｅｖｅｌｆｌａｇ６０＝０（状態７参照）
ｌｅｖｅｌｆｌａｇ７０＝０（状態７参照）
ｌｅｖｅｌｆｌａｇ８９＝０（状態７参照）
【００１７】
［状態２］
この状態は、確実に第１の軌道を正しく開始させる。
αｔｉｃｋ＝１（仰角に対するステップ変数の初期設定）
αｌａｕｎｃｈ＝−９０（仰角αｌａｕｎｃｈの初期値）
ｓｔａｔｅ＝３（次の状態＝状態３）
【００１８】
［状態３］
αｌａｕｎｃｈを新たに調整するごとに、以下のステップを行うことが必要となる。この状態は、状態２、７又は１１のうちの１つから起動される。
ｔ＝０．０（新たな軌道の各々の前に時間の零点規正をする。）
Ｘｖ＝０．０（次の軌道の前に水平距離変数の零点規正をする。）
Ｚｖ＝０．０（次の軌道の前に（ターゲットに対する）高さ変数の零点規正をする。）
ｓｔａｔｅ＝４（次の状態＝４）
【００１９】
［状態４］
この状態は、状態３、５又は１２のうちの１つから起動される。時間ｔ＝０．０において、α及びＶは、その時の軌道についての初期値が与えられる。
【００２０】
ｉｆ（ｔ＝＝０．０）
｛
α＝αｌａｕｎｃｈ（α（姿勢変数）の初期値はαｌａｕｎｃｈを基にして与えられる。）
Ｖ＝Ｖｌａｕｎｃｈ（Ｖ（軌道速度変数）の初期値はＶｌａｕｎｃｈを基にして与えられる。）
｝
【００２１】
次いで、現在の軌道上の次の位置が計算される。
Ｖｘ＝Ｖ＊ＣＯＳ（α＊ｄｅｇ２ｒａｄ）−ｔｔｉｃｋ＊（ｋｆ＊Ｖ２＊ＣＯＳ（α＊ｄｅｇ２ｒａｄ）／ｍ）
Ｖｚ＝Ｖ＊ＳＩＮ（α＊ｄｅｇ２ｒａｄ）−ｔｔｉｃｋ＊（ｇ＋ｋｆ＊Ｖ２＊ＳＩＮ（α＊ｄｅｇ２ｒａｄ）／ｍ）
【数２】
2006519358.tif 000003
α＝ＡＴＡＮ（Ｖｚ／（Ｖｘ＋１＊１０−２０））＊ｒａｄ２ｄｅｇ
Ｘｖ＝Ｘｖ＋Ｖｘ＊ｔｔｉｃｋ
Ｚｖ＝Ｚｖ＋Ｖz＊ｔｔｉｃｋ
ｔ＝ｔ＋ｔｔｉｃｋ
（ここで、ｄｅｇ２ｒａｄは、角度からラジアンへの変換を意味し、ｒａｄ２ｄｅｇはその逆を意味する）
【００２２】
ｉｆ（ｎｉｎｅｔｙｄｅｇｒｅｅｓｄｅｔｅｃｔｅｄ＝＝０）
｛
ｉｆ（ｚｖ＞ｚｐ）（９０°の仰角がまだ検出されておらず、かつｚｖがｚｐよりも大きくなった場合、テストを行って投射（throw）が真上に行われるか否かを確認する。）
｛
ｉｆ（（ｘｐ＝＝０）＆＆（αｌａｕｎｃｈ＞８９．９））
｛
α１＝９０．０（９０°の仰角についての第１の解が見つかる。現在の時間が収集される。）
ｔｉｍｅｏｆｆｌｉｇｈｔ１＝ｔ
ｎｉｎｅｔｙｄｅｇｒｅｅｓｄｅｔｅｃｔｅｄ＝１（仰角９０°が検出される）
ｓｔａｔｅ＝１２
｝
｝
｝
ｅｌｓｅ
｛
ｉｆ（ｚｖ＜ｚｐ）（前回のループにおいて９０°が検出された場合、発射物がｚｐの真上に位置する。ｚｖ＜ｚｐであるとき、完全に確実とするためにさらなるチェックがなされる。）
｛
ｉｆ（（ｘｐ＝＝０）＆＆（αｌａｕｎｃｈ＞８９．９））
｛
α２＝９０．０（９０°の仰角についての第２の解が見つかる。現在の時間が収集される。）
ｔｉｍｅｏｆｆｌｉｇｈｔ２＝ｔ
ｓｔａｔｅ＝１２
｝
｝
｝
ｉｆ（ｚｖ＜（ｌｈ−（２＊ａｃｃ）））（発射物が高さの下限値を越えるか否か及びその時期を決定するためのチェック。「−（２＊ａｃｃ）」はｚｐ＝ｌｈの場合に用いられる。）
ｓｔａｔｅ＝７（高さの下限値を越える。次の状態＝状態７）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝５（次の状態＝状態５）
｝
【００２３】
［状態５］
この状態では、仰角９０°を有さない解を探す。
ｉｆ（ｆｉｎｄｓｅｃｓｏｌ＝＝０）（第１または第２の解を探しているかに応じて選択。第１の解を探す。）
｛
ｉｆ（（ｘｖ＞ｘｐ）＆＆（ｘｐ＜＞０．０））
｛
ｓｔａｔｅ＝６（発射物はｘｐを越える。９０°ではない。次の状態＝状態６）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝４（全体的な判定のためのデータではない。軌道の確認を継続する。次の状態＝状態４）
｝
｝
ｅｌｓｅ
｛
ｉｆ（（α＜０．０）＆＆（Ｚｖ＜Ｚｐ）＆＆（Ｘｐ＜０．０））（第２の解を探す。発射物は、９０°ではない負の姿勢を有し、かつｚpを越えているか？）
｛
ｉｆ（Ｘｖ＜Ｘｐ）（下降移動中にＺｐを越し、かつ同時に、それがｘｐの前に起きたか？）
｛
ｓｔａｔｅ＝９（Ｙｅｓの場合、発射物が探していた位置（ｘｐ，ｚｐ）に対してどれだけ近接しているかを調べる。次の状態＝状態９）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝７（Ｎｏの場合、下降移動中にｘｐの先でｚｐを越える。次の状態＝状態７）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝４（全体的な判定のためのデータではない。軌道の確認を継続する。次の状態＝状態４）
｝
｝
【００２４】
［状態６］
この状態は、状態５からのみ起動され得る。
ｉｆ（ｚｖ＞ｚｐ）（発射物は、ｘｐを越え、それと同時にｚｐの上を越えたか？）
｛
ｓｔａｔｅ＝９（Ｙｅｓの場合、発射物が探していた位置（ｘｐ，ｚｐ）に対してどれだけ近接しているかを調べる。次の状態＝状態９）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝７（軌道は、第１の解を探し求めてサーチした位置をはるかに下回っている。次の状態＝状態７）
｝
【００２５】
［状態７］
αｌａｕｎｃｈの各値が解に辿り着かない場合は、結果として、この状態が起動される。この状態は、適切な軌道を再度新たに実行することができるようにαｌａｕｎｃｈをインクリメントする。αｌａｕｎｃｈの値の大きさに応じて、適切にインクリメントされる。αｔｉｃｋの値が大きすぎる場合、最終的な解は得られない。発射物の経路は、この状態の論理（ロジック）では単純に決定的な段階に達しない。値が低すぎる場合、タスクを解決するために必要な時間の消費が急激に増加する。αｌａｕｎｃｈが大きくなればなるほど、エラーが発生する危険性を完全になくすことができるように、αｔｉｃｋは低くなる必要がある。
【００２６】
Ｉｆ（αｌａｕｎｃｈ＞３０）
Ｌｅｖｅｌｆｌａｇ３０＝１
Ｉｆ（αｌａｕｎｃｈ＞６０）
Ｌｅｖｅｌｆｌａｇ６０＝１
ｉｆ（αｌａｕｎｃｈ＞７０
ｌｅｖｅＩｆｌａｇ７０＝１
ｉｆ（αｌａｕｎｃｈ＞８９）
ｌｅｖｅｌｆｌａｇ８９＝１
αｔｉｃｋ＝１０−ｌｅｖｅｌｆｌａｇ３０＊７−ｌｅｖｅｌｆｌａｇ６０＊２−ｌｅｖｅｌｆｌａｇ７０＊０．６−ｌｅｖｅｌｆｌａｇ８９＊０．３
αｌａｕｎｃｈ＝αｌａｕｎｃｈ＋αｔｉｃｋ
【００２７】
ｉｆ（αｌａｕｎｃｈ＞９０．０
｛
ｓｔａｔｅ＝８（探した位置（ｘｐ，ｚｐ）は、投射範囲（throwing range）の外側に位置する。次の状態＝状態８）
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝３（新たな軌道の実行。次の状態＝状態３）
｝
【００２８】
［状態８］
探した位置（ｘｐ，ｚｐ）は、投射範囲の外側にある。飛行角度および時間は、適切に０．０の値が与えられる。この状態が起動されると、状態の全処理が終了し、以下の結果が得られる。
αｌ=０．０
ｔｉｍｅｏｆｆｌｉｇｈｔ１＝０．０
α２＝０．０
ｔｉｍｅｏｆｆｌｉｇｈｔ２＝０．０
【００２９】
［状態９］
この状態は、解を見つけるために逐次近似を始める必要があると判定されたとき（５参照）、または第２の解が誤ることを防ぐ必要があるときのいずれかに起動される。ここでは、解が見つかったときも判定される（４．参照）。
【００３０】
まず、見つかった位置と現在の位置との半径方向の誤差が計算される（下記の１．参照）。状態１２では、第１の解が見つかったときに「ｐａｓｓｆｉｒｓｔｈｉｔ」フラグが１に設定される。軌道における次の位置を計算した直後に、状態９が起動され、この場合には、「ｄｉｆｆ」が「ａｃｃ／２」よりも小さい可能性が高い。誤った第２の解が間違って検出されることを防ぐために、この状態を中断し、そのかわりに、状態７に進む（３．参照）。
【００３１】
最終的に、最も第２の解である可能性があるものが承認可能であるか評価されるとき、２．では、「ｐａｓｓｆｉｒｓｔｈｉｔ」が現在まで構成してきた停止状態が解放されることを確認する。
【００３２】
【数３】
2006519358.tif 000004
ｉｆ（ｄｉｆｆ＞（ａｃｃ／２）＆＆ｐａｓｓｆｉｒｓｔｈｉｔ＝＝１）      ２．
ｐａｓｓｆｉｒｓｔｈｉｔ＝０
ｉｆ（ｄｉｆｆ＞（ａｃｃ／２）＆＆ｐａｓｓｆｉｒｓｔｈｉｔ＝＝１）      ３．
｛
ｓｔａｔｅ＝７
｝
ｅｌｓｅ
｛
ｉｆ（ｄｉｆｆ＜（ａｃｃ／２））
｛
ｓｔａｔｅ＝１０                              ４．
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝１１                              ５．
｝
｝
【００３３】
［状態１０］
この状態は、状態９からのみ起動され得る。そして、９０°ではない解が見つかる。「ｆｉｎｄｓｅｃｓｏｌ」＝０である場合（すなわち、第１の解が見つかる前）、α１及びｔｉｍｅｏｆｆｌｉｇｈｔ１には、それぞれ、αｌａｕｎｃｈ及びｔの瞬時値が与えられる。「ｆｉｎｄｓｅｃｓｏｌ」＝１の場合には、α２及びｔｉｍｅｏｆｆｌｉｇｈｔ２には対応する値が与えられる。
【００３４】
図３のフローチャートから、「ｆｉｎｄｓｅｃｓｏｌ」＝１のとき、状態１０により、その解の値が解２に直接与えられ、全ての実行が終了することが明らかである。同時に、下記のコードから、第１または第２の解のいずれが送られたかに関わらず、状態１０は常に状態１２に直接進むことが明らかである。この場合、いずれにしても、この相違は重要ではない。各状態１〜１２について提示されたコードラインは、実際、Ｃ＋＋で記述されたアプリケーションから直接抽出されたものである。また、プログラムは関数的な方法で終了できることが必要であると同時に、フローチャートは、関数を十分明確に記述することが可能なものでなければならない。
【００３５】
ｉｆ（ｆｉｎｄｓｅｃｓｏｌ＝＝０）
｛
α１＝αｌａｕｎｃｈ
ｔｉｍｅｏｆｆｌｉｇｈｔ１＝ｔ
｝
ｅｌｓｅ
｛
α２＝αｌａｕｎｃｈ
ｔｉｍｅｏｆｆｌｉｇｈｔ２＝ｔ
｝
ｓｔａｔｅ＝１２
【００３６】
［状態１１］
この状態は、状態９からのみ起動され得る。
【００３７】
状態９は、仰角が探した位置（ｘｐ，ｚｐ）を通過する直前に確立される。それゆえ、この探索は、まず、１ステップ逆行する必要がある（下記の１．参照）。次いで、αｔｉｃｋは、１０分の１だけ縮小される（２．参照）。このようにして、元の増分の１／１０だけが実行される（３．参照）。次の軌道の仰角について、仰角が点（ｘｐ，ｚｐ）の上にあるのか、または下にあるのかに応じて、状態７の通常のαｔｉｃｋと、ここで行われる縮小とは交互に協調しあう。このようにして、正しい解を決して逃さない一種の逐次近似が常に提供される。
【００３８】
αｌａｕｎｃｈ＝αｌａｕｎｃｈ−αｔｉｃｋ                    １．
αｔｉｃｋ＝αｔｉｃｋ／１０                                  ２．
αｌａｕｎｃｈ＝αｌａｕｎｃｈ＋αｔｉｃｋ                    ３．
ｓｔａｔｅ＝３
【００３９】
［状態１２］
この状態に入ったときにｆｉｎｄｓｅｃｓｏｌがまだ０である場合、第１の解のみが見つかっている。ｆｉｎｄｓｅｃｓｏｌ及びｐａｓｓｆｉｒｓｔｈｉｔはまず１に設定される。次いで、９０°が検出されたか否かが確認される。検出されている場合、処理は状態４に進み、垂直方向における軌道の次の位置が計算され得る。 
【００４０】
ｎｉｎｅｔｙｄｅｇｒｅｅｓｄｅｔｅｃｔｅｄ＝０である場合、処理は状態７に進み、次の仰角の確認が開始され得る。状態１２に入ったときにｆｉｎｄｓｅｃｓｏｌ＝１である場合、処理全体が終了する。ターゲットの位置及び特性パラメータについて利用可能な全ての想定可能な解は、この段階では、状態４、８、又１０においてすでに解かれている。
【００４１】
ｉｆ（ｆｉｎｄｓｅｃｓｏｌ＝＝１）
ｂｒｅａｋ
ｆｉｎｄｓｅｃｓｏｌ＝１
ｐａｓｓｆｉｒｓｔｈｉｔ＝１
ｉｆ（ｎｉｎｅｔｙｄｅｇｒｅｅｓｄｅｔｅｃｔｅｄ＝＝１）
｛
ｓｔａｔｅ＝４
｝
ｅｌｓｅ
｛
ｓｔａｔｅ＝７
｝
【００４２】
図３を参照して本発明の一実施形態について説明したが、以下に、ｘｚ平面上の軌道の２つの位置に発射物を示す図４を参照して説明及び所見を述べる。これらの発射物の位置での加速度及びその速度を示す。 
【００４３】
第１の位置計算の前に、α（α＝αｌａｕｎｃｈ）及びＶ（Ｖ＝Ｖｌａｕｎｃｈ）に初期値が与えられる。Ｖｘ及びＶｚの計算では（状態４参照）、α及びＶの前の値を用いて近似が行われる。次いで、Ｖｘ及びＶｚについて、α及びＶの新たな値が計算される。そして、Ｘｖ及びＺｖの単純な更新が行われる。最後に、ｔが上方向に調整される。 
【００４４】
図４における発射物の加速度ａは、
【数４】
2006519358.tif 000005
と表すことができ、この場合のｆは、空気抵抗
【数５】
2006519358.tif 000006
によって生じる反作用力である。よって、反対に作用する加速度は、
【数６】
2006519358.tif 000007
と表すことができ、これは、水平方向の加速度成分ａｘ＝−ｋｆ＊Ｖ２＊ＣＯＳ（α＊ｄｅｇ２ｒａｄ）／ｍ及び垂直方向成分ａｚ＝−ｋｆ＊Ｖ２＊ＳＩＮ（α＊ｄｅｇ２ｒａｄ）／ｍを与える。
【００４５】
最初に、時間ステップｔｔｉｃｋが計算され、ａｃｃ及びＶｌａｕｎｃｈについて最適化される。ｔｔｉｃｋ＝ａｃｃ／（４＊Ｖｌａｕｎｃｈ）となるようにｔｔｉｃｋの大きさを決定することによって、２つの隣接する位置間の半径距離はａｃｃよりも大きくならない。それゆえ、ａｃｃによって、２つの解の各々についての最終的な結果における最大誤差を十分に決定することができる。これには、空気抵抗力の作用について、非常に短い時間ステップを用いて軌道にある物体の古典的な微分方程式と比較する場合、この離散的な計算方法自体が十分に正確である必要がある。
【００４６】
ｔｔｉｃｋの計算において分母が２ではなく４を含むのは、仰角及び飛行時間の解がかなり正確であることを保証するために処理されなければならない２つの異なる誤差原因が存在するためである。１つは、古典的な微分方程式と本明細書中に記載の離散的な方法との計算の誤差によって生じ、誤差はａｃｃ／２よりも大きくはならない（次の段落を参照）。時間ｔｔｉｃｋ中の軌道における飛行経路を、ａｃｃの１／２ではなく、最大で１／４にすることができるｔｔｉｃｋを用いることによって、最大計算誤差をａｃｃ／２に低減することができる。
【００４７】
第２の誤差原因の保証された最大誤差はａｃｃ／２であり、この値に対して状態９における全ての比較がなされる。これによって、各解が仰角及び飛行時間によって確認されるとき、半径＝ａｃｃであり、かつその中心が入力データ、すなわち、（ｘｐ，ｚｐ）として示された位置に正確に配置される虚円内で軌道は確実に終了する。
【００４８】
本発明は、高さによって変化する風力、風向き、空気密度等の異なる付加的要因を、種々の方法で考慮することによって発展させることができる。基本的に、これらの場合においても図３のフローチャートが用いられる。このとき、軽微ながら変更が必要とされる。
【００４９】
本発明の精度を確認するために、本明細書中において提示された基本形式では、タスクについて作成された２つの方法によって考察した。第１の方法は、初期の、離散的かつ派生的なブロック（initial, discrete and derivative blocks）に、所望の目的のために個々のプログラムコードが与えられた、時間連続関数をシミュレートすることが可能なプログラムＡＣＳＬ（高度連続型シミュレーション言語（Advanced Continuous Simulating Language)）で作られたシミュレーションモデルである。第２の方法は、Ｖｉｓｕａｌ  Ｃ＋＋  ６．０、ＭＦＣ  Ｗｉｓａｒｄでプログラムされた発明を含む。
【００５０】
非常に多くのシミュレーション及び実行が行われた。そして、これら２つの方法およびＭａｔｈｃａｄ２０００というプログラムで確認された軌道の古典的な微分方程式から得られた結果が比較された。各々の比較では、最終的な位置の全てが、中心位置（ｘｐ，ｚｐ）を有する半径ａｃｃ円内にあった。
【図面の簡単な説明】
【００５１】
【図１】本発明を計算部及び論理部へと基本的に区分する様子を示す図である。
【図２】図１の計算部及び論理部の基礎レベルの構成を示す図である。
【図３】本発明の完全なフローチャートを示す図である。
【図４】ｘｚ平面の軌道上における発射物、並びに２つの近接した時点における発射物の加速度、速度及び関連付けられたベクトルを示す図である。
【図１】
2006519358.tif 000009
【図２】
2006519358.tif 000010
【図３】
2006519358.tif 000011
【図４】
2006519358.tif 000012
【国際調査報告】
2006519358.tif 000013
2006519358.tif 000014