【STK】学习笔记|01-绘制卫星在仿真时段内的所有轨迹

本文档介绍了在STK(SpaceTime Kinetics)中如何设置卫星轨迹显示,包括默认和目标状态的对比,以及LeadType(引领类型)和TrailType(踪迹类型)的详细解释。通过调整这两个参数,可以控制卫星未来路径和已走过轨迹的显示,以更好地理解和分析卫星运动。具体设置步骤和不同选项的效果也进行了展示。
摘要由CSDN通过智能技术生成

在学习STK过程中,很多操作学完就忘,遂计划将学到的东西记录一下,以便后期学习。由于所记录的东西可能会有些琐碎,不能称为“教程”,所以便起名为“笔记”。当然,如果您正好有这方面的问题,这系列文章又能有幸被您看到,看完觉得有帮助,那这是一件有意义的事情!


1. 默认和目标

如果你什么都不设置,那大家看到的卫星在二维图中的展示情况应该是这样子的:
请添加图片描述

但你可能想要的是这种:

在这里插入图片描述


2. 设置步骤

选择要设置的卫星,右键属性/properties,2D graphics 中选择Pass,在Lead Type中默认是one pass ,选择All,即可显示出,卫星在仿真时段内所有的星下点轨迹,如下图所示设置:
在这里插入图片描述


3. 补充解释

3.1 Lead Type

直接翻译“引领类型”,它的意思是,卫星未来要运动的轨迹(所以我把它翻译为抽象的引领)。比如,默认状态下为one pass,它就只限制当圈前面的轨迹;如果你选择All,它就会一次性将仿真结束前所有的轨迹全部显示。

3.2 Trail Type

跟Lead Type 是相对的,翻译为“踪迹类型”。就是它可以记录卫星跑过的踪迹。默认为“Same As Lead”,意思跟Lead Type设置的一样。例如其为one pass,在下次刷新前,它会显示你当圈跑过的轨迹。

可以这样理解,Lead Type 是设置卫星将来要走的的显示情况;Trail Type是设置卫星过去走过的的显示情况。

3.3 实例

如果我把Lead Type设为None,将Trail Type设置为All,效果是这样子的:

请添加图片描述

反过来设置,我把Lead Type设为All,将Trail Type设置为None,效果是这样子的:

为了便于观察,我把时间移动到末尾

请添加图片描述

STK(Systems Tool Kit)提供了COM接口,可以通过C++调用STK生成轨道数据。具体步骤如下: 1. 安装STK软件并打开STK。 2. 在STK中创建一个场景,添加卫星、星座等对象,并设置其属性。 3. 在STK中生成轨道数据文件(.e文件),并保存到本地磁盘。 4. 在C++中通过COM接口调用STK,读取轨道数据文件并进行处理。 下面是一个简单的示例代码,演示了如何通过COM接口调用STK并生成轨道数据: ```cpp // C++代码 #include <iostream> #include <windows.h> #include <oleauto.h> int main() { // 初始化COM接口 CoInitialize(NULL); // 创建STK对象 IDispatch* pStkApp; CLSID clsid; CoCreateInstance(CLSID_Application, NULL, CLSCTX_SERVER, IID_IDispatch, (void**)&pStkApp); // 打开STK场景文件 VARIANT result; BSTR filePath = SysAllocString(L"C:\\Temp\\MyScene.e"); VARIANT vtFilepath; vtFilepath.vt = VT_BSTR; vtFilepath.bstrVal = filePath; DISPID dispID; DISPPARAMS dispParams = { NULL, NULL, 0, 0 }; pStkApp->GetIDsOfNames(IID_NULL, &filePath, 1, LOCALE_USER_DEFAULT, &dispID); pStkApp->Invoke(dispID, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispParams, &result, NULL, NULL); // 生成轨道数据 VARIANT objPath; objPath.vt = VT_BSTR; objPath.bstrVal = SysAllocString(L"Satellite1"); VARIANT vtStartTime; vtStartTime.vt = VT_BSTR; vtStartTime.bstrVal = SysAllocString(L"01 Jan 2022 00:00:00.000"); VARIANT vtStopTime; vtStopTime.vt = VT_BSTR; vtStopTime.bstrVal = SysAllocString(L"01 Jan 2023 00:00:00.000"); VARIANT vtInterval; vtInterval.vt = VT_BSTR; vtInterval.bstrVal = SysAllocString(L"60"); VARIANT vtFilePath; vtFilePath.vt = VT_BSTR; vtFilePath.bstrVal = SysAllocString(L"C:\\Temp\\MyOutputFile.txt"); VARIANT vtFormat; vtFormat.vt = VT_BSTR; vtFormat.bstrVal = SysAllocString(L"e"); VARIANT vtCmd; vtCmd.vt = VT_BSTR; vtCmd.bstrVal = SysAllocString(L"ExportData"); DISPPARAMS exportParams = { &objPath, &vtStartTime, &vtStopTime, &vtInterval, &vtFilePath, &vtFormat, 7, 0 }; pStkApp->GetIDsOfNames(IID_NULL, &vtCmd.bstrVal, 1, LOCALE_USER_DEFAULT, &dispID); pStkApp->Invoke(dispID, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &exportParams, &result, NULL, NULL); // 释放资源 SysFreeString(filePath); SysFreeString(objPath.bstrVal); SysFreeString(vtStartTime.bstrVal); SysFreeString(vtStopTime.bstrVal); SysFreeString(vtInterval.bstrVal); SysFreeString(vtFilePath.bstrVal); SysFreeString(vtFormat.bstrVal); SysFreeString(vtCmd.bstrVal); pStkApp->Release(); CoUninitialize(); return 0; } ``` 需要注意的是,由于STK是Windows平台下的软件,因此该代码只能在Windows操作系统上运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李易Easy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值