🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataGroupEclipse.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "AstGlobal.h"
26#include "AstReport/DataGroupInterval.hpp"
27#include "AstCore/CelestialBody.hpp"
28#include "AstCore/TimePoint.hpp"
29#include "AstCore/TimeInterval.hpp"
30#include "AstCore/Point.hpp"
31#include "AstCore/Frame.hpp"
32
33#include <string>
34#include <vector>
35
36AST_NAMESPACE_BEGIN
37
45class AST_REPORT_API DataGroupEclipse : public DataGroupInterval
46{
47public:
49 struct Data
50 {
51 TimePoint startTime_{};
52 TimePoint stopTime_{};
53 double duration_{0.0};
54 std::string obstruction_{};
55 std::string currentCondition_{};
56 std::string worstCondition_{};
57 double totalDuration_{0.0};
58
59 const TimePoint& getStartTime() const { return startTime_; }
60 const TimePoint& getStopTime() const { return stopTime_; }
61 double getDuration() const { return duration_; }
62 const std::string& getObstruction() const { return obstruction_; }
63 const std::string& getCurrentCondition() const { return currentCondition_; }
64 const std::string& getWorstCondition() const { return worstCondition_; }
65 double getTotalDuration() const { return totalDuration_; }
66 };
67
68 static DataElements Elements();
69
70 DataGroupEclipse() = default;
71 ~DataGroupEclipse() = default;
72
73 errc_t calculate(const TimeInterval& interval, VariantVector& result) const override;
74 errc_t calculate(const TimeInterval& interval, std::vector<Data>& result) const;
75 const DataElements& getElements() const override;
76
79 Point* getPoint() const { return point_.get(); }
80 void setPoint(Point* p) { point_ = p; }
81 void setLightSource(CelestialBody* b) { lightSource_ = b; }
82 CelestialBody* getLightSource() const { return lightSource_.get(); }
83 void setOccultingBodies(const std::vector<HCelestialBody>& bodies) { occultingBodies_ = bodies; }
84 void setStepSize(double s) { stepSize_ = s; }
86
87private:
88 WeakPtr<Point> point_{nullptr};
89 WeakPtr<CelestialBody> lightSource_{nullptr};
90 std::vector<HCelestialBody> occultingBodies_{};
91 double stepSize_{5.0};
92};
93
96AST_NAMESPACE_END
数据元素容器
定义 DataElements.hpp:90
日食时刻数据组
定义 DataGroupEclipse.hpp:46
定义 DataGroupInterval.hpp:34
virtual errc_t calculate(const TimeInterval &interval, VariantVector &result) const =0
计算数据组
点抽象基类
定义 Point.hpp:41
时间区间
定义 TimeInterval.hpp:64
绝对时间点
定义 TimePoint.hpp:108
变类型向量容器
定义 VariantVector.hpp:59
Unit s
定义 Unit.cpp:465
单行数据
定义 DataGroupEclipse.hpp:50