Exemplo n.º 1
0
        protected bool matchesQuery(ChartData cd)
        {
            int planet  = searchQuery[0];
            int sign    = searchQuery[1];
            int house   = searchQuery[2];
            int aspect  = searchQuery[3];
            int planet2 = searchQuery[4];

            AstroDefs.planet_positions pp = cd.CalculatePositions();
            bool ok = true;

            if (ok && sign > -1)
            {
                if (sign != AstroDefs.ephem_signForPosition(AstroDefs.ephem_positionOfPlanet(pp, planet)))
                {
                    ok = false;
                }
            }
            if (ok && house > -1)
            {
                float[] houses = cd.CalculateHouses(pp);
                if (house != HouseCalc.houses_houseOfPosition(AstroDefs.ephem_positionOfPlanet(pp, planet), houses))
                {
                    ok = false;
                }
            }
            if (ok && aspect > -1 && planet2 > -1)
            {
                if (aspect != AstroDefs.getAspect(
                        AstroDefs.ephem_positionOfPlanet(pp, planet),
                        AstroDefs.ephem_positionOfPlanet(pp, planet2), AstroDefs.DEFAULT_ORBS))
                {
                    ok = false;
                }
            }
            return(ok);
        }
Exemplo n.º 2
0
 public float[] CalculateHouses(AstroDefs.planet_positions pp)
 {
     float[] houses = new float[12];
     HouseCalc.calcHouses(ref houses, pp, HouseSystem, Latitude, Longitude);
     return(houses);
 }
Exemplo n.º 3
0
        public AstroDefs.planet_positions CalculatePositions(bool noPlanets)
        {
            //AstroDefs.EPHEM_YEAR preloadedYear = null;
            //TZInfo.SimpleTime st;
            if (TimeZone != TimeZoneDeviceLocal)
            {
                TZInfo tz;
                if (zoneCache.ContainsKey(TimeZone.Trim()))
                {
                    tz = zoneCache[TimeZone.Trim()];
                }
                else
                {
                    tz = new TZInfo(TimeZone.Trim());
                    zoneCache[TimeZone.Trim()] = tz;
                }
                //TZInfo tz = new TZInfo(TimeZone);
                utcTime = tz.toUTC(Year, Month, Day, Hour, Minute);
            }
            else
            {
                DateTime dt  = new DateTime(Year, Month, Day, Hour, Minute, 0, DateTimeKind.Local);
                DateTime utc = dt.ToUniversalTime();
                utcTime        = new TZInfo.SimpleTime();
                utcTime.year   = utc.Year;
                utcTime.month  = utc.Month;
                utcTime.day    = utc.Day;
                utcTime.hour   = utc.Hour;
                utcTime.minute = utc.Minute;
            }

            AstroDefs.planet_positions pp;
            if (noPlanets)
            {
                pp                 = AstroDefs.NULLpositions();
                pp.gmtTime         = AstroDefs.hmsToHours(utcTime.hour, utcTime.minute, 0);
                pp.gmt0sideralTime = (float)AstroDefs.calcGmtSideralTime(utcTime.year, utcTime.month, utcTime.day, 0, 0);
            }
            else
            {
                //AstroDefs.EPHEM_YEAR yearCache = null;
                if (preloadedYear != null && preloadedYear.days[0].year == utcTime.year)
                {
                    lastUsed = 1;
                    //yearCache = preloadedYear;
                }
                else if (preloadedYear2 != null && preloadedYear2.days[0].year == utcTime.year)
                {
                    lastUsed = 2;
                    //yearCache = preloadedYear2;
                }
                else
                {
                    if (lastUsed == 1)
                    {
                        lastUsed = 2;
                        //yearCache = preloadedYear2;
                    }
                    else
                    {
                        lastUsed = 1;
                        //yearCache = preloadedYear;
                    }
                }

                if (lastUsed == 1)
                {
                    pp = AstroDefs.ephem_calculateRecForGmt(
                        utcTime.year, utcTime.month, utcTime.day, utcTime.hour, utcTime.minute, 0,
                        ref preloadedYear);
                }
                else
                {
                    pp = AstroDefs.ephem_calculateRecForGmt(
                        utcTime.year, utcTime.month, utcTime.day, utcTime.hour, utcTime.minute, 0,
                        ref preloadedYear2);
                }
            }

            if (HouseSystem != HouseCalc.HOUSES_NULL)
            {
                HouseCalc.calcAscAndMc(ref pp, Latitude, Longitude);
            }
            else
            {
                float[] houses = CalculateHouses(pp);
                pp.ascendant   = houses[0];
                pp.mediumCoeli = houses[9];
            }
            return(pp);
        }