예제 #1
0
        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));
        }
예제 #2
0
        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);
            }));
        }