🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataGroupCartVel.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstReport/DataGroupTimeVar.hpp"
25#include "AstCore/Point.hpp"
26#include "AstCore/Frame.hpp"
27#include "AstMath/Vector.hpp"
28#include "AstUtil/Span.hpp"
29
30AST_NAMESPACE_BEGIN
31
40{
41public:
42 struct Data
43 {
44 TimePoint time_;
45 Vector3d pos_;
46 Vector3d vel_;
47
48 const TimePoint& getTime() const { return time_; }
49 double getVX() const { return vel_.x(); }
50 double getVY() const { return vel_.y(); }
51 double getVZ() const { return vel_.z(); }
52
54 double getSpeed() const { return vel_.norm(); }
55
57 double getRadialVel() const
58 {
59 double r = pos_.norm();
60 return (r < 1e-12) ? 0.0 : vel_.dot(pos_) / r;
61 }
62
64 double getInTrackVel() const
65 {
66 double r = pos_.norm();
67 return (r < 1e-12) ? 0.0 : pos_.cross(vel_).norm() / r;
68 }
69 };
70 static DataElements Elements();
71 DataGroupCartVel() = default;
72 ~DataGroupCartVel() = default;
73public:
74 errc_t calculate(const TimeList& timeList, VariantVector& result) const override;
75 const DataElements& getElements() const override;
76public:
77 errc_t calculate(const TimeList& timeList, std::vector<Data>& result) const;
78 errc_t calculate(const TimeList& timeList, Span<Data> result) const;
79public:
80 Point* getPoint() const { return point_.get(); }
81 Frame* getFrame() const { return frame_.get(); }
82 void setPoint(Point* p) { point_ = p; }
83 void setFrame(Frame* f) { frame_ = f; }
84private:
85 WeakPtr<Point> point_{};
86 WeakPtr<Frame> frame_{};
87};
88
89
92AST_NAMESPACE_END
数据元素容器
定义 DataElements.hpp:90
笛卡尔速度数据组 — ICRF 坐标系下的 vx, vy, vz, speed, vr, vi 速度分量
定义 DataGroupCartVel.hpp:40
随时间变化的数据组
定义 DataGroupTimeVar.hpp:37
点抽象基类
定义 Point.hpp:41
非拥有的连续对象序列视图
定义 Span.hpp:71
时间点列表
定义 TimeList.hpp:49
绝对时间点
定义 TimePoint.hpp:108
变类型向量容器
定义 VariantVector.hpp:59
定义 DataGroupCartVel.hpp:43
Vector3d pos_
位置(用于计算径向/迹向速度分量)
定义 DataGroupCartVel.hpp:45
double getRadialVel() const
径向速度 — 速度在位置方向上的投影 vr = vel·pos / |pos|
定义 DataGroupCartVel.hpp:57
double getInTrackVel() const
迹向速度 — 速度在垂直于径向方向上的分量 vi = |pos × vel| / |pos|
定义 DataGroupCartVel.hpp:64
double getSpeed() const
速率 — 速度矢量的模 |vel|
定义 DataGroupCartVel.hpp:54