def orientality(obj, sun): """ Returns if an object is oriental or occidental to the sun. """ dist = angle.distance(sun.lon, obj.lon) return OCCIDENTAL if dist < 180 else ORIENTAL
def solarReturnJD(jd, lon, forward=True): """ Finds the julian date before or after 'jd' when the sun is at longitude 'lon'. It searches forward by default. """ sun = swe.sweObjectLon(const.SUN, jd) if forward: dist = angle.distance(sun, lon) else: dist = -angle.distance(lon, sun) while abs(dist) > MAX_ERROR: jd = jd + dist / 0.9833 # Sun mean motion sun = swe.sweObjectLon(const.SUN, jd) dist = angle.closestdistance(sun, lon) return jd
def light(obj, sun): """ Returns if an object is augmenting or diminishing light. """ dist = angle.distance(sun.lon, obj.lon) faster = sun if sun.lonspeed > obj.lonspeed else obj if faster == sun: return LIGHT_DIMINISHING if dist < 180 else LIGHT_AUGMENTING else: return LIGHT_AUGMENTING if dist < 180 else LIGHT_DIMINISHING
def syzygyJD(jd): """ Finds the latest new or full moon and returns the julian date of that event. """ sun = swe.sweObjectLon(const.SUN, jd) moon = swe.sweObjectLon(const.MOON, jd) dist = angle.distance(sun, moon) # Offset represents the Syzygy type. # Zero is conjunction and 180 is opposition. offset = 180 if (dist >= 180) else 0 while abs(dist) > MAX_ERROR: jd = jd - dist / 13.1833 # Moon mean daily motion sun = swe.sweObjectLon(const.SUN, jd) moon = swe.sweObjectLon(const.MOON, jd) dist = angle.closestdistance(sun - offset, moon) return jd
def sweHouses(jd, lat, lon, hsys): """ Returns lists of houses and angles. """ hsys = SWE_HOUSESYS[hsys] hlist, ascmc = swisseph.houses(jd, lat, lon, hsys) # Add first house to the end of 'hlist' so that we # can compute house sizes with an iterator hlist += (hlist[0],) houses = [ { 'id': const.LIST_HOUSES[i], 'lon': hlist[i], 'size': angle.distance(hlist[i], hlist[i+1]) } for i in range(12) ] angles = [ {'id': const.ASC, 'lon': ascmc[0]}, {'id': const.MC, 'lon': ascmc[1]}, {'id': const.DESC, 'lon': angle.norm(ascmc[0] + 180)}, {'id': const.IC, 'lon': angle.norm(ascmc[1] + 180)} ] return (houses, angles)