module Data.Astro.Effects.Aberration
(
  includeAberration
)
where
import Data.Astro.Types (DecimalDegrees, toRadians, fromDMS)
import Data.Astro.Time.JulianDate (JulianDate)
import Data.Astro.Coordinate (EclipticCoordinates(..))
includeAberration :: EclipticCoordinates -> JulianDate -> DecimalDegrees -> EclipticCoordinates
includeAberration (EcC beta lambda) jd sunLambda =
  let lambdaDiff = toRadians $ sunLambda - lambda
      beta' = toRadians beta
      dLambda = -20.5 * (cos lambdaDiff) / (cos beta')
      dBeta = -20.5 * (sin lambdaDiff) * (sin beta')
  in EcC (beta + fromDMS 0 0 dBeta) (lambda + fromDMS 0 0 dLambda)