расчет ПУУД
This commit is contained in:
@@ -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`.
|
||||
Reference in New Issue
Block a user