🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
SPKParser.hpp
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "DAFParser.hpp"
25
26AST_NAMESPACE_BEGIN
27
34#pragma pack(push, 1)
35
39{
40 double start_time; // 开始时间 (ET)
41 double end_time; // 结束时间
42 int32_t target; // 目标体 ID
43 int32_t center; // 中心体 ID
44 int32_t frame; // 参考系 ID
45 int32_t type; // 数据类型
46 int32_t begin_addr; // 数据起始字地址
47 int32_t end_addr; // 数据结束字地址
48};
49
50#pragma pack(pop)
51
59class AST_UTIL_API SPKParser: public DAFParser
60{
61public:
62 SPKParser();
63 SPKParser(StringView filepath);
64 ~SPKParser() = default;
65
66 errc_t parse(StringView filepath);
67
68 errc_t parse();
69
70public:
79 errc_t getPosVelNative(double et, int target, Vector3d& pos, Vector3d& vel) const;
80
88 errc_t getPosNative(double et, int target, Vector3d& pos) const;
89
96 const SPK_Descriptor* findSpkDescriptor(int target, double et) const;
97
106 errc_t getStateNative(double et, int target, Vector3d& pos, Vector3d* vel) const;
107
109 const std::vector<SPK_Descriptor>& getDescriptors() const{return spkDescriptors_;}
110protected:
111
112 errc_t getStateType2(const SPK_Descriptor& desc, double et, int target, Vector3d& pos, Vector3d* vel) const;
113protected:
114 std::vector<SPK_Descriptor> spkDescriptors_;
115 mutable std::vector<double> buffer_;
116};
117
120AST_NAMESPACE_END
SPICE 双精度数组文件解析器 DAF(Double Precision Array File,双精度数组文件)
定义 DAFParser.hpp:46
errc_t parse()
解析DAF文件
定义 DAFParser.cpp:112
SPICE二进制SPK内核文件解析器(parser for SPICE SPK kernel file)
定义 SPKParser.hpp:60
const std::vector< SPK_Descriptor > & getDescriptors() const
获取SPK段描述符数组
定义 SPKParser.hpp:109
std::vector< double > buffer_
数据读取缓冲区
定义 SPKParser.hpp:115
std::vector< SPK_Descriptor > spkDescriptors_
SPK 段描述符数组
定义 SPKParser.hpp:114
SPK 段描述符 解包后的 SPK 段摘要信息,与SPK文件的二进制格式一致
定义 SPKParser.hpp:39