Readme.md
@build commondata Как этим пользоваться
Как собрать?
Для сборки проектов необходимо две библиотеки:
- Eigen - широкоизвестная библиотека для работы с линейной алгеброй;
- ERFA - открытая реализация алгоритмов представленных в SOFA. Дальше за вас все сделает CMAKE, да, забыл, стандарт С++23.
Если вы захотите запустить тесты, то нужна еще библиотека catch2
Как начать разрабатывать свои приложения?
Общие принципы и минимальный вариант.
На данный момент наличествует только астродинамическая часть, то далее речь только про нее. Так вот, чтобы все заработало Нужно правильно переводить из TAI в UTC и обратно, а для этого надо задать переменные:
namespace URSA{
namespace TimeScale
{
int (*GetLeapSecondFromTAI)(const IntegrityAtomicTime & taiMJ);
int (*GetLeapSecondFromUTC) (const UTTime& utcMJ);
double (*GetDUt1)(const UTTime& mjd) = nullptr;
};
}
Так же зачастую необходимо задать модель вращения Земли, которая таже определяется в глобальной переменной
namespace URSA{
class RefFrameTransform
{
static std::unique_ptr<AbstractEarthOrientationModel> _EOP;
};
}
Таким образом минимальный пример:
#include <TimeScale.h>
#include <AbstractEarthOrientationModel.h>
#include <Referenceframe.h>
using namespace URSA;
inline int MyGetLeapSecondForTAI(const IntegrityAtomicTime &tai) { return 0; }
inline int MyGetLeapSecondForUTC(const UTTime &utc) { return 0; }
inline double MyGetDUT1(const UTTime& utc) { return 0; }
class MyEarthOrientationModel: public AbstractEarthOrientationModel
{
};
int main(){
TimeScale::GetLeapSecondFromTAI = MyGetLeapSecondForTAI;
TimeScale::GetLeapSecondFromUTC = MyGetLeapSecondForUTC;
TimeScale::GetDUt1 = MyGetDUT1;
RefFrameTransform::_EOP = std::unique_ptr<AbstractEarthOrientationModel>( new MyEarthOrientationModel());
return 1;
}
Используя UrsaStandardModels
#include <vector>
#include <Referenceframe.h>
#include <IAUStandard92EarthOrientationModel.h>
#include <StandardTimeScale.h>
int main(){
std::vector<DUT1> dutData = {{mjdNow, -0.010217}};
std::vector<LeapSecond> leapDAta = {{0, 37}};
std::vector<EOPData> eopData = {{mjdNow, -5.58432638586019E-07, -3.62155819788823E-08}};
RefFrameTransform::_EOP = std::unique_ptr<AbstractEarthOrientationModel>(
new IAUStandard92EarthOrientationModel(eopData));
StandardTimeScale::SetLeapSeconds(leapDAta);
StandardTimeScale::SetDUt1(dutData);
return 1;
}
Описание
Проект в рамках которого хочется создать открытую библиотеку по моделированию, управления и создания бортового ПО космических аппаратов.
Конвейеры
0 успешных
0 с ошибкой