diff --git a/main.py b/main.py index c0610c1..3b1e6b1 100644 --- a/main.py +++ b/main.py @@ -287,6 +287,12 @@ ax_slider = plt.axes([0.2, 0.02, 0.5, 0.03]) slider = Slider(ax_slider, "Frame", 1, len(data), valinit=1, valstep=1) + # Toggle state for top view button + top_view_enabled = False + default_elev = ax.elev + default_azim = ax.azim + default_roll = getattr(ax, "roll", 0) + def update(val): frame_idx = int(slider.val) - 1 points = data[frame_idx].points @@ -318,14 +324,17 @@ angle_text1.set_text(compute_and_format_angle(points, 0, 1)) angle_text2.set_text(compute_and_format_angle(points, 4, 1)) + if top_view_enabled: + set_top_view(points) + ax.set_title(f"Frame {data[frame_idx].frame_number}") fig.canvas.draw_idle() slider.on_changed(update) - # Button: switch view to direction from points[0] towards points[4] + # Button: toggle view to direction from points[0] towards points[4] ax_button = plt.axes([0.02, 0.02, 0.1, 0.04]) - btn_top = Button(ax_button, "v4 view") + btn_top = Button(ax_button, "v4 view: OFF") def set_top_view(points): # Calculate direction from points[0] to points[4] @@ -361,7 +370,16 @@ ax.view_init(elev=elev, azim=azim, roll=roll) def btn_top_on_clicked(event): - set_top_view(data[int(slider.val) - 1].points) + nonlocal top_view_enabled + top_view_enabled = not top_view_enabled + + if top_view_enabled: + btn_top.label.set_text("v4 view: ON") + set_top_view(data[int(slider.val) - 1].points) + else: + btn_top.label.set_text("v4 view: OFF") + ax.view_init(elev=default_elev, azim=default_azim, roll=default_roll) + fig.canvas.draw_idle() btn_top.on_clicked(btn_top_on_clicked)