package space.nstart.pcp.pcp_request_service.angular

import space.nstart.pcp.angularmotion.AngularMotionMode
import java.time.LocalDateTime

data class AngularMotionSatelliteDTO(
    val satelliteId: Long,
    val code: String,
    val name: String,
    val typeCode: String,
    val availabilityStart: LocalDateTime,
    val availabilityStop: LocalDateTime,
)

data class AngularMotionFlightLinePointDTO(
    val time: LocalDateTime,
    val revolution: Long,
    val latitudeDeg: Double,
    val longitudeDeg: Double,
    val leftLatitudeDeg: Double,
    val leftLongitudeDeg: Double,
    val rightLatitudeDeg: Double,
    val rightLongitudeDeg: Double,
)

data class AngularMotionCalculationResultDTO(
    val mode: AngularMotionMode,
    val satelliteId: Long,
    val approximateTime: LocalDateTime,
    val startTime: LocalDateTime,
    val contourWkt: String?,
    val points: List<AngularMotionPointDTO>,
)

data class AngularMotionPointDTO(
    val time: LocalDateTime,
    val revolution: Long,
    val tangDeg: Double,
    val krenDeg: Double,
    val riskDeg: Double,
    val groundLatitudeDeg: Double?,
    val groundLongitudeDeg: Double?,
    val omegaX: Double,
    val omegaY: Double,
    val omegaZ: Double,
    val wdX: Double,
    val wdY: Double,
    val wdZ: Double,
    val sdi: Double,
    val sdiLeft: Double?,
    val sdiRight: Double?,
    val sdiSpread: Double?,
)
