彈道的原始語言是「距離—時間曲線」
多數射手與彈道工程師習慣把彈頭行為想成「距離的函數」:1000 碼剩多少速度、掉多少密位。Ken Oehler 指出,若改成把行為看成「時間的函數」,資訊其實更完整。一條距離對時間(range versus time)的曲線就足以完整描述彈頭的距離、速度與減速:曲線在原點的初始斜率(一階導數)就是初速,曲線上任一點的斜率就是該時刻的速度,而曲線的二階導數就是阻力造成的減速。
這條曲線正是 Oehler System 88 的「母語」。系統在槍口附近使用三組天空感測器(skyscreen)量出曲線在原點的斜率,也就是初速;再以架設在下游一個或多個距離上的感測器,量出子彈到達這些距離所對應的時間。有了原點、初始斜率、以及一個遠距的「距離—時間」實測點,剩下的工作就是畫出一條同時滿足這三個條件的連續曲線。
彈道係數為什麼不能只在槍口附近量
傳統做法是先假設彈頭屬於某個阻力函數(drag function)家族——多半是 G1 或 G7——再用一個常數把實際彈頭的減速與那顆「神話般的標準彈」關聯起來,這個常數就是彈道係數。從初速出發,以假設的彈道係數把隱含的減速對時間積分得到速度—時間關係,再把速度對時間積分得到距離—時間關係,最後轉換成射手熟悉的「各距離剩餘速度與飛行時間」表格。
問題在於,彈道係數雖然常被引用,卻很少被真正理解,多數人的認知僅止於「越大越好」。業界有好幾種量測彈道係數的技巧,但每一種都困難且容易產生誤差。這正是延伸射程修正要迴避的坑:與其去量彈頭在某個速度下的減速,System 88 改為考慮彈道係數在「整段飛行到目標」這個過程中累積出來的總效果,用累積量來壓低誤差。這條「為什麼傳統路徑走不通」的推理,在姊妹篇〈延伸射程修正:為何需要,如何執行〉(/tech/extended-range-truing-why-how)中有完整展開。
逐次逼近:把外推變成內插
延伸射程修正的核心動作只有一個:System 88 量到初速與到遠距目標的實際飛行時間後,先用選定的既有阻力函數與傳統程序去預測「到該實測距離的飛行時間」,然後以逐次逼近(successive approximation)不斷調整彈道係數,直到預測的飛行時間與觀測到的飛行時間一致為止。
把這個結果畫成距離對時間的曲線,就得到一條同時滿足初始斜率、又確實通過實測「時間對距離」點的完整曲線。傳統程序的角色因此被降級了:它不再是從槍口一路外推到遠方目標的預測工具,而只是負責在兩個已知點之間做內插。曲線在中間距離上未必與真實行為完全吻合,但它已經被強制在遠端那一點上對齊——而遠端正是誤差最容易累積、也最要命的地方。
實例:用分段 G1 複製 G7 彈頭
Oehler 用一個純數值示範說明分段彈道係數的威力。假設一顆 C7(G7 彈道係數)為 0.250 的彈頭,初速 2800 fps,標準大氣。查表可知它大約在 1100 碼進入穿音速區。刻意退開這個麻煩的音速轉換區,取 900 碼:G7 給出的飛行時間是 1.367 秒;改用 G1 程序,C1 為 0.495 時可得到完全相同的 900 碼飛行時間。把兩者的飛行時間對距離畫出來,在約 1000 碼以內兩條曲線幾乎完全重合。如果你只需要預測到 1000 碼,到此為止就夠了。
但超過 1000 碼後差異就明顯了,此時需要對 C1 做「分段修正」。到 1350 碼時預測速度已衰減到約 1000 fps,該距離的 C7 飛行時間為 2.554 秒;把 C1 維持在 0.495 直到 1410 fps,再往下階降到 0.364,即可對上 1350 碼的飛行時間。此時兩條曲線一路重合到約 1400 碼——只用了一階梯,有效射程就從 1000 碼延伸到將近 1400 碼。
若要在一英里以上仍有正確的仰角,就得再加一階。G7 在 2000 碼的飛行時間是 4.730 秒;把 C1 保持在 0.364 直到 970 fps,再於更低速段改用 C1 = 0.693,即可對上 2000 碼的飛行時間。此時飛行時間一路吻合到 2000 碼、速度 840 fps;低於 840 fps 之後,彈道係數回復到初始值。
這套方法實際產出什麼
理論派或許喜歡看飛行時間曲線,但實務射手真正在意的是歸零仰角修正量。以上述例子換算成歸零修正量:1000 碼以內最大差異僅 0.03 密位(mil);1500 碼以內差異維持在 0.1 密位以下;2000 碼以內在 0.25 密位以下。也就是說,一組分段的 G1 彈道係數確實可以把一顆 G7 彈頭模擬到實用精度。
這個結論可以再推廣:既然分段 G1 能模擬 G7,它就能模擬任何彈頭。若你的解算軟體支援分段 G7,而彈頭本身更接近 G7,那麼所需的階梯修正量會更小、結果更好。反過來說,如果所選阻力函數本來就貼合這顆彈頭,分段出來的數值幾乎會是一個常數——分段量的大小本身就是「阻力函數合不合身」的指標。當輸入是實測初速與實測飛行時間時,得到的就是這顆受測彈頭的功能性描述。
要提醒的是:分段彈道係數這個概念存在多年,過去常被視為溫和無害的手續,但實際上每一階的變化都是突兀的跳躍。跳躍幅度取決於所假設阻力函數與受測彈頭實際行為的吻合程度;以 G1 對 G7 為例,兩者在穿音速區的差異相當顯著。在常見的「阻力係數對速度」圖上,G7 有尖銳的音速峰、G1 則平緩圓鈍;彈道係數的一階跳躍可以被理解為阻力係數曲線上的等效階梯。分段 G1 與一般 G1 在第一個速度分段點之前完全相同,到了分段點則出現彈道係數顯著下降、亦即阻力顯著上升——這個階梯的尖峰扮演的角色與 G7 音速峰類似,強迫兩條曲線在音速轉換之後重新對齊。曲線看起來不一樣,實際上也真的不一樣,但幸運的是它們給出的預測結果本質上相同。
軟體與測試規劃上的邊界
如果你手上沒有對應距離的初速與飛行時間資料呢?這正是 Oehler 打造 System 88 的理由:它用你自己的槍、在你自己的靶場,把這些數字量出來。System 88 的軟體會自動算出讓第一個飛行時間對上的彈道係數。若你的下游感測器架設在剩餘速度約為 1.2 至 1.1 馬赫的距離上,得到的彈道係數與初速可支撐到約 1.0 馬赫的準確仰角估算;而分段彈道係數的可靠預測範圍,最遠只到你「實際量到飛行時間」的那個距離。想讓仰角估算涵蓋整個穿音速區,就必須在子彈已經穿過那個難纏區域的距離上做測試。
System 88 可加購的 Extended Range Truing 程式將這個流程自動化,最多支援四個不同距離;以 SetupTruing.exe 安裝後會在桌面留下圖示。依原文(2016 年 7 月)當時的狀態,程式能完成計算並在畫面上顯示分段彈道係數,但所有輸入必須以鍵盤手動輸入、輸出僅顯示於螢幕,沒有列印報表也沒有詳細說明書。程式預期你先在相當於 1.2 馬赫的距離做第一次測試;要把射程延伸穿過音速區,則需在約 0.9 馬赫及更遠的距離追加測試。程式會處理各次測試之間不同的大氣條件、初速與距離。
Oehler 也提到一個現場限制:如果能在同一次測試中架設多個目標當然更理想,但以上述例子而言,中途彈道最高點約 100 英尺(約 30 公尺),要把感測器架到那個高度需要非常長的桿子。這是規劃靶場配置時必須先想清楚的實體限制。