Esempio n. 1
0
        public EphemerisEntry Get(DateTime date)
        {
            var utcDate    = date.ToUniversalTime();
            var dateToFind = new DateTime(utcDate.Year, utcDate.Month, utcDate.Day, 0, 0, 0, DateTimeKind.Utc);
            var id1        = dateToFind.Ticks;
            var id2        = (dateToFind + TimeSpan.FromDays(1)).Ticks;

            using (var context = new EphemerisDbContext())
            {
                var entry1 = context.Ephemeris.Find(id1);
                var entry2 = context.Ephemeris.Find(id2);

                var diff     = date - dateToFind;
                var fraction = diff.TotalSeconds / (24.0 * 60.0 * 60.0);

                var entry = new EfEphemerisEntry
                {
                    Id                        = 0,
                    Date                      = date,
                    SiderealTime              = AMath.Interpolate(entry1.SiderealTime, entry2.SiderealTime, fraction),
                    Sun                       = AMath.Interpolate(entry1.Sun, entry2.Sun, fraction),
                    Moon                      = AMath.Interpolate(entry1.Moon, entry2.Moon, fraction),
                    Mercury                   = AMath.Interpolate(entry1.Mercury, entry2.Mercury, fraction, entry1.MercuryRetrograde),
                    MercuryRetrograde         = entry1.MercuryRetrograde,
                    Venus                     = AMath.Interpolate(entry1.Venus, entry2.Venus, fraction, entry1.VenusRetrograde),
                    VenusRetrograde           = entry1.VenusRetrograde,
                    Mars                      = AMath.Interpolate(entry1.Mars, entry2.Mars, fraction, entry1.MarsRetrograde),
                    MarsRetrograde            = entry1.MarsRetrograde,
                    Jupiter                   = AMath.Interpolate(entry1.Jupiter, entry2.Jupiter, fraction, entry1.JupiterRetrograde),
                    JupiterRetrograde         = entry1.JupiterRetrograde,
                    Saturn                    = AMath.Interpolate(entry1.Saturn, entry2.Saturn, fraction, entry1.SaturnRetrograde),
                    SaturnRetrograde          = entry1.SaturnRetrograde,
                    Uranus                    = AMath.Interpolate(entry1.Uranus, entry2.Uranus, fraction, entry1.UranusRetrograde),
                    UranusRetrograde          = entry1.UranusRetrograde,
                    Neptune                   = AMath.Interpolate(entry1.Neptune, entry2.Neptune, fraction, entry1.NeptuneRetrograde),
                    NeptuneRetrograde         = entry1.NeptuneRetrograde,
                    Pluto                     = AMath.Interpolate(entry1.Pluto, entry2.Pluto, fraction, entry1.PlutoRetrograde),
                    PlutoRetrograde           = entry1.PlutoRetrograde,
                    TrueNode                  = AMath.Interpolate(entry1.TrueNode, entry2.TrueNode, fraction, entry1.TrueNodeRetrograde),
                    TrueNodeRetrograde        = entry1.TrueNodeRetrograde,
                    MeanNode                  = AMath.Interpolate(entry1.MeanNode, entry2.MeanNode, fraction, entry1.MeanNodeRetrograde),
                    MeanNodeRetrograde        = entry1.MeanNodeRetrograde,
                    BlackMoonLilith           = AMath.Interpolate(entry1.BlackMoonLilith, entry2.BlackMoonLilith, fraction, entry1.BlackMoonLilithRetrograde),
                    BlackMoonLilithRetrograde = entry1.BlackMoonLilithRetrograde,
                    Chiron                    = AMath.Interpolate(entry1.Chiron, entry2.Chiron, fraction, entry1.ChironRetrograde),
                    ChironRetrograde          = entry1.ChironRetrograde
                };

                return(entry.ToEntry());
            }
        }
Esempio n. 2
0
 public static EphemerisEntry ToEntry(this EfEphemerisEntry entry) =>
 new EphemerisEntry(
     entry.Date,
     entry.SiderealTime,
     new Planet(PlanetType.Sun, entry.Sun, PlanetDirection.Direct),
     new Planet(PlanetType.Moon, entry.Moon, PlanetDirection.Direct),
     new Planet(PlanetType.Mercury, entry.Mercury, entry.MercuryRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Venus, entry.Venus, entry.VenusRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Mars, entry.Mars, entry.MarsRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Jupiter, entry.Jupiter, entry.JupiterRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Saturn, entry.Saturn, entry.SaturnRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Uranus, entry.Uranus, entry.UranusRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Neptune, entry.Neptune, entry.NeptuneRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Pluto, entry.Pluto, entry.PlutoRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.TrueNode, entry.TrueNode, entry.TrueNodeRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.MeanNode, entry.MeanNode, entry.MeanNodeRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.BlackMoonLilith, entry.BlackMoonLilith, entry.BlackMoonLilithRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct),
     new Planet(PlanetType.Chiron, entry.Chiron, entry.ChironRetrograde ? PlanetDirection.Retrograde : PlanetDirection.Direct));