Copyright | Alexander Ignatyev 2016 |
---|---|
Safe Haskell | Safe |
Language | Haskell2010 |
Data.Astro.Sun
Description
Calculation characteristics of the Sun.
Terms
- perihelion - minimal distance from the Sun to the planet
- aphelion - maximal distance from the Sun to the planet
- perigee - minimal distance from the Sun to the Earth
- apogee - maximal distance from the Sun to the Earth
Example
import Data.Astro.Time.JulianDate import Data.Astro.Coordinate import Data.Astro.Types import Data.Astro.Sun ro :: GeographicCoordinates ro = GeoC (fromDMS 51 28 40) (-(fromDMS 0 0 5)) dt :: LocalCivilTime dt = lctFromYMDHMS (DH 1) 2017 6 25 10 29 0 today :: LocalCivilDate today = lcdFromYMD (DH 1) 2017 6 25 jd :: JulianDate jd = lctUniversalTime dt verticalShift :: DecimalDegrees verticalShift = refract (DD 0) 12 1012 -- distance from the Earth to the Sun in kilometres distance :: Double distance = sunDistance jd -- 1.5206375976421073e8 -- Angular Size angularSize :: DecimalDegrees angularSize = sunAngularSize jd -- DD 0.5244849215333616 -- The Sun's coordinates ec1 :: EquatorialCoordinates1 ec1 = sunPosition2 jd -- EC1 {e1Declination = DD 23.37339098989099, e1RightAscension = DH 6.29262026252748} hc :: HorizonCoordinates hc = ec1ToHC ro jd ec1 -- HC {hAltitude = DD 49.312050979507404, hAzimuth = DD 118.94723825710143} -- Rise and Set riseSet :: RiseSetMB riseSet = sunRiseAndSet ro 0.833333 today -- RiseSet -- (Just (2017-06-25 04:44:04.3304 +1.0,DD 49.043237261724215)) -- (Just (2017-06-25 21:21:14.4565 +1.0,DD 310.91655607595595))
Synopsis
- data SunDetails = SunDetails {}
- data RiseSet a
- = RiseSet a a
- | Circumpolar
- | NeverRises
- sunDetails :: JulianDate -> SunDetails
- j2010SunDetails :: SunDetails
- sunMeanAnomaly2 :: SunDetails -> DecimalDegrees
- sunEclipticLongitude1 :: SunDetails -> JulianDate -> DecimalDegrees
- sunEclipticLongitude2 :: SunDetails -> DecimalDegrees
- sunPosition1 :: SunDetails -> JulianDate -> EquatorialCoordinates1
- sunPosition2 :: JulianDate -> EquatorialCoordinates1
- sunDistance :: JulianDate -> Double
- sunAngularSize :: JulianDate -> DecimalDegrees
- sunRiseAndSet :: GeographicCoordinates -> DecimalDegrees -> LocalCivilDate -> RiseSetMB
- equationOfTime :: JulianDate -> DecimalHours
- solarElongation :: EquatorialCoordinates1 -> JulianDate -> DecimalDegrees
Documentation
data SunDetails Source #
Details of the Sun's apparent orbit at the given epoch
Constructors
SunDetails | |
Fields
|
Instances
Show SunDetails Source # | |
Defined in Data.Astro.Sun Methods showsPrec :: Int -> SunDetails -> ShowS # show :: SunDetails -> String # showList :: [SunDetails] -> ShowS # |
Some Info of Rise and Set of a celestial object
Constructors
RiseSet a a | Some Info of Rise and Set of the celestial object |
Circumpolar | The celestial object is always above the horizon |
NeverRises | The celestial object is always below the horizon |
sunDetails :: JulianDate -> SunDetails Source #
Calculate SunDetails for the given JulianDate.
j2010SunDetails :: SunDetails Source #
SunDetails at the Sun's reference Epoch J2010.0
sunMeanAnomaly2 :: SunDetails -> DecimalDegrees Source #
Calculate mean anomaly using the second 'more accurate' method
sunEclipticLongitude1 :: SunDetails -> JulianDate -> DecimalDegrees Source #
Calculate the ecliptic longitude of the Sun with the given SunDetails at the given JulianDate
sunEclipticLongitude2 :: SunDetails -> DecimalDegrees Source #
Calculate the ecliptic longitude of the Sun
sunPosition1 :: SunDetails -> JulianDate -> EquatorialCoordinates1 Source #
Calculate Equatorial Coordinates of the Sun with the given SunDetails at the given JulianDate.
It is recommended to use j2010SunDetails
as a first parameter.
sunPosition2 :: JulianDate -> EquatorialCoordinates1 Source #
More accurate method to calculate position of the Sun
sunDistance :: JulianDate -> Double Source #
Calculate Sun-Earth distance.
sunAngularSize :: JulianDate -> DecimalDegrees Source #
Calculate the Sun's angular size (i.e. its angular diameter).
sunRiseAndSet :: GeographicCoordinates -> DecimalDegrees -> LocalCivilDate -> RiseSetMB Source #
Calculatesthe Sun's rise and set It takes coordinates of the observer, local civil date, vertical shift (good value is 0.833333). It returns Nothing if fails to calculate rise and/or set. It should be accurate to within a minute of time.
equationOfTime :: JulianDate -> DecimalHours Source #
Calculates discrepancy between the mean solar time and real solar time at the given date.
solarElongation :: EquatorialCoordinates1 -> JulianDate -> DecimalDegrees Source #
Calculates the angle between the lines of sight to the Sun and to a celestial object specified by the given coordinates at the given Universal Time.