def GetNextMoonRasi(ed, startDate): nextDate = GCGregorianDate.GCGregorianDate(date=startDate) phi = 30.0 jday = startDate.GetJulianComplete() moon = MOONDATA() d = GCGregorianDate.GCGregorianDate(date=startDate) ayanamsa = GCAyanamsha.GetAyanamsa(jday) scan_step = 0.5 prev_naks = 0 new_naks = -1 xj = 0.0 xd = GCGregorianDate.GCGregorianDate() moon.Calculate(jday, ed) l1 = GCMath.putIn360(moon.longitude_deg - ayanamsa) prev_naks = int(GCMath.Floor(l1 / phi)) counter = 0 while counter < 20: xj = jday xd.Set(d) jday += scan_step d.shour += scan_step if d.shour > 1.0: d.shour -= 1.0 d.NextDay() moon.Calculate(jday, ed) l2 = GCMath.putIn360(moon.longitude_deg - ayanamsa) new_naks = int(GCMath.Floor(l2 / phi)) if prev_naks != new_naks: jday = xj d.Set(xd) scan_step *= 0.5 counter += 1 continue else: l1 = l2 nextDate.Set(d) return new_naks, nextDate
def GetRasi(SunLongitude, Ayanamsa): return int(GCMath.Floor(GCMath.putIn360(SunLongitude - Ayanamsa) / 30.0))