From 7910522911739f5f12249532fdc051ddc82a4a96 Mon Sep 17 00:00:00 2001 From: Zwarf Date: Sun, 1 May 2022 01:49:58 +0200 Subject: [PATCH] Center datapoints around noon --- src/window/overview-page/overview-view.c | 57 ++++++++++++++++++------ src/window/overview-page/overview-view.h | 3 ++ src/window/picplanner-window.c | 31 ++++++++++--- 3 files changed, 71 insertions(+), 20 deletions(-) diff --git a/src/window/overview-page/overview-view.c b/src/window/overview-page/overview-view.c index 453d60f..511982d 100644 --- a/src/window/overview-page/overview-view.c +++ b/src/window/overview-page/overview-view.c @@ -103,10 +103,19 @@ picplanner_overview_set_current_coordinates_sun (PicplannerOverview *overview, { char *char_sun_rise; char *char_sun_set; + + GDateTime *date_time_noon; GDateTime *date_time_rise; GDateTime *date_time_set; - date_time_rise = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); - date_time_set = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); + + date_time_noon = g_date_time_new (g_date_time_get_timezone (overview->date_time), + g_date_time_get_year (overview->date_time), + g_date_time_get_month (overview->date_time), + g_date_time_get_day_of_month (overview->date_time), + 12, 0, 0); + + date_time_rise = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); + date_time_set = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); char_sun_rise = g_strdup_printf ("%02d:%02d", g_date_time_get_hour (date_time_rise), @@ -132,10 +141,19 @@ picplanner_overview_set_current_coordinates_moon (PicplannerOverview *overview, { char *char_moon_rise; char *char_moon_set; + + GDateTime *date_time_noon; GDateTime *date_time_rise; GDateTime *date_time_set; - date_time_rise = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); - date_time_set = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); + + date_time_noon = g_date_time_new (g_date_time_get_timezone (overview->date_time), + g_date_time_get_year (overview->date_time), + g_date_time_get_month (overview->date_time), + g_date_time_get_day_of_month (overview->date_time), + 12, 0, 0); + + date_time_rise = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); + date_time_set = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); char_moon_rise = g_strdup_printf ("%02d:%02d", g_date_time_get_hour (date_time_rise), @@ -162,10 +180,19 @@ picplanner_overview_set_current_coordinates_milky_way (PicplannerOverview *overv { char *char_milky_way_rise; char *char_milky_way_set; + + GDateTime *date_time_noon; GDateTime *date_time_rise; GDateTime *date_time_set; - date_time_rise = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); - date_time_set = g_date_time_add_minutes (overview->date_time, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); + + date_time_noon = g_date_time_new (g_date_time_get_timezone (overview->date_time), + g_date_time_get_year (overview->date_time), + g_date_time_get_month (overview->date_time), + g_date_time_get_day_of_month (overview->date_time), + 12, 0, 0); + + date_time_rise = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[0]*24*60/NUM_DATA_POINTS-12*60); + date_time_set = g_date_time_add_minutes (date_time_noon, rise_upper_set_index[2]*24*60/NUM_DATA_POINTS-12*60); char_milky_way_rise = g_strdup_printf ("%02d:%02d", g_date_time_get_hour (date_time_rise), @@ -224,6 +251,7 @@ picplanner_overview_update_map_sun (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_sun, + int current_index, int *rise_upper_set_sun) { int sun_stroke_width = 6; @@ -244,7 +272,8 @@ picplanner_overview_update_map_sun (PicplannerOverview *overview, picplanner_draw_layer_remove_all (overview->pp_layer_sun); picplanner_draw_layer_remove_all (overview->pp_layer_sun_rise_set); - if (array_coordinates_sun[NUM_DATA_POINTS+1]<0) + g_print ("Current index: %d\n", current_index*2); + if (array_coordinates_sun[current_index*2+1]<0) visible_sun = FALSE; image_sun = gtk_image_new_from_icon_name ("sun"); gtk_image_set_pixel_size (GTK_IMAGE (image_sun), ICON_SIZE_LARGE); @@ -262,14 +291,14 @@ picplanner_overview_update_map_sun (PicplannerOverview *overview, else min_size = height; - azimuth_sun = array_coordinates_sun[NUM_DATA_POINTS]; + azimuth_sun = array_coordinates_sun[current_index*2]; x_sun = x + sin(calc_deg_to_rad (azimuth_sun)) * min_size * LENGTH_SCALE_FACTOR; y_sun = y - cos(calc_deg_to_rad (azimuth_sun)) * min_size * LENGTH_SCALE_FACTOR; azimuth_sunrise = array_coordinates_sun[rise_upper_set_sun[0]*2]; x_sunrise = x + sin(calc_deg_to_rad (azimuth_sunrise)) * min_size * LENGTH_SCALE_FACTOR; y_sunrise = y - cos(calc_deg_to_rad (azimuth_sunrise)) * min_size * LENGTH_SCALE_FACTOR; - g_print("Index Sunrise: %d", rise_upper_set_sun[0]); + azimuth_sunset = array_coordinates_sun[rise_upper_set_sun[2]*2]; x_sunset = x + sin(calc_deg_to_rad (azimuth_sunset)) * min_size * LENGTH_SCALE_FACTOR; y_sunset = y - cos(calc_deg_to_rad (azimuth_sunset)) * min_size * LENGTH_SCALE_FACTOR; @@ -298,6 +327,7 @@ picplanner_overview_update_map_moon (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_moon, + int current_index, int *rise_upper_set_moon) { int moon_stroke_width = 6; @@ -318,7 +348,7 @@ picplanner_overview_update_map_moon (PicplannerOverview *overview, picplanner_draw_layer_remove_all (overview->pp_layer_moon); picplanner_draw_layer_remove_all (overview->pp_layer_moon_rise_set); - if (array_coordinates_moon[NUM_DATA_POINTS+1]<0) + if (array_coordinates_moon[current_index*2+1]<0) visible_moon = FALSE; image_moon = gtk_image_new_from_icon_name ("fcitx-fullwidth-inactive-symbolic"); gtk_image_set_pixel_size (GTK_IMAGE (image_moon), ICON_SIZE_LARGE); @@ -336,7 +366,7 @@ picplanner_overview_update_map_moon (PicplannerOverview *overview, else min_size = height; - azimuth_moon = array_coordinates_moon[NUM_DATA_POINTS]; + azimuth_moon = array_coordinates_moon[current_index*2]; x_moon = x + sin(calc_deg_to_rad (azimuth_moon)) * min_size * LENGTH_SCALE_FACTOR; y_moon = y - cos(calc_deg_to_rad (azimuth_moon)) * min_size * LENGTH_SCALE_FACTOR; @@ -373,6 +403,7 @@ picplanner_overview_update_map_milky_way (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_milky_way, + int current_index, int *rise_upper_set_milky_way) { int milky_way_stroke_width = 6; @@ -393,7 +424,7 @@ picplanner_overview_update_map_milky_way (PicplannerOverview *overview, picplanner_draw_layer_remove_all (overview->pp_layer_milky_way); picplanner_draw_layer_remove_all (overview->pp_layer_milky_way_rise_set); - if (array_coordinates_milky_way[NUM_DATA_POINTS+1]<0) + if (array_coordinates_milky_way[current_index*2+1]<0) visible_milky_way = FALSE; image_milky_way = gtk_image_new_from_icon_name ("milky-way-symbolic"); gtk_image_set_pixel_size (GTK_IMAGE (image_milky_way), ICON_SIZE_LARGE); @@ -411,7 +442,7 @@ picplanner_overview_update_map_milky_way (PicplannerOverview *overview, else min_size = height; - azimuth_milky_way = array_coordinates_milky_way[NUM_DATA_POINTS]; + azimuth_milky_way = array_coordinates_milky_way[current_index*2]; x_milky_way = x + sin(calc_deg_to_rad (azimuth_milky_way)) * min_size * LENGTH_SCALE_FACTOR; y_milky_way = y - cos(calc_deg_to_rad (azimuth_milky_way)) * min_size * LENGTH_SCALE_FACTOR; diff --git a/src/window/overview-page/overview-view.h b/src/window/overview-page/overview-view.h index 26920c7..ac6d6fc 100644 --- a/src/window/overview-page/overview-view.h +++ b/src/window/overview-page/overview-view.h @@ -37,6 +37,7 @@ picplanner_overview_update_map_sun (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_sun, + int current_index, int *rise_upper_set_sun); void @@ -44,6 +45,7 @@ picplanner_overview_update_map_moon (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_moon, + int current_index, int *rise_upper_set_moon); void @@ -51,6 +53,7 @@ picplanner_overview_update_map_milky_way (PicplannerOverview *overview, double latitude, double longitude, double *array_coordinates_milky_way, + int current_index, int *rise_upper_set_milky_way); G_END_DECLS diff --git a/src/window/picplanner-window.c b/src/window/picplanner-window.c index 46c8133..0e6817e 100644 --- a/src/window/picplanner-window.c +++ b/src/window/picplanner-window.c @@ -214,6 +214,8 @@ search_location (GtkWidget *self, static void calculate_positions (PicplannerWindow *window) { + int current_index; + int *rise_upper_set_index_sun; int *rise_upper_set_index_moon; int *rise_upper_set_index_milky_way; @@ -222,12 +224,22 @@ calculate_positions (PicplannerWindow *window) double *array_coordinates_sun; double *array_coordinates_moon; double *array_coordinates_milky_way; + GDateTime *date_time; + GDateTime *date_time_noon; + double longitude, latitude; longitude = gtk_spin_button_get_value (GTK_SPIN_BUTTON (window->east_entry)); latitude = gtk_spin_button_get_value (GTK_SPIN_BUTTON (window->north_entry)); date_time = picplanner_overview_get_date_time (PICPLANNER_OVERVIEW (window->overview_box)); + date_time_noon = g_date_time_new (g_date_time_get_timezone (date_time), + g_date_time_get_year (date_time), + g_date_time_get_month (date_time), + g_date_time_get_day_of_month (date_time), + 12, 0, 0); + + current_index = g_date_time_difference (date_time, date_time_noon)/1000/1000/60 * NUM_DATA_POINTS/24/60 + NUM_DATA_POINTS/2; g_print("Date: %02d.%02d.%02d, Time: %02d:%02d\n", g_date_time_get_day_of_month (date_time), @@ -241,7 +253,7 @@ calculate_positions (PicplannerWindow *window) /* Sun */ - array_coordinates_sun = picplanner_get_array_coordinates_sun (date_time, + array_coordinates_sun = picplanner_get_array_coordinates_sun (date_time_noon, longitude, latitude); @@ -251,17 +263,17 @@ calculate_positions (PicplannerWindow *window) picplanner_overview_set_current_coordinates_sun (PICPLANNER_OVERVIEW (window->overview_box), rise_upper_set_index_sun); picplanner_sun_set_rise_upper_set (PICPLANNER_SUN (window->sun_box), - date_time, + date_time_noon, array_coordinates_sun, rise_upper_set_index_sun); picplanner_sun_set_dark_blue_golden (PICPLANNER_SUN (window->sun_box), - date_time, + date_time_noon, dark_blue_golden_index); /* Moon */ - array_coordinates_moon = picplanner_get_array_coordinates_moon (date_time, + array_coordinates_moon = picplanner_get_array_coordinates_moon (date_time_noon, longitude, latitude); @@ -271,13 +283,13 @@ calculate_positions (PicplannerWindow *window) rise_upper_set_index_moon); picplanner_moon_set_rise_upper_set (PICPLANNER_MOON (window->moon_box), - date_time, + date_time_noon, array_coordinates_moon, rise_upper_set_index_moon); /* Milky Way */ - array_coordinates_milky_way = picplanner_get_array_coordinates_milky_way (date_time, + array_coordinates_milky_way = picplanner_get_array_coordinates_milky_way (date_time_noon, longitude, latitude); @@ -287,7 +299,7 @@ calculate_positions (PicplannerWindow *window) rise_upper_set_index_milky_way); picplanner_milky_way_set_rise_upper_set (PICPLANNER_MILKYWAY (window->milky_way_box), - date_time, + date_time_noon, array_coordinates_milky_way, rise_upper_set_index_milky_way); @@ -303,18 +315,21 @@ calculate_positions (PicplannerWindow *window) latitude, longitude, array_coordinates_sun, + current_index, rise_upper_set_index_sun); picplanner_overview_update_map_moon (PICPLANNER_OVERVIEW (window->overview_box), latitude, longitude, array_coordinates_moon, + current_index, rise_upper_set_index_moon); picplanner_overview_update_map_milky_way (PICPLANNER_OVERVIEW (window->overview_box), latitude, longitude, array_coordinates_milky_way, + current_index, rise_upper_set_index_milky_way); @@ -325,6 +340,8 @@ calculate_positions (PicplannerWindow *window) g_free (array_coordinates_sun); g_free (array_coordinates_moon); g_free (array_coordinates_milky_way); + //g_date_time_unref (date_time); + //g_date_time_unref (date_time_noon); }