Appearance
KBE3D / KBSatellite / PropagatorLiveController
接口: PropagatorLiveController
GPU 实时轨道外推控制器接口
备注
用于管理多颗卫星的 GPU 批量计算,提供更新位置、获取位置、资源清理等功能。 由外部调用 update 方法触发计算,不与 Cesium 时钟绑定,适合与任意定时器或动画循环配合使用。
属性
dispose()
dispose: () =>
Promise<void>
清理所有 GPU 资源
返回
Promise<void>
Promise,在资源释放完成后 resolve
备注
调用后会释放 GPU 显存中注册的卫星常量集,并清空内部缓存。 调用后控制器将不可再使用,需要重新创建实例。
示例
typescript
await controller.dispose();isProcessing()
isProcessing: () =>
boolean
检查当前是否有计算任务正在进行
返回
boolean
正在计算中返回 true,否则返回 false
备注
用于避免在上一帧计算未完成时发起新的更新请求。
isInitialized()
isInitialized: () =>
boolean
检查是否已成功初始化 GPU 资源
返回
boolean
已初始化返回 true,否则返回 false
getCurrentPositions()
getCurrentPositions: () =>
Map<any,OrbitPropagatorResult>
获取当前所有卫星的位置缓存
返回
Map<any, OrbitPropagatorResult>
卫星位置 Map,键为 id,值为 OrbitPropagatorResult
备注
返回的是最新一次 update 成功后的位置数据。 返回的 Map 键为卫星 id,值为对应的轨道传播结果。
示例
typescript
const positions = controller.getCurrentPositions();
for (const [id, pos] of positions) {
console.log(`卫星 ${id}:`, pos.positionEci);
}getPosition()
getPosition: (
id:any) =>OrbitPropagatorResult|undefined
获取指定卫星的最新位置
参数
id
any
卫星唯一标识
返回
OrbitPropagatorResult | undefined
卫星位置结果,如果未找到或尚未计算则返回 undefined
update()
update: (
currentTimestamp:number) =>Promise<Map<any,OrbitPropagatorResult> |undefined>
更新所有卫星的位置
参数
currentTimestamp
number
当前时间戳(毫秒,UTC)
返回
Promise<Map<any, OrbitPropagatorResult> | undefined>
Promise,返回更新后的位置 Map,如果更新失败则返回 undefined
备注
基于当前时间戳,批量计算所有卫星的实时位置。 计算在 GPU 上并行执行,结果会更新到内部缓存中。
示例
typescript
// 在 Cesium 的 preRender 事件中调用
viewer.scene.preRender.addEventListener(() => {
const now = Date.now();
controller.update(now).then(positions => {
if (positions) {
// 更新 Cesium 中的点
}
});
});