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); }
public float[] CalculateHouses(AstroDefs.planet_positions pp) { float[] houses = new float[12]; HouseCalc.calcHouses(ref houses, pp, HouseSystem, Latitude, Longitude); return(houses); }
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); }