🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
DataGroupSolarIntensity.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "AstGlobal.h"
26#include "AstReport/DataGroupTimeVar.hpp"
27#include "AstCore/Point.hpp"
28#include "AstCore/CelestialBody.hpp"
29#include "AstCore/TimePoint.hpp"
30#include "AstUtil/Span.hpp"
31
32#include <string>
33#include <vector>
34
35AST_NAMESPACE_BEGIN
36
45class AST_REPORT_API DataGroupSolarIntensity : public DataGroupTimeVar
46{
47public:
49 struct Data
50 {
51 TimePoint time_{};
52 double intensity_{1.0};
53 std::string currentCondition_{};
54 std::string obstruction_{};
55
56 const TimePoint& getTime() const { return time_; }
57 double getIntensity() const { return intensity_; }
58 double getShadowRatio() const { return 1.0 - intensity_; }
59 const std::string& getCurrentCondition() const { return currentCondition_; }
60 const std::string& getObstruction() const { return obstruction_; }
61 };
62
63 static DataElements Elements();
64
65 DataGroupSolarIntensity() = default;
66 ~DataGroupSolarIntensity() = default;
67
68 errc_t calculate(const TimeList& timeList, VariantVector& result) const override;
69 errc_t calculate(const TimeList& timeList, std::vector<Data>& result) const;
70 errc_t calculate(const TimeList& timeList, Span<Data> result) const;
71 const DataElements& getElements() const override;
72
75 Point* getPoint() const { return point_.get(); }
76 void setPoint(Point* p) { point_ = p; }
77 void setLightSource(CelestialBody* b) { lightSource_ = b; }
78 CelestialBody* getLightSource() const { return lightSource_.get(); }
79 void setOccultingBodies(const std::vector<HCelestialBody>& bodies) { occultingBodies_ = bodies; }
81
82private:
83 WeakPtr<Point> point_{nullptr};
84 WeakPtr<CelestialBody> lightSource_{nullptr};
85 std::vector<HCelestialBody> occultingBodies_{};
86};
87
90AST_NAMESPACE_END
太阳光照强度数据组
定义 DataGroupSolarIntensity.hpp:46
随时间变化的数据组
定义 DataGroupTimeVar.hpp:37
virtual errc_t calculate(const TimeList &timeList, VariantVector &result) const =0
计算数据组
绝对时间点
定义 TimePoint.hpp:108
单行数据
定义 DataGroupSolarIntensity.hpp:50