ADR 0021:主画布时间轴(时刻选择)
状态:已接受 日期:2026-08-12 关联:ADR 0013(星历模型可视化的坐标与时间约定,决策 6 被本 ADR 修订) 编号说明:成文时误与《UI 迁移到 Tauri 架构》同编 0014,2026-08-26 改编为 0021。
背景
用户需要拨动时间观察飞行器在轨道上的真实位置,且地球、月球使用真实位置。经原型(src/view/prototype_timeline.py,一次性分支留档)验证三个会合系行为变体后确定方案:会合系保持静态 CR3BP 几何(文献主流),真实公转平面由惯性系视图承担(ADR 0013 既有决策不变)。
决策
形态:画布下方新增 Qt 滑块(scrubber),选择物理时刻 t(et 秒),旁显 UTC。不做播放按钮。
作用对象:仅带
times_et的星历产物(design_orbit 标称星历、control_orbit 受控星历),飞行器 marker 在轨迹上走到 t 对应位置。初猜(CR3BP,无物理时间)不受时间轴影响;同屏无星历产物时时间轴灰显。两系行为:惯性系下飞行器点在
position_km轨迹上移动,另加月球此刻位置 marker 随 t 移动(月球轨迹仍整条显示,地球原点不动);会合系下轨迹静态,仅飞行器点沿线移动,地月/平动点标注不变。两系共享同一 t,切系不重置滑块。滑块区间:所有可见星历产物
times_et的并集;超出某产物范围的时刻该产物的飞行器点消失。渲染:拖动走全量重绘
render()+ 节流(拖动中约 10 Hz),不建增量渲染路径。
本 ADR 修订 ADR 0013 决策 6 中主画布不做实时播放/时刻交互的部分;GIF 导出工具不变。
修订(2026-08-26,v4.4.0 复核):Tauri 化后实现演进为前端 TimelineBar,
三处与本文明示的决策不再一致:时间轴带播放按钮(推翻决策 1 的“不做播放
按钮”);时刻数组由轨迹解析同源产出(period 均匀合成 / epochs / 行序推算),
不再限于带 times_et 的星历产物(放宽决策 2);GIF 导出已被画布 webm 录制
取代。其余决策不变。
修订(2026-08-30,多轨迹同屏设计,随结果层/固定层落地):时间轴时刻
基准定为两级——et 秒(J2000 起算)是唯一绝对基准。同屏出现任一带真实
历元的产物(星历段;转移弧经 TLI 历元 + trajectory_times 换算)时,时间轴
切为全局 et 钟,滑块区间取可见带历元产物时刻的并集(决策 4 的“并集”收窄为
此集合),无历元轨迹不参与时刻走查;仅当同屏全部产物都无真实历元(如族成
员)时,退化为相对时刻走查(period 均匀合成)。相对时刻与绝对时刻不混排。
彻底统一到 et、取消族相对走查的方案被否决:族走查是展示性功能,且初猜无真
实历元,强行造相位违背本 ADR“初猜不造物理上不存在的东西”的既有立场。
理由
会合系静态几何是脉动-旋转系的定义(ADR 0013 文献调研,Folta 2022 等),原型中的轨迹随月相旋转变体被否决,真实几何看惯性系即可,会合系看周期结构。
初猜无真实历元,用周期映射造相位会画出物理上不存在的东西。
全量重绘复用现有
render()单入口;仅一个 marker 移动,节流后体验够用,增量路径的残留元素类 bug 风险不值得。
后果
CanvasState需新增时刻字段,参与重绘判定;时间轴是画布状态而非某个视图的私产。惯性系时间轴依赖 SPICE 内核(查月球此刻位置),离线环境降级为无月球 marker。