ball op• データ種: signal × points × table → table
• 呼び出し: import fullseye as fs; fs.ledger.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict' (実装を直接呼ぶなら import ballistics; ballistics.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict'、台帳から引くなら opsdrive.get("ballistic_vs_thrust"))
• GPU: なし(CPU 参照実装のみ)
同じ軌跡に「重力 + 抗力」(drag_fit)と「重力 + 抗力 + 一定の比推力」(thrust_fit)を当て、AIC(aic_from_rss)の差 ΔAIC = AIC_弾道 − AIC_推力 を返す。返り値 {"ballistic", "thrust"}(2 つの当てはめ)に "aic_ballistic", "aic_thrust", "delta_aic", "thrust_norm" を添える。判定は返さない(imgforensics と同じ流儀): 読み方は 節約則で、推力の模型はパラメータが 3 つ多いので雑音だけでも RSS を僅かに下げる —— 罰則 2Δk を超えて勝たない限り、単純な方(弾道)を採る。雑音だけの ΔAIC は −2Δk を下限に χ²(Δk) 近似の幅で散り(中央値は −2Δk + 1 ほど。C_d = 0 の壁に当たる当てはめが混じるので正確には混合分布)、推力側は弾道側の解から出発するので ΔAIC ≥ −2Δk が保たれる。「決定的」の慣用は 10(偽陽性 1 % を大きく下回る)だが、閾値は同梱せず呼び手が決める。推力側の RSS が離散化の床 rss_floor の 10 倍を下回る(雑音の無い、または格子より細かく解けた軌跡)ときは ValueError —— AIC が比べるのは雑音で、丸め屑ではない(雑音ゼロの真値に既定の dt で ΔAIC = +144 が出た、2026-10-23)。
空の入力(t が 0 要素)は ValueError。
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。
• アルゴリズムの正典(著者・年)と用途は上記ファミリ使い方ガイドに記載。
• poc_video_physics_consistency — py -3.11 examples/poc_video_physics_consistency.py
table を入力に取れる)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
ball)ball_params · impact_params · flight_vacuum · flight_ode · flight_simulate · flight_state_at · magnus_lift_coefficient · drag_coefficient_sphere
*Provenance: ballistics.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.