ADR 0028:会合视图保留质心原点,感知问题在显示层修复
状态:已接受 日期:2026-09-02 关联:ADR 0013(星历可视化坐标与时间约定——质心归一约定维持不变);issue #469;PR #473
背景
用户反馈「画布上地球不在坐标系原点」(#469)。PR #473 曾尝试地心归一显示(显示层 +μ 平移:地球居原点、月球在 +1),本 ADR 初版记录了该决策。
深入审查发现地心化的代价超过收益:
+μ 平移需在画布六处以上手工施加(天体、平动点、轨迹、时刻标记、居中偏移、分区吸附),下一处漏加即产生 μ 级错位(分区图层点标记即为实例)。
design_orbit 星历路径的
synodic_position是地心原生(e2m2e 在质心转换结果上+= μ),全链路无 −μ 回算,与「数据系仍质心归一」的前提矛盾——同一条轨道的 CR3BP 参考段与星历段会在月球两侧裂开。文档、助手提示词、测试基线需全链路跟随平移。
物理事实:μ ≈ 0.01215 DU ≈ 4671 km,地月质心位于地球内部(地表下约 1700 km)。「地球不在原点」是 CR3BP 规范约定的直接后果,不是渲染缺陷;原始反馈的本质是显示层的感知问题。
决策
坐标约定不变:会合系原点保留在地月质心(Earth@−μ、Moon@1−μ),数据系与视图系口径同 ADR 0013,不做任何平移。
天体显示比例:默认显示尺寸按真实半径 ×3 放大(
BODY_DISPLAY_SCALE,保持 3.67:1 物理比)。地球显示半径 ≈0.050 DU 远大于 μ,原点视觉上稳定落在地球体内;earthSize/moonSize设置项仍可覆盖。原点标注:会合视图的坐标轴图层在原点加「地月质心」圆环标记与文字(深度测试关闭,不被放大的地球遮住),消除「原点即地球」的误读;惯性视图原点即地心,不标注。
图注迁移:画布内图注移除,左侧边栏新增常驻「画布轨道清单」(颜色样 + 名称 + 数据系标注)。图例联动拾取(#460)的悬停预览/点击聚焦态提升到 App 持有(OrbitCanvas 受控 props),清单与画布拾取写同一状态、双向一致。
画布风格:默认背景固定深空黑(#050a14,STK 视口感,不随应用主题;
bgColor设 null 恢复跟随主题)。
理由
质心原点是 CR3BP 教科书与 e2m2e 上游的统一口径;保持它,数据消费链路零换算,审查发现的整条平移尾巴随之消解。
感知问题在感知层修:比例与标注只动显示默认值与标注,不碰数据契约、算法层与任何坐标语义,改动可逆。
后果
正面
坐标约定回到单一来源(ADR 0013),文档与代码不再分叉。
左侧轨道清单常驻,画布可视面积释放;清单交互与画布拾取天然一致。
负面
已持久化旧设置(
bgColor: null、天体尺寸为真实半径)的用户保留旧外观,需重置设置才见新默认。聚焦/预览态上移后,OrbitCanvas 的受控 props 成为新契约,调用方须成对传值(只传回调不传值的半受控用法不更新内部态)。
后续
助手提示词(
src-tauri/src/assistant/prompt.rs)对会合系坐标的描述无需变更(口径未动)。