Skip to content
Snippets Groups Projects
SystemCoords.h 3.45 KiB
Newer Older
const double RS = 4.848136811095E-6;
	friend std::ostream& operator<<(std::ostream& out, precession_parameters& input_pp);
	friend std::ofstream& operator<<(std::ofstream& out, precession_parameters& input_pp);
GASpiridonov's avatar
GASpiridonov committed
//chek how work branch  git
	friend std::ostream& operator<<(std::ostream& out, fundamental_arguments& input_fa);
	friend std::ofstream& operator<<(std::ofstream& out, fundamental_arguments& input_fa);
	const double m_rg = 0.017453292519943296; //коэффициент перевода дуговых 
	double m_ε{ 0 }; // угол наклона эклептики
	Matrix m_precession{ 3,3 }; // матрица прецессии
	Matrix m_nutation{ 3,3 };  //матрица нутации
	Matrix m_GEC{ 3, 1 }; //геоцентрические эклептические координаты
	Matrix m_DEC{ 3, 1 }; //геоцентрические прямоугольные координаты
	precession_parameters m_pp{ 0,0,0 }; // параметры прецессии
	fundamental_arguments m_fa{ 0,0,0,0,0 }; // фундумнтальные аргументы
	//установка новго времени
	void settime(double input_TDB) {
	//ввычисление параметров прецессии
	void calculatePrecessionParam();
	//вычисление матрицы прецессии
	void calculateMatrixPrecession();
	//вычисление угла наклона эклептики
	void calculateAngleInclination() {
		m_ε = RS * (84381.448 - (46.815 + (0.0059 - 0.001813 * m_ts) * m_ts) * m_ts);
	//вычисление фундументальных аргументов
	void calculateFundamentalArguments();
	//вычисление парамтров нутации
	void calculateNutationParameters();
	//вычисление матрицы нутации
	void calculateMatrixNutation();
	//перевод геоцентрических эклиптических координат в прямоугольные координаты в экватариальной системе
	void calculateDC();
public:
	//время в формате TDB
	ConvertSC(double input_time = 0) : m_t{ input_time } { recalc(m_t); };
	~ConvertSC() {};
	//перерасчет
	void recalc(double input_TDB);

	double getΔψ() { return Δψ; }
	double getΔε() { return Δε; }
	double getε() { return m_ε; }

	const Matrix& getDC() { return m_DEC; }
	precession_parameters& getPP() { return m_pp; }
	fundamental_arguments& getfundumental() { return m_fa; }
	const Matrix& getMatrixPrecessinon() { return m_precession; }
	const Matrix& getMatrixNutation() { return m_nutation; }
	double get_ts() { return m_ts; };
	
	friend std::ostream& operator<<(std::ostream& out, ConvertSC& input_CSC);
	friend std::ofstream& operator<<(std::ofstream& out, ConvertSC& input_CSC);
};
Matrix AEC_to_CC(Matrix &Precession);
Matrix CC_to_TEC(Matrix& Precession, Matrix& Nutation);
Matrix TEC_to_CC(Matrix& TEC);
Matrix CC_to_TC(Matrix& Precession, Matrix& Nutation, Matrix& ERM);
Matrix TC_to_CC(Matrix& CC_to_TC);
Matrix SC_to_DC(Matrix& GEC);