# 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`.