private static Tuple <NOVAS.SkyPosition, NOVAS.SkyPosition> GetMoonAndSunPosition(DateTime date, double jd) { var deltaT = DeltaT(date); var obs = new NOVAS.Observer() { OnSurf = new NOVAS.OnSurface() { }, Where = (short)NOVAS.ObserverLocation.EarthGeoCenter }; var moon = new NOVAS.CelestialObject() { Name = "Moon", Number = (short)NOVAS.Body.Moon, Star = new NOVAS.CatalogueEntry(), Type = (short)NOVAS.ObjectType.MajorPlanetSunOrMoon }; var moonPosition = new NOVAS.SkyPosition(); var jdTt = jd + SecondsToDays(deltaT); var err = NOVAS.Place(jdTt, moon, obs, deltaT, NOVAS.CoordinateSystem.EquinoxOfDate, NOVAS.Accuracy.Full, ref moonPosition); var sun = new NOVAS.CelestialObject() { Name = "Sun", Number = (short)NOVAS.Body.Sun, Star = new NOVAS.CatalogueEntry(), Type = (short)NOVAS.ObjectType.MajorPlanetSunOrMoon }; var sunPosition = new NOVAS.SkyPosition(); NOVAS.Place(jdTt, sun, obs, deltaT, NOVAS.CoordinateSystem.EquinoxOfDate, NOVAS.Accuracy.Full, ref sunPosition); return(new Tuple <NOVAS.SkyPosition, NOVAS.SkyPosition>(moonPosition, sunPosition)); }
public Task Calculate() { return(Task.Run(() => { var jd = Astrometry.GetJulianDate(Date); var deltaT = Astrometry.DeltaT(Date); var location = new NOVAS.OnSurface() { Latitude = Latitude, Longitude = Longitude }; var observer = new NOVAS.Observer() { OnSurf = location, Where = (short)NOVAS.ObserverLocation.EarthGeoCenter }; var obj = new NOVAS.CelestialObject() { Name = Name, Number = (short)BodyNumber, Star = new NOVAS.CatalogueEntry(), Type = (short)NOVAS.ObjectType.MajorPlanetSunOrMoon }; var objPosition = new NOVAS.SkyPosition(); NOVAS.Place(jd + Astrometry.SecondsToDays(deltaT), obj, observer, deltaT, NOVAS.CoordinateSystem.EquinoxOfDate, NOVAS.Accuracy.Full, ref objPosition); this.Distance = Astrometry.AUToKilometer(objPosition.Dis); var siderealTime = Astrometry.GetLocalSiderealTime(Date, Longitude); var hourAngle = Astrometry.HoursToDegrees(Astrometry.GetHourAngle(siderealTime, objPosition.RA)); this.Altitude = Astrometry.GetAltitude(hourAngle, Latitude, objPosition.Dec); })); }