diff --git a/CelestialObject.c b/CelestialObject.c index 60f06c643ed407fa1c4769168f65c60594c0a6f3..be5a585f49afd604d922e3b6e743c65fa9ae7e01 100644 --- a/CelestialObject.c +++ b/CelestialObject.c @@ -41,7 +41,10 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou draw_disc(scaled_position, object->drawing_disc_radius); if (strcmp(object->name, "Moon") != 0) { - glLineWidth(4.0); + if (zoom_factor < 1) + glLineWidth(4.0 * zoom_factor); + else + glLineWidth(4.0); for (int32_t j = 0; j < object->points_length - 1; j += 1) { Vector2 p1 = scale_position(zoom_factor, object->points[j], reference_frame); @@ -50,9 +53,15 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou } } + // celestial_object_draw_name(object, reference_frame,zoom_factor); +} + +void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor) { + Vector2 scaled_position = scale_position(zoom_factor, object->current_position, reference_frame); + if (strcmp(object->name, "Moon") == 0 && zoom_factor < 36) { return; } - draw_text(object->name, vector2_add(scaled_position, vector2_create(8, 32))); + draw_text(object->name, vector2_add(scaled_position, vector2_create(object->drawing_disc_radius + 8, 7))); } diff --git a/CelestialObject.h b/CelestialObject.h index cecf815d72fff0d3b5d29e380834ef519d64c3eb..bd7f28ff76ec05906620069a936af51ff6a1ddf9 100644 --- a/CelestialObject.h +++ b/CelestialObject.h @@ -18,5 +18,6 @@ typedef struct CelestialObject { CelestialObject *celestial_object_create(char *name, double mass, double semi_major_axis, double eccentricity, uint32_t drawing_disc_radius, uint32_t drawing_color); void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, double zoom_factor); +void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor); #endif diff --git a/PlanetarySystem.c b/PlanetarySystem.c index 15f48cd846e37261697d420204358693cefe5dd7..5e244b763f315afcbaf43dcb07d0306310e8fc2d 100644 --- a/PlanetarySystem.c +++ b/PlanetarySystem.c @@ -134,6 +134,11 @@ void planetary_system_draw(PlanetarySystem *ps) { celestial_object_draw(object, reference_frame, ps->zoom_factor); } + for (int32_t i = 0; i < ps->objects_length; i += 1) { + CelestialObject *object = ps->objects[i]; + celestial_object_draw_name(object, reference_frame, ps->zoom_factor); + } + char text[200]; sprintf(text, "Focused Object : %s", object_reference_frame->name); draw_text(text, vector2_create(8, 64)); diff --git a/main.c b/main.c index 2847df6c73ea0e6aa929ede2dbbb2bc66a7b0d1b..39b543c4521a705ab20f5d6aa600d965f7298b12 100644 --- a/main.c +++ b/main.c @@ -1,3 +1,4 @@ +#include <GL/freeglut.h> #include <GL/glut.h> #include <stdint.h> #include <stdio.h> @@ -52,7 +53,7 @@ void draw() { if (elapsed_time % REFRESH_RATE == 0 && elapsed_time != 0) { char title[100]; - sprintf(title, "Solar System (%d : %lld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000); + sprintf(title, "Solar System (%d : %ld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000); glutSetWindowTitle(title); } @@ -135,7 +136,6 @@ int main(int argc, char *argv[]) { glutTimerFunc(1000 / REFRESH_RATE, update_timer, 0); glutTimerFunc(1000 / REFRESH_RATE, draw_timer, 0); - glutMainLoop(); return EXIT_SUCCESS;