🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
AttitudeSpinning.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AttitudeProfile.hpp"
25#include "AstCore/TimePoint.hpp"
26#include "AstMath/Vector.hpp"
27
28AST_NAMESPACE_BEGIN
29
45class AST_CORE_API AttitudeSpinning : public AttitudeProfile
46{
47public:
48 AST_OBJECT(AttitudeSpinning)
49
50 AttitudeSpinning() = default;
51 ~AttitudeSpinning() override = default;
52
53 Axes* getParent() const override;
54 errc_t getTransform(const TimePoint& tp, Rotation& rotation) const override;
55 errc_t getTransform(const TimePoint& tp, KinematicRotation& rotation) const override;
56 errc_t getTransform(const TimePoint& tp, AccelerationRotation& rotation) const override;
57
58PROPERTIES:
60 Axes* getReferenceAxes() const { return referenceAxes_.get(); }
62 void setReferenceAxes(Axes* axes) { referenceAxes_ = axes; }
63
65 const Vector3d& getSpinAxisInFrame() const { return spinAxisInFrame_; }
67 void setSpinAxisInFrame(const Vector3d& axis) { spinAxisInFrame_ = axis; }
68
70 const Vector3d& getSpinAxisInBody() const { return spinAxisInBody_; }
72 void setSpinAxisInBody(const Vector3d& axis) { spinAxisInBody_ = axis; }
73
75 double getSpinRate() const { return spinRate_; }
77 void setSpinRate(double rate) { spinRate_ = rate; }
78
80 double getSpinOffset() const { return spinOffset_; }
82 void setSpinOffset(double offset) { spinOffset_ = offset; }
83
85 const TimePoint& getEpoch() const { return epoch_; }
87 void setEpoch(const TimePoint& epoch) { epoch_ = epoch; }
88
89protected:
91 double spinAngle(const TimePoint& tp) const;
92protected:
93 WeakPtr<Axes> referenceAxes_{};
94 Vector3d spinAxisInFrame_{Vector3d::UnitZ()};
95 Vector3d spinAxisInBody_{Vector3d::UnitZ()};
96 double spinRate_{0.0};
97 double spinOffset_{0.0};
98 TimePoint epoch_{};
99};
100
103AST_NAMESPACE_END
加速度(二阶运动学)坐标系旋转
定义 AccelerationRotation.hpp:51
自旋姿态 (Spinning)
定义 AttitudeSpinning.hpp:46
void setReferenceAxes(Axes *axes)
设置参考坐标系轴系
定义 AttitudeSpinning.hpp:62
void setSpinRate(double rate)
设置自旋角速度 [rad/s],正值表示绕自旋轴右手旋转
定义 AttitudeSpinning.hpp:77
void setEpoch(const TimePoint &epoch)
设置初相角对应的历元
定义 AttitudeSpinning.hpp:87
void setSpinAxisInBody(const Vector3d &axis)
设置体系下的自旋轴方向(通常是某个体轴)
定义 AttitudeSpinning.hpp:72
void setSpinAxisInFrame(const Vector3d &axis)
设置参考坐标系下的自旋轴方向
定义 AttitudeSpinning.hpp:67
const Vector3d & getSpinAxisInFrame() const
获取参考坐标系下的自旋轴方向
定义 AttitudeSpinning.hpp:65
double getSpinRate() const
获取自旋角速度 [rad/s]
定义 AttitudeSpinning.hpp:75
void setSpinOffset(double offset)
设置自旋初相角 [rad]
定义 AttitudeSpinning.hpp:82
const TimePoint & getEpoch() const
获取初相角对应的历元
定义 AttitudeSpinning.hpp:85
const Vector3d & getSpinAxisInBody() const
获取体系下的自旋轴方向
定义 AttitudeSpinning.hpp:70
double getSpinOffset() const
获取自旋初相角 [rad]
定义 AttitudeSpinning.hpp:80
轴系抽象基类
定义 Axes.hpp:86
virtual Axes * getParent() const =0
获取当前轴系的父轴系
virtual errc_t getTransform(const TimePoint &tp, Rotation &rotation) const =0
获取当前轴系相对于父轴系的旋转变换
运动学坐标系旋转
定义 KinematicRotation.hpp:50
坐标系旋转类
定义 Rotation.hpp:55
绝对时间点
定义 TimePoint.hpp:108
弱引用指针
定义 WeakPtr.hpp:35