public Coordinates Transform(Epoch epoch) { var now = DateTime.Now; var jdUTC = Astrometry.GetJulianDate(now); var zenithDistance = Astrometry.ToRadians(90d - Altitude.Degree); var deltaUT = Astrometry.DeltaUT(now); var raRad = 0d; var decRad = 0d; SOFA.TopocentricToCelestial("A", Azimuth.Radians, zenithDistance, jdUTC, 0d, deltaUT, Longitude.Radians, Latitude.Radians, 0d, 0d, 0d, 0d, 0d, 0d, 0d, ref raRad, ref decRad); var ra = Angle.ByRadians(raRad); var dec = Angle.ByRadians(decRad); var coordinates = new Coordinates(ra, dec, Epoch.J2000); return(coordinates.Transform(epoch)); }
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); })); }