ObjectModel_diagram.pdf 文档详细总结

ObjectModel_diagram.pdf 文档详细总结

该文档是 AGI 官方STK Object Model(对象模型)完整 UML 类图套件 ,一共 18 页,是 STK 仿真内核的 COM 接口完整定义,对应 MATLAB 中root = uiapp.Personality2之后全部仿真对象;与前面的 STKX(软件 GUI 层)、VGT(矢量几何计算层)共同构成完整 STK COM 自动化技术栈。

STK Object Model 负责场景、各类作战实体、传感器、访问计算、姿态、轨道传播、约束、图形属性,你的午夜之锤项目:Facility 阵地、Aircraft 战机、Satellite 卫星、Sensor 雷达、Propagator 轨道传播器、Access 访问分析全部来源于这套对象模型。

一、总体架构与基础继承体系

1. 根基类 IAgStkObject

所有仿真实体全部继承IAgStkObject (Facility、Aircraft、Satellite、Missile、Sensor 等),是整个对象模型的顶层基接口。

公共成员(全部实体通用):

  1. .Path:对象绝对路径,如/Facility/Natanz_Facility,对应GetObjectFromPath()查找接口;
  2. .Children:子对象集合,Facility 下面挂载 Sensor、Satellite 下面挂载 Sensor;
  3. .Vgt:VGT 矢量几何工具入口,对接 VGT‑diagram.pdf 的全部计算组件;
  4. .AccessConstraints:访问约束管理器(距离、仰角等约束);
  5. .Graphics:2D/3D 图形显示属性;
  6. 方法:GetAccessToObject()生成 Access 访问对象;CopyObject()复制对象;Unload()销毁对象。

2. 集合对象 IAgStkObjectCollection

  • scenario.Children就是该集合;提供.New()、.Contains()、.Count、.Item(index);
  • ⚠️集合下标从0 开始,MATLAB 数组从 1 开始,是高频 bug 来源。

3. 通用附属组件

  1. AccessConstraints(访问约束集合)
    增加 / 删除距离、仰角、遮挡约束;雷达传感器最大探测距离就通过该接口配置;STK11 没有RemoveAllConstraints方法,需要循环逐个删除约束。
  2. Enumerations 枚举集合
    实体类型eFacility/eAircraft/eSatellite、传播器类型ePropagatorHPOP、传感器指向模式eSnPtSpinning/eSnPtTargeted、波束模式全部在此定义。
  3. DataProviders:数据提供器,时序数据输出,与 VGT 协同工作。
  4. BeginUpdate() / EndUpdate():批量修改接口,继承自基对象;批量修改属性时关闭中间重绘,提升脚本运行速度。

完整三层调用链路回顾:

MATLAB → STKX (IAgUiApplication) → .Personality2 → ObjectModel 根对象 → 各类仿真实体 → .Vgt → VGT 几何计算组件。

二、主要模块划分(对应 PDF 分页)

Page1:根对象、Access 约束、DataProviders、基础属性

  • 根对象IAgStkObjectRoot:NewScenario()、Unload()、GetObjectFromPath()、UnitConvert()单位转换;
  • IAgAccess访问对象:ComputeAccess()计算可视,ComputedAccessIntervalTimes得到intervals时间区间集合,就是代码中的雷达‑目标可见窗口;
  • IAgAccessConstraintCollection约束管理。

Page2:姿态系统 Attitude Options

姿态相关全套接口:

  1. SetAttitudeType()设置姿态模式:对地指向、惯性指向、跟随目标等;
  2. 飞行器、卫星共用姿态接口;MUOS、铱星卫星eAttitudeEarthPointing对地指向就在这部分;
  3. 姿态配置对象、姿态事件、姿态文件导入接口。

Page3:图例说明 UML 标记

  • R/W‑Property读写属性;R/O‑Property只读属性;Method()成员方法;
  • 空心三角 = 继承;菱形 = 集合聚合;CoClass = 可实例化 COM 类;Interface = 抽象接口不能直接实例化。

Page4:Vehicle Propagators 飞行器 / 卫星传播器(轨道 / 航迹)

对应你代码中 Satellite 的.Propagator,非常关键。

  1. 通用基接口IAgVePropagator,必须调用QueryInterface()向下强转为具体传播器;
  2. 支持传播器:
    • ePropagatorTwoBody二体;
    • ePropagatorJ2PerturbationJ2 摄动(铱星 LEO);
    • ePropagatorHPOP高精度数值传播器(MUOS GEO 卫星);
    • ePropagatorSGP4两行 TLE 轨道;
  3. 成员:.InitialState轨道初值;AssignClassical()赋值开普勒轨道根数;.Propagate()执行轨道计算。

注意:直接操作基接口IAgVePropagator看不到InitialState,必须QueryInterface转型,是高频踩坑点。

Page5‑6:Aircraft 对象(飞行器,B‑2、EA‑18G、F‑22)

IAgAircraft:飞机实体对象

  1. 航点集合 Waypoints,设置时间、经纬度、高度、速度,GreatArc 大圆航迹传播;
  2. RCS 雷达散射截面配置;
  3. 2D/3D 图形属性:轨迹线、模型、标签;
  4. .Children可以挂载Sensor传感器;
  5. 姿态、光照、航迹绘制、轨迹尾迹配置。

Page7‑8:Facility 地面设施对象(纳坦兹、福尔道、伊斯法罕阵地)

IAgFacility地面固定阵地:

  1. Position.AssignGeodetic(lat,lon,alt)设置经纬度高程;
  2. .Children挂载Sensor雷达传感器;
  3. 2D/3D 图形、地标、标签设置。

Page11‑12:Missile 导弹对象(战斧巡航导弹)

IAgMissile导弹实体:

  • 弹道传播器、发射点、落点;RCS;图形属性;挂载传感器。

Page14‑15:Satellite 卫星对象(MUOS‑4、Iridium 铱星)

IAgSatellite卫星对象:

  1. .Propagator轨道传播器;.Attitude姿态;.EclipseBodies地影计算;
  2. .Children挂载 Sensor 通信载荷;
  3. 2D/3D 图形:星下点轨迹、地面椭圆、轨道线、光照、地影显示;
  4. 数据导出接口,支持 CCSDS、STK 星历导出。

Page18:Sensor 传感器对象(雷达、通信载荷,本项目核心)

IAgSensor传感器类图,你的防空雷达、卫星通信波束全部由此实现:

  1. .Pattern天线方向图:eSnSimpleConic / eSnComplexConic / eSnRectangular;
  2. .Pointing指向模式:
    • eSnPtSpinning圆周扫描;
    • eSnPtTargeted目标跟踪;搭配IAgSnTargetCollection目标集合,.AddObject()添加跟踪实体句柄;
  3. .AccessConstraints距离 / 仰角约束;
  4. .Graphics波束颜色、波束开关显示;
  5. .Vgt传感器矢量几何数据入口。

重要:IAgSnTargetCollection.AddObject()只能传入 COM 对象句柄,不能传路径字符串。

三、三大 COM 组件完整对比(论文可以直接引用)

表格

组件库 文档来源 主要职责 MATLAB 入口 核心对象
STKX STKX_diagram.pdf STK 软件 GUI、窗口、3D/2D 视图画布、绘图元素 uiapp = actxGetRunningServer('STK11.application') IAgUiApplication
Object Model ObjectModel_diagram.pdf 仿真内核:场景、阵地、飞机、卫星、雷达、轨道、访问约束 root = uiapp.Personality2 IAgStkObject及其派生类
VGT(Vector Geometry Tool) VGT_diagram.pdf 矢量几何、距离角度计算、Evaluate()、FindTimes()事件检测 obj.Vgt(任意 StkObject 的 Vgt 属性) IAgVgtCalculationComponent

四、与午夜之锤仿真项目的映射

表格

UML 对象接口 项目中实体 关键用法
IAgStkObjectRoot 仿真根对象 NewScenario,GetObjectFromPath()
IAgFacility 纳坦兹、福尔道、伊斯法罕防空阵地 设置经纬度,挂载 Sensor 雷达
IAgAircraft B‑2、EA‑18G、F‑22 战机 设置航点、RCS
IAgSatellite MUOS‑4、Iridium 铱星卫星 HPOP/J2Perturbation 传播器,对地姿态,挂载通信 Sensor
IAgMissile 战斧巡航导弹 弹道仿真
IAgSensor S‑300、Bavar‑373 雷达;卫星通信波束 Spinning 扫描↔Targeted 跟踪切换;波束配置;Access 约束设置
IAgSnTargetCollection 雷达跟踪目标列表 AddObject()添加 B‑2 目标句柄
IAgAccess 雷达‑目标、卫星‑地面站访问分析 ComputeAccess(),得到intervals可见区间
IAgVePropagator(HPOP/J2) 卫星轨道传播器 QueryInterface()转型,设置轨道根数
BeginUpdate/EndUpdate 全部实体通用接口 批量修改参数,抑制界面重绘,提升脚本速度

五、工程开发关键提示(来自 UML 图与官方定义)

  1. 继承统一 :Facility/Aircraft/Satellite/Missile/Sensor 全部继承IAgStkObject,共享.Children、.Vgt、.AccessConstraints、.Graphics接口;
  2. 集合下标从 0 :所有Collection.Item(index)索引从 0,MATLAB 循环需要做下标转换;
  3. 传播器必须强转 :Propagator基接口不能直接访问轨道初值,QueryInterface()向下转型是强制步骤;
  4. AddObject()接收对象句柄,禁止传入字符串路径;
  5. BeginUpdate/EndUpdate成对使用,减少 STKX 层 3D 视图频繁重绘,显著提升大脚本运行效率;
  6. 区分:intervals(Access 对象输出,连续可见时间段)和FindTimes()(VGT 输出离散事件点,极小 / 极大时刻);
  7. 不要混淆三层组件:GUI 窗口操作交给 STKX;仿真实体建模交给 ObjectModel;时序几何计算交给 VGT。

六、论文写作可用总结片段

Object Model 是 STK 仿真内核的 COM 对象模型,定义了场景、地面设施、飞行器、卫星、导弹、传感器等全部仿真实体的接口规范。所有实体继承基接口IAgStkObject,提供子对象管理、访问约束、图形属性、VGT 几何计算入口。通过 MATLAB COM 自动化调用 Object Model,可以完全脱离 STK 图形界面的手动操作,程序化完成实体创建、轨道航迹配置、传感器模式切换、访问分析计算,为 "午夜之锤行动" MATLAB‑STK 闭环联合仿真提供底层接口基础。

相关推荐
知识分享小能手4 小时前
C++ 学习教程,从入门到精通,string类和标准模板库 — 完整知识点详解(16)
开发语言·c++·学习
qq_401700414 小时前
Qt 炫酷曲线,图表,2D/3D开源库
开发语言·qt
liangshanbo12154 小时前
面试题:线上 JavaScript 报错如何快速定位到源码?
开发语言·javascript·ecmascript
weixin_440730505 小时前
迭代器Iterator(列表生成器、可迭代的如何生成迭代器)
开发语言·python
朝朝辞暮i5 小时前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
weixin_440730505 小时前
内置函数、json文本、pickle二进制
开发语言·python·json
殷色玫瑰5 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
李游Leo5 小时前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
Evand J5 小时前
【MATLAB例程】三维RRT+APF路径规划与AOA-TDOA融合定位算法。附代码的下载链接
算法·matlab·路径规划·rrt·tdoa·apf·aoa
时间的拾荒人6 小时前
Qt 文件操作详解:从基础类到读写实战
开发语言·qt·面试