🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataGroupQuats.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstReport/DataGroupTimeVar.hpp"
25#include "AstUtil/Span.hpp"
26#include "AstCore/Axes.hpp"
27#include "AstMath/Quaternion.hpp"
28#include "AstMath/Vector.hpp"
29
30AST_NAMESPACE_BEGIN
31
40{
41public:
42 struct Data
43 {
44 TimePoint time_;
46 Vector3d angvel_;
47
48 const TimePoint& getTime() const { return time_; }
49
50 // 四元数分量 — q1,q2,q3 为矢量部分, q4 为标量部分
51 double getQ1() const { return quat_.qx(); }
52 double getQ2() const { return quat_.qy(); }
53 double getQ3() const { return quat_.qz(); }
54 double getQ4() const { return quat_.qs(); }
55
56 // 角速度分量
57 double getWX() const { return angvel_.x(); }
58 double getWY() const { return angvel_.y(); }
59 double getWZ() const { return angvel_.z(); }
60
62 double getWMagnitude() const { return angvel_.norm(); }
63
65 double getRightAscensionOfW() const { return atan2(angvel_.y(), angvel_.x()); }
66
68 double getDeclinationOfW() const
69 {
70 double mag = angvel_.norm();
71 return (mag < 1e-12) ? 0.0 : asin(angvel_.z() / mag);
72 }
73 };
74 static DataElements Elements();
75
76 DataGroupQuats() = default;
77 ~DataGroupQuats() = default;
78public:
79 errc_t calculate(const TimeList& timeList, VariantVector& result) const override;
80 const DataElements& getElements() const override;
81public:
82 errc_t calculate(const TimeList& timeList, std::vector<Data>& result) const;
83 errc_t calculate(const TimeList& timeList, Span<Data> result) const;
84public:
85 Axes* getAxes() const { return axes_.get(); }
86 Axes* getReferenceAxes() const { return referenceAxes_.get(); }
87 void setAxes(Axes* a) { axes_ = a; }
88 void setReferenceAxes(Axes* a) { referenceAxes_ = a; }
89private:
90 WeakPtr<Axes> axes_{};
91 WeakPtr<Axes> referenceAxes_{};
92};
93
94
97AST_NAMESPACE_END
轴系抽象基类
定义 Axes.hpp:72
数据元素容器
定义 DataElements.hpp:90
四元数姿态数据组 — 四元数分量 q1-q4 及角速度分量
定义 DataGroupQuats.hpp:40
随时间变化的数据组
定义 DataGroupTimeVar.hpp:37
四元数
定义 Quaternion.hpp:47
double qz() const
四元数的虚部z
定义 Quaternion.hpp:74
double qs() const
四元数的实部
定义 Quaternion.hpp:68
double qy() const
四元数的虚部y
定义 Quaternion.hpp:72
double qx() const
四元数的虚部x
定义 Quaternion.hpp:70
非拥有的连续对象序列视图
定义 Span.hpp:71
时间点列表
定义 TimeList.hpp:49
绝对时间点
定义 TimePoint.hpp:108
变类型向量容器
定义 VariantVector.hpp:59
定义 DataGroupQuats.hpp:43
double getWMagnitude() const
角速度大小 |w|
定义 DataGroupQuats.hpp:62
Quaternion quat_
姿态四元数
定义 DataGroupQuats.hpp:45
double getDeclinationOfW() const
角速度矢量的赤纬 Dec = asin(wz / |w|)
定义 DataGroupQuats.hpp:68
double getRightAscensionOfW() const
角速度矢量的赤经 RA = atan2(wy, wx)
定义 DataGroupQuats.hpp:65
Vector3d angvel_
角速度
定义 DataGroupQuats.hpp:46