def GetNextSankranti(startDate): zodiac = 0 step = 1.0 count = 0 prevday = GCGregorianDate() d = GCGregorianDate(date=startDate) prev = GCMath.putIn360( GCSunData.GetSunLongitude(d) - GCAyanamsha.GetAyanamsa(d.GetJulian())) prev_rasi = int(floor(prev / 30.0)) while count < 20: prevday.Set(d) d.shour += step d.NormalizeHours() ld = GCMath.putIn360( GCSunData.GetSunLongitude(d) - GCAyanamsha.GetAyanamsa(d.GetJulian())) new_rasi = int(floor(ld / 30.0)) if prev_rasi != new_rasi: zodiac = new_rasi step *= 0.5 d.Set(prevday) count += 1 continue return d, zodiac
def GetTithiTimes(ed, vc, sunRise): d1 = GCGregorianDate() d2 = GCGregorianDate() vc.shour = sunRise GetPrevTithiStart(ed, vc, d1) GetNextTithiStart(ed, vc, d2) titBeg = d1.shour + d1.GetJulian() - vc.GetJulian() titEnd = d2.shour + d2.GetJulian() - vc.GetJulian() return titEnd - titBeg, titBeg, titEnd
def GetPrevConjunction(date, earth, forward=False): prevSun = 0.0 prevMoon = 0.0 prevDiff = 0.0 nowSun = 0.0 nowMoon = 0.0 nowDiff = 0.0 dir = 1.0 if forward else -1.0 moon = GCMoonData.MOONDATA() d = GCGregorianDate(date=date) d.shour = 0.5 d.tzone = 0.0 jd = d.GetJulian() # set initial data for input day # NOTE: for grenwich moon.Calculate(jd, earth) prevSun = GCSunData.GetSunLongitude(d) prevMoon = moon.longitude_deg prevDiff = GCMath.putIn180(prevSun - prevMoon) for bCont in range(32): if forward: d.NextDay() else: d.PreviousDay() jd += dir moon.Calculate(jd, earth) nowSun = GCSunData.GetSunLongitude(d) nowMoon = moon.longitude_deg nowDiff = GCMath.putIn180(nowSun - nowMoon) if IsConjunction(nowMoon, nowSun, prevSun, prevMoon): # now it calculates actual time and zodiac of conjunction if prevDiff == nowDiff: return 0 x = math.fabs(nowDiff) / math.fabs(prevDiff - nowDiff) if x < 0.5: if forward: d.PreviousDay() d.shour = x + 0.5 else: if not forward: d.NextDay() d.shour = x - 0.5 date.Set(d) prevSun = GCMath.putIn360(prevSun) nowSun = GCMath.putIn360(nowSun) if math.fabs(prevSun - nowSun) > 10.0: return GCMath.putIn180(nowSun) + (GCMath.putIn180(prevSun) - GCMath.putIn180(nowSun)) * x else: return nowSun + (prevSun - nowSun) * x prevSun = nowSun prevMoon = nowMoon prevDiff = nowDiff return 1000.0