about summary refs log blame commit diff
path: root/src/#Logic.hs#
blob: 25214ed33d5489c39e864f29c450e8e13983cb1f (plain) (tree)
















































                                                                                                                        
module Logic where

import Data.Astro.Types
import Data.Astro.Time.JulianDate
import Data.Astro.Coordinate
import Data.Astro.Planet

data SkyT = Sky { s_date :: JulianDate,
                  objects :: [SkyObjectT]
                  } deriving (Show)

data RelativeSkyT = RelativeSky { rs_date :: JulianDate,
                  nonVisibleObjects :: [SkyObjectT],
                  visibleObjects :: [SkyObjectT]
                  } deriving (Show)

data SkyObjectT = SkyObject {
    so_name :: String,
    coordinates :: EquatorialCoordinates1
} deriving (Show)

data RelativeSkyObjectT = RelativeSkyObject {
    rso_name :: String
    --m_relative_coordinates :: HorizonCoordinates
} deriving (Show)

generateSky :: JulianDate -> SkyT
generateSky date = Sky { 
                            s_date = date,
                            objects = predictSkyObjects date
                        }

trackedObjects :: [Planet]
trackedObjects = [Mercury, Venus, Mars, Jupiter, Saturn, Neptune, Uranus] --Moon?

predictSkyObjects :: JulianDate -> [SkyObjectT]
predictSkyObjects date = do
                            object <- trackedObjects
                            objectDetails <- return $ j2010PlanetDetails object
                            earthDetails <- return $ j2010PlanetDetails Earth
                            objectPosition <- return $ planetPosition planetTrueAnomaly1 objectDetails earthDetails date
                            return SkyObject { so_name = show object, coordinates = objectPosition }

relativize_sky :: SkyT -> GeographicCoordinates -> RelativeSkyT
relativize_sky sky location = RelativeSky {
                                             rs_date = s_date sky,
                                             nonVisibleObjects = objects sky,
                                             visibleObjects = []
                                          }λ> λ>