Skip to content

Commit

Permalink
Add reference frame option.
Browse files Browse the repository at this point in the history
  • Loading branch information
wojciech-graj committed Aug 20, 2022
1 parent 2b499c5 commit 7f63843
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 2 deletions.
63 changes: 61 additions & 2 deletions res/ui/ui.glade
Original file line number Diff line number Diff line change
Expand Up @@ -1574,6 +1574,65 @@
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Reference Frame: </property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Fixed</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="reference_frame">
<property name="visible">True</property>
<property name="can-focus">True</property>
<signal name="state-set" handler="on_reference_frame_state_set" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Intertial</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="fetch_data">
<property name="label" translatable="yes">Re-fetch Data</property>
Expand All @@ -1586,7 +1645,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">4</property>
</packing>
</child>
<child>
Expand Down Expand Up @@ -1668,7 +1727,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="position">5</property>
</packing>
</child>
</object>
Expand Down
10 changes: 10 additions & 0 deletions src/phys/phys.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

#include "SGP4.h"

#include "camera.h"
#include "satellite.h"
#include "setting.h"
#include "system.h"
#include "thread.h"
#include "timemgr.h"
Expand Down Expand Up @@ -75,6 +77,14 @@ void *phys_thrd(void *arguments)

void phys_phys_sync(void)
{
if (gs_reference_frame == REFERENCE_FRAME_INERTIAL) {
gint64 diff_ms = phys_ctx_sync.epoch_ms - e_phys.epoch_ms;
float dang = (-2.f * (float)G_PI * diff_ms) / MS_IN_DAY;
glm_vec2_copy((vec2){ e_camera.pos[0] * cosf(dang) - e_camera.pos[1] * sinf(dang),
e_camera.pos[1] * cosf(dang) + e_camera.pos[0] * sinf(dang) },
e_camera.pos);
camera_view_update(&e_camera);
}
e_phys = phys_ctx_sync;
}

Expand Down
13 changes: 13 additions & 0 deletions src/ui/setting.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ struct Setting settings[3] = {
gboolean gs_gmt = FALSE;
gboolean gs_clouds = TRUE;
gboolean gs_lighting = TRUE;
enum ReferenceFrame gs_reference_frame = REFERENCE_FRAME_FIXED;

static GtkWindow *window_settings;

static void on_settings_clicked(GtkToolButton *toolbutton, gpointer user_data);
static gboolean on_window_settings_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
static void on_setting_toggled(GtkToggleButton *togglebutton, gpointer user_data);
static void on_fetch_data_clicked(GtkButton *button, gpointer user_data);
static gboolean on_reference_frame_state_set(GtkSwitch *widget, gboolean state, gpointer user_data);

void on_settings_clicked(GtkToolButton *toolbutton, gpointer user_data)
{
Expand Down Expand Up @@ -73,13 +75,24 @@ void on_fetch_data_clicked(GtkButton *button, gpointer user_data)
}
}

gboolean on_reference_frame_state_set(GtkSwitch *widget, gboolean state, gpointer user_data)
{
(void)widget;
(void)user_data;

gs_reference_frame = (enum ReferenceFrame)state;

return FALSE;
}

void setting_init(GtkBuilder *builder)
{
gtk_builder_add_callback_symbols(builder,
"on_settings_clicked", G_CALLBACK(on_settings_clicked),
"on_setting_toggled", G_CALLBACK(on_setting_toggled),
"on_window_settings_delete_event", G_CALLBACK(on_window_settings_delete_event),
"on_fetch_data_clicked", G_CALLBACK(on_fetch_data_clicked),
"on_reference_frame_state_set", G_CALLBACK(on_reference_frame_state_set),
NULL);

window_settings = GTK_WINDOW(gtk_builder_get_object(builder, "window_settings"));
Expand Down
6 changes: 6 additions & 0 deletions src/ui/setting.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@
#include "type.h"
#include "ui.h"

enum ReferenceFrame {
REFERENCE_FRAME_FIXED = 0u,
REFERENCE_FRAME_INERTIAL,
};

extern gboolean gs_gmt;
extern gboolean gs_clouds;
extern gboolean gs_lighting;
extern enum ReferenceFrame gs_reference_frame;

void setting_init(GtkBuilder *builder);

Expand Down

0 comments on commit 7f63843

Please sign in to comment.