# Spring-arm orbit pivot Type: grilling Status: resolved Labels: wayfinder:grilling Blocked by: None ## 进度:100% 已关闭。旋转中心 = 当前选中对象的地表点;未选中时回退到地面拾取点。取消选中不回退,平移才回退。 ## Question 右键轨道旋转的弹簧臂根部/旋转中心是什么?滚轮靠近或远离的也是同一个点。 候选: - 场景或城市原点 - 屏幕中心对应的地面拾取点,并在右键按下时锁定 - 当前选中监测点/设备;无选中时回退到地面拾取点 - 固定看向沅陵兴趣点,平移只移动该目标 ADR 0008 已锁定:左键只平移,右键只绕中心旋转,滚轮只改弹簧臂长度。本票只决定中心是谁。 ## Answer 旋转中心采用「选中对象优先」模型: - 选中监测点或设备时,中心是该对象的**地表高程点**(对象高程 + 0)。 - 未选中任何对象时,中心是**地面拾取点**:屏幕中心对应的椭球/地形交点。 - 右键按下时锁定当时的中心,拖拽过程中不重新拾取。 中心变化时的相机行为: - 从无选中到选中**监测点**:镜头飞向该点位的**定位视角**(中心 + hpr 一起换,契约见 `.scratch/cockpit-point-locate-and-device-link` 票 03;取消选中不回退);选中**非监测点对象**或手动操作时仍只换中心、保持 heading 与 range。 - 取消选中(关闭详情或点空白)时中心**保留**在刚才的对象上,不立即回退。 - 只有在左键平移时才把中心回退/更新为地面拾取点。 调研已确认弹簧臂原语为 `camera.lookAtTransform(中心东北天局部系, HeadingPitchRange)`,中心必须是局部地表点,所以「场景/城市原点」候选不成立。实现落在同一地图服务内,不使用 Tres `OrbitControls`,也不使用 `vue-cesium` 的鼠标绑定。