Newer
Older
#pragma once
#include "SystemCoords.h"
class Moon : private ConvertSC {
private:
double m_sin_πс;
double m_Δλ_c;
double m_β;
const double m_scalefactor = 6378.43817285;
std::vector<double> m_s{ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
std::vector<double> m_r{ 0.0, 0.0, 0.0, 0.0, 0.0 };
fundamental_arguments m_cfa{ 0.0, 0.0, 0.0, 0.0, 0.0 };
public:
Moon(double input_TDB = 0) :ConvertSC{ input_TDB } {
calculateDC();
};
~Moon() {};
int calculate_s();
int calculate_r();
int calculateСorrecteFundamentalArg();
int calculate_sin_πс();
int calculate_Δλ_c();
int calculate_β();
int calculateGEC();
friend std::ostream& operator<<(std::ostream& out, Moon& i_moon);
friend std::ofstream& operator<<(std::ofstream& out, Moon& i_moon);
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
};
class Sun:private ConvertSC {
private:
const double AU{ 149597870.691 };
std::vector<double> m_M{ 0.0,0.0,0.0,0.0,0.0 };
Matrix m_perturbation{ 3,1 }; // возмущение в эклептической долготе, возмущение в эклептической широте, возмущение в расстоянии до Солнца
//возмущения в долготе обусловленные Венерой
double DILong_V();
double DILong_M();
double DILong_JS();
double DILat();
double DIR_V();
double DIR_M();
double DIR_JS();
public:
Sun(double input_TDB = 0) : ConvertSC{ input_TDB } {};
~Sun() {};
int calculateAverageAnomalies();
int calculatePerturbation();
int calculateGEC();
};
class Earth : private ConvertSC {
private:
const double gravitational_parameter_Earth = 398600.4415;
uint32_t m_cols;
uint32_t m_rows;
Matrix m_GDC;
double m_r;
Matrix startPartialDeriv{4,3};
Matrix coefficient_С = fill_matrix("coef_c.txt");
Matrix coefficient_S = fill_matrix("coef_s.txt");
Matrix fill_matrix(const char fileName []);
public:
Earth() {};
Earth(double , Matrix);
~Earth() {};
int calculateStartPartialDeriv();