🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
MotionBallistic.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstSim/MotionWithIntervalStep.hpp"
25#include "AstCore/Time.hpp"
26#include "AstCore/Object.hpp"
27#include "AstSim/MotionProfile.hpp"
28
29AST_NAMESPACE_BEGIN
30
37class AST_SIM_API MotionBallistic: public MotionProfile
38{
39public:
40 AST_OBJECT(MotionBallistic)
41 static MotionBallistic* New();
43 ~MotionBallistic() override = default;
44
48 errc_t makeEphemerisSpec(ScopedPtr<Ephemeris>& eph) const override;
49
53 errc_t makeEphemerisSimple(ScopedPtr<Ephemeris>& eph) const override;
54
57 void accept(MotionProfileVisitor& visitor) override;
58
61 void setLaunchTime(const TimePoint& time) { launchTime_ = time; }
62
65 const TimePoint& getLaunchTime() const { return launchTime_; }
66
69 void setImpactTime(const TimePoint& time) { impactTime_ = time; }
70
73 const TimePoint& getImpactTime() const { return impactTime_; }
74
79 void setLaunchPosition(double latitude, double longitude, double altitude)
80 {
81 launchLatitude_ = latitude;
82 launchLongitude_ = longitude;
83 launchAltitude_ = altitude;
84 }
85
88 double getLaunchLatitude() const { return launchLatitude_; }
89
92 double getLaunchLongitude() const { return launchLongitude_; }
93
96 double getLaunchAltitude() const { return launchAltitude_; }
97
102 void setImpactPosition(double latitude, double longitude, double altitude)
103 {
104 impactLatitude_ = latitude;
105 impactLongitude_ = longitude;
106 impactAltitude_ = altitude;
107 }
108
111 double getImpactLatitude() const { return impactLatitude_; }
112
115 double getImpactLongitude() const { return impactLongitude_; }
116
119 double getImpactAltitude() const { return impactAltitude_; }
120
123 void setLaunchVelocity(double velocity) { launchVelocity_ = velocity; }
124
127 double getLaunchVelocity() const { return launchVelocity_; }
128
131 void setLaunchAzimuth(double azimuth) { launchAzimuth_ = azimuth; }
132
135 double getLaunchAzimuth() const { return launchAzimuth_; }
136
139 void setLaunchElevation(double elevation) { launchElevation_ = elevation; }
140
143 double getLaunchElevation() const { return launchElevation_; }
144
147 void setLaunchDuration(double duration) { launchDuration_ = duration; }
148
151 double getLaunchDuration() const { return launchDuration_; }
152
155 void setLaunchType(int type) { launchType_ = type; }
156
159 int getLaunchType() const { return launchType_; }
160
163 void setLaunchControl(int control) { launchControl_ = control; }
164
167 int getLaunchControl() const { return launchControl_; }
168
171 void setLaunchApogeeAlt(double altitude) { launchApogeeAlt_ = altitude; }
172
175 double getLaunchApogeeAlt() const { return launchApogeeAlt_; }
176
177private:
178 TimePoint launchTime_;
179 TimePoint impactTime_;
180 double launchLatitude_;
181 double launchLongitude_;
182 double launchAltitude_;
183 double impactLatitude_;
184 double impactLongitude_;
185 double impactAltitude_;
186 double launchVelocity_;
187 double launchAzimuth_;
188 double launchElevation_;
189 double launchDuration_;
190 int launchType_;
191 int launchControl_;
192 double launchApogeeAlt_;
193
194};
195
198AST_NAMESPACE_END
弹道运动模型,用于模拟弹道导弹运动
定义 MotionBallistic.hpp:38
void setLaunchControl(int control)
设置发射控制
定义 MotionBallistic.hpp:163
double getLaunchApogeeAlt() const
获取近地点高度
定义 MotionBallistic.hpp:175
double getLaunchDuration() const
获取发射持续时间
定义 MotionBallistic.hpp:151
void setImpactTime(const TimePoint &time)
设置撞击时间
定义 MotionBallistic.hpp:69
int getLaunchType() const
获取发射类型
定义 MotionBallistic.hpp:159
double getLaunchElevation() const
获取发射仰角
定义 MotionBallistic.hpp:143
void setLaunchElevation(double elevation)
设置发射仰角
定义 MotionBallistic.hpp:139
double getLaunchLongitude() const
获取发射经度
定义 MotionBallistic.hpp:92
int getLaunchControl() const
获取发射控制
定义 MotionBallistic.hpp:167
double getImpactAltitude() const
获取撞击高度
定义 MotionBallistic.hpp:119
void setLaunchType(int type)
设置发射类型
定义 MotionBallistic.hpp:155
const TimePoint & getLaunchTime() const
获取发射时间
定义 MotionBallistic.hpp:65
double getImpactLatitude() const
获取撞击纬度
定义 MotionBallistic.hpp:111
void setLaunchApogeeAlt(double altitude)
设置近地点高度
定义 MotionBallistic.hpp:171
double getLaunchVelocity() const
获取发射速度
定义 MotionBallistic.hpp:127
void setLaunchTime(const TimePoint &time)
设置发射时间
定义 MotionBallistic.hpp:61
double getLaunchLatitude() const
获取发射纬度
定义 MotionBallistic.hpp:88
void setLaunchAzimuth(double azimuth)
设置发射方位角
定义 MotionBallistic.hpp:131
double getLaunchAltitude() const
获取发射高度
定义 MotionBallistic.hpp:96
void setImpactPosition(double latitude, double longitude, double altitude)
设置撞击位置
定义 MotionBallistic.hpp:102
void setLaunchVelocity(double velocity)
设置发射速度
定义 MotionBallistic.hpp:123
void setLaunchDuration(double duration)
设置发射持续时间
定义 MotionBallistic.hpp:147
void setLaunchPosition(double latitude, double longitude, double altitude)
设置发射位置
定义 MotionBallistic.hpp:79
const TimePoint & getImpactTime() const
获取撞击时间
定义 MotionBallistic.hpp:73
double getImpactLongitude() const
获取撞击经度
定义 MotionBallistic.hpp:115
double getLaunchAzimuth() const
获取发射方位角
定义 MotionBallistic.hpp:135
定义 MotionProfileVisitor.hpp:44
运动定义接口
定义 MotionProfile.hpp:51
virtual errc_t makeEphemerisSpec(ScopedPtr< Ephemeris > &eph) const =0
生成特定星历
virtual errc_t makeEphemerisSimple(ScopedPtr< Ephemeris > &eph) const =0
生成简单星历
virtual void accept(MotionProfileVisitor &visitor)=0
接受访问者
Class * type() const
获取对象类型
定义 Object.hpp:239
作用域指针类
定义 ScopedPtr.hpp:65
绝对时间点
定义 TimePoint.hpp:106