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"}(두 피팅)에 "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.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.