From bdc8a847b68605e7632c95bb0c156d6086ce04de Mon Sep 17 00:00:00 2001 From: "Gergely POLONKAI (W00d5t0ck)" Date: Tue, 3 Sep 2013 11:40:57 +0200 Subject: [PATCH] Outsourced aspect calculation to SWE-GLib --- src/astrognome.c | 122 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 113 insertions(+), 9 deletions(-) diff --git a/src/astrognome.c b/src/astrognome.c index b9a5366..519e71f 100644 --- a/src/astrognome.c +++ b/src/astrognome.c @@ -257,6 +257,17 @@ print_house_cusp(gpointer data, gpointer user_data) printf("House %2d..: %s (%f)\n", house_data->house, house_data->sign->name, house_data->cusp_position); } +void +print_aspects(GsweAspectData *aspect_data, gpointer user_data) +{ + GswePlanet planet = GPOINTER_TO_INT(user_data); + GswePlanetData *other_planet = (aspect_data->planet1->planet_id == planet) ? aspect_data->planet2 : aspect_data->planet1; + + if (aspect_data->aspect != GSWE_ASPECT_NONE) { + printf(" %s: %s (±%f%%)\n", other_planet->planet_info->name, aspect_data->aspect_info->name, aspect_data->difference); + } +} + int main(int argc, char *argv[]) { @@ -283,6 +294,7 @@ main(int argc, char *argv[]) GsweTimestamp *timestamp; GsweMoment *moment; GswePlanetData *planet_data; + GList *aspects; #if 1 year = 1983; @@ -345,6 +357,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_ASCENDENT); printf("%s: %s (%f)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->position); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_ASCENDENT); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_ASCENDENT)); + g_list_free(aspects); + planetInfo = g_new0(planetInfo_t, 1); planetInfo->position = planet_data->position; planetInfo->sign = planet_data->sign->sign_id; @@ -356,6 +373,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MC); printf("%s: %s (%f)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->position); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MC); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MC)); + g_list_free(aspects); + planetInfo = g_new0(planetInfo_t, 1); planetInfo->position = planet_data->position; planetInfo->sign = planet_data->sign->sign_id; @@ -367,6 +389,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_VERTEX); printf("%s: %s (%f)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->position); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_VERTEX); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_VERTEX)); + g_list_free(aspects); + planetInfo = g_new0(planetInfo_t, 1); planetInfo->position = planet_data->position; planetInfo->sign = planet_data->sign->sign_id; @@ -378,6 +405,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_SUN); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_SUN); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_SUN)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_SUN, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_SUN), planetInfo); @@ -386,6 +418,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MOON); printf("%s: %s (%.2f%% visibility), %s, House: %d (%f%s)\n", planet_data->planet_info->name, moonStateName[moon_phase->phase], moon_phase->illumination, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MOON); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MOON)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_MOON, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_MOON), planetInfo); @@ -393,6 +430,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MERCURY); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MERCURY); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MERCURY)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_MERCURY, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_MERCURY), planetInfo); @@ -400,6 +442,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_VENUS); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_VENUS); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_VENUS)); + g_list_free(aspects); + planetInfo = get_planet_info (SE_VENUS, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_VENUS), planetInfo); @@ -407,6 +454,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MARS); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MARS); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MARS)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_MARS, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_MARS), planetInfo); @@ -414,6 +466,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_JUPITER); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_JUPITER); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_JUPITER)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_JUPITER, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_JUPITER), planetInfo); @@ -421,6 +478,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_SATURN); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_SATURN); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_SATURN)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_SATURN, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_SATURN), planetInfo); @@ -428,6 +490,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_URANUS); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_URANUS); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_URANUS)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_URANUS, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_URANUS), planetInfo); @@ -435,6 +502,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_NEPTUNE); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_NEPTUNE); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_NEPTUNE)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_NEPTUNE, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_NEPTUNE), planetInfo); @@ -442,6 +514,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_PLUTO); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_PLUTO); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_PLUTO)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_PLUTO, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_PLUTO), planetInfo); @@ -449,6 +526,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MOON_NODE); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MOON_NODE); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MOON_NODE)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_MEAN_NODE, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_MEAN_NODE), planetInfo); @@ -456,6 +538,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_MOON_APOGEE); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_MOON_APOGEE); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_MOON_APOGEE)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_MEAN_APOG, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_MEAN_APOG), planetInfo); @@ -463,6 +550,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_CHIRON); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_CHIRON); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_CHIRON)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_CHIRON, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_CHIRON), planetInfo); @@ -470,6 +562,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_CERES); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_CERES); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_CERES)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_CERES, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_CERES), planetInfo); @@ -477,6 +574,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_PALLAS); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_PALLAS); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_PALLAS)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_PALLAS, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_PALLAS), planetInfo); @@ -484,6 +586,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_JUNO); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_JUNO); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_JUNO)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_JUNO, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_JUNO), planetInfo); @@ -491,6 +598,11 @@ main(int argc, char *argv[]) planet_data = gswe_moment_get_planet(moment, GSWE_PLANET_VESTA); printf("%s: %s, House: %d (%f%s)\n", planet_data->planet_info->name, planet_data->sign->name, planet_data->house, planet_data->position, (planet_data->retrograde) ? ", retrograde" : ""); + aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_VESTA); + printf(" Aspects:\n"); + g_list_foreach(aspects, (GFunc)print_aspects, GINT_TO_POINTER(GSWE_PLANET_VESTA)); + g_list_free(aspects); + planetInfo = get_planet_info(SE_VESTA, te, cusps); g_hash_table_replace(planetInfoTable, GINT_TO_POINTER(SE_VESTA), planetInfo); @@ -507,17 +619,9 @@ main(int argc, char *argv[]) printf("Fix: %d\n", gswe_moment_get_quality_points(moment, GSWE_QUALITY_FIX)); printf("Mutable: %d\n", gswe_moment_get_quality_points(moment, GSWE_QUALITY_MUTABLE)); - printf("\nASPECTS\n=======\n\n"); - - planetIdList = g_hash_table_get_keys(planetInfoTable); - aspectCheckData.planetIdList = planetIdList; - aspectCheckData.currentOuterPlanetId = 0; - aspectCheckData.planetInfoTable = planetInfoTable; - aspectCheckData.planetDataTable = planetDataTable; - g_list_foreach(planetIdList, check_aspects_outer_loop, &aspectCheckData); - printf("\nANTISCIA\n========\n\n"); + planetIdList = g_hash_table_get_keys(planetInfoTable); aspectCheckData.planetIdList = planetIdList; aspectCheckData.currentOuterPlanetId = 0; aspectCheckData.planetInfoTable = planetInfoTable;