angular-motion-lib
Библиотека расчета программ управления угловым движением КА.
Библиотека создана как перенос расчетного контура из проекта OrbitalMotion/AISTPUUD/SurveyPUUD:
ConstOrientAISTPUUD→ConstOrientPUUD;AzimuthAISTPUUD→AzimuthPUUD;SmoothSDIAISTPUUD→SmoothSDIPUUD.
В новых классах нет префикса AIST. Вместо старого C++/Qt Ballistics используется существующая Kotlin-библиотека проекта PCP:
ballistics.orbitalPoints.timeStepper.AbstractStepperдля выхода на заданное время;ballistics.types.OrbitalPoint,Orientation,BLHPoint;ballistics.utils.astro.AstronomerJ2000;ballistics.utils.math.Vector3D,Matrix3D,Quaternion3D.
Основной API:
val calculator = AngularMotionCalculatorFactory.create(
mode = AngularMotionMode.AZIMUTH,
stepper = stepper,
)
val result = calculator.calculate(
SurveyId(
nlv = 4,
t = startTimeSeconds,
b = latitudeRad,
l = longitudeRad,
h = heightMeters,
duration = 20.0,
sdi = listOf(150.0),
azimuth = azimuthRad,
)
)
Примечания по переносу
- Временные параметры задаются в интегральных секундах, как в
ballistics-lib. - Углы задаются в радианах.
- Линейные параметры оптики в
AngularMotionConfigсохранены в миллиметрах, как в исходномsBLS_KA. - Расчет времени начала режима сохраняет подход
calcTn: поиск корня на интервалеt ± 180 си округление кdiscreteTimes. - Интервал успокоения рассчитывается обратной интерполяцией первых точек ПУУД, аналогично
TauIntervalCalculator.