расчет ПУУД

This commit is contained in:
emelianov
2026-06-04 09:39:27 +03:00
parent 78887dd63a
commit faedd21f43
12 changed files with 1162 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# 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:
```kotlin
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,
)
)
```
## Примечания по переносу
1. Временные параметры задаются в интегральных секундах, как в `ballistics-lib`.
2. Углы задаются в радианах.
3. Линейные параметры оптики в `AngularMotionConfig` сохранены в миллиметрах, как в исходном `sBLS_KA`.
4. Расчет времени начала режима сохраняет подход `calcTn`: поиск корня на интервале `t ± 180 с` и округление к `discreteTimes`.
5. Интервал успокоения рассчитывается обратной интерполяцией первых точек ПУУД, аналогично `TauIntervalCalculator`.