Skip to content

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 中的点
    }
  });
});

KBE3D @3.0.0 Copyright © 2024-present KBE3D