summaryrefslogtreecommitdiffstats
path: root/Kod/bilbana/yc4/display/scenes
diff options
context:
space:
mode:
authorGustav Sörnäs <gusso230@student.liu.se>2019-11-23 23:05:05 +0100
committerGustav Sörnäs <gusso230@student.liu.se>2019-11-23 23:05:05 +0100
commitd195a43eef3817d6a1f926725eeaba6770345c17 (patch)
tree146f926568ee307b5761a68af32309783791cb64 /Kod/bilbana/yc4/display/scenes
parent457b052ca449b0653368c81e4218b20d76cd515a (diff)
downloadtfyy51-d195a43eef3817d6a1f926725eeaba6770345c17.tar.gz
more work
Diffstat (limited to 'Kod/bilbana/yc4/display/scenes')
-rw-r--r--Kod/bilbana/yc4/display/scenes/draw_lap_graph.m157
1 files changed, 105 insertions, 52 deletions
diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m
index 8c7a5d0..68cfecf 100644
--- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m
+++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m
@@ -1,11 +1,28 @@
-function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time)
+function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time, change_car)
dt = 0.2; % delay for display
-if isempty(car1_laptimes)
- car1_laptimes = car2_laptimes;
- car2_laptimes = [];
+% don't have to re-draw static elements, just the graphs
+persistent in_clipboard;
+if is_empty(in_clipboard)
+ in_clipboard = false;
end
+% draw the other car every time the function is called if the change_car flag is set
+% this value is ignored if only one set of lap times are given
+persistent current_car;
+if is_empty(current_car)
+ % first call to function
+ current_car = 1;
+else
+ % switch current_car
+ if change_car
+ if current_car == 1
+ current_car = 2;
+ else
+ current_car = 1;
+ end
+ end
+end
%% strip empty values
tmp = [];
@@ -24,67 +41,103 @@ for i = 1:length(car2_laptimes)
end
car2_laptimes = tmp;
-% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times));
-
pause(dt);
matlabclient(1, get_smallpackage(clear_display()));
pause(dt);
-matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Varvtider')))
-pause(dt);
+% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times));
+if ~(in_clipboard)
+ matlabclient(1, get_smallpackage([ ...
+ put_text(160, 8, 'C', 'Varvtider'), ...
+ key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ...
+ key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ...
+ key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta'), ...
+ key(300, 0 , 320, 24 , 70, 71, 'C', 'Byt bil') ...
+ ]));
+ pause(dt);
-matlabclient(1, get_smallpackage([ ...
- key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ...
- key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ...
- key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ...
-]));
-pause(dt);
+ matlabclient(1, get_smallpackage([ ...
+ draw_line(20, 24, 20, 144), ... % y-axis
+ put_text(9, 25, 'C', 's'), ... % label y-axis
+ continue_line(304, 144), ... % x-axis
+ draw_line(16, 32, 20, 24), ... % arrow on y, left part
+ continue_line(24, 32), ... % arrow on y, right part
+ draw_line(304, 140, 304, 148) ... % line on x
+ ]));
+ pause(dt);
-matlabclient(1, get_smallpackage([ ...
- draw_line(20, 24, 20, 144), ... % y-axis
- put_text(9, 25, 'C', 's'), ... % label y-axis
- continue_line(304, 144), ... % x-axis
- draw_line(16, 32, 20, 24), ... % arrow on y, left part
- continue_line(24, 32), ... % arrow on y, right part
- draw_line(304, 140, 304, 148) ... % line on x
-]));
-pause(dt);
+ y = 166;
+ margin_top = 6;
+ matlabclient(1, get_smallpackage([ ...
+ draw_line(0, y, 320, y), ...
+ put_text(53 , y + margin_top, 'C', 'target'), ...
+ put_text(160, y + margin_top, 'C', 'mean'), ...
+ put_text(266, y + margin_top, 'C', 'std') ...
+ ]));
+ pause(dt);
-y = 166;
-margin_top = 6;
-matlabclient(1, get_smallpackage([ ...
- draw_line(0, y, 320, y), ...
- put_text(53 , y + margin_top, 'C', 'target'), ...
- put_text(160, y + margin_top, 'C', 'mean'), ...
- put_text(266, y + margin_top, 'C', 'std') ...
-]));
-pause(dt);
+ car1 = struct;
+ car1.avg = '--.-'
+ car1.dev = '-.--'
+ if ~isempty(car1_laptimes)
+ car1.avg = num2str(mean(car1_laptimes), 1);
+ car1.dev = num2str(std(car1_laptimes), 2);
+ end
+ car2 = struct;
+ car2.avg = '--.-'
+ car2.dev = '-.--'
+ if ~isempty(car2_laptimes)
+ car2.avg = num2str(mean(car2_laptimes), 1);
+ car2.dev = num2str(std(car2_laptimes), 2);
+ end
-line = 12;
-matlabclient(1, get_smallpackage([ ...
- put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ...
- put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ...
- put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ...
- put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ...
- put_text(160, y + 2 + margin_top + line*1, 'C', num2str(mean(car1_laptimes), 1)), ...
- put_text(160, y + 2 + margin_top + line*2, 'C', num2str(mean(car2_laptimes), 1), ...
- put_text(266, y + 2 + margin_top + line*1, 'C', num2str(std(car1_laptimes), 2)), ...
- put_text(266, y + 2 + margin_top + line*2, 'C', num2str(std(car2_laptimes), 2)), ...
-]));
-pause(dt);
+ line = 12;
+ matlabclient(1, get_smallpackage([ ...
+ put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ...
+ put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ...
+ put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ...
+ put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ...
+ put_text(160, y + 2 + margin_top + line*1, 'C', car1.avg)), ...
+ put_text(160, y + 2 + margin_top + line*2, 'C', car2.avg)), ...
+ put_text(266, y + 2 + margin_top + line*1, 'C', car1.dev)), ...
+ put_text(266, y + 2 + margin_top + line*2, 'C', car2.dev)), ...
+ ]));
+ pause(dt);
+
+ matlabclient(1, get_smallpackage(save_display_to_clipboard()));
+ pause(dt);
+else
+ matlabclient(1, get_smallpackage(restore_display_from_clipboard()));
+ pause(dt);
+end
+
+times = [];
+car = 0;
+if current_car == 1 && ~isempty(car1_laptimes)
+ times = car1_laptimes;
+ car = 1;
+elseif current_car == 2 && ~isempty(car2_laptimes)
+ times = car2_laptimes;
+ car = 2;
+elseif ~isempty(car1_laptimes)
+ times = car1_laptimes;
+ car = 1;
+elseif ~isempty(car2_laptimes)
+ times = car2_laptimes;
+ car = 2
+else
+ % not supposed to get here
+end
-times = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16];
for i = 0:(length(times)-1)
-x = 28 + i*10;
-y = 144 - round(100 * (times(i+1) / max(times)));
-matlabclient(1, get_smallpackage([ ...
+ x = 28 + i*10;
+ y = 144 - round(100 * (times(i+1) / max(times)));
+ matlabclient(1, get_smallpackage([ ...
set_point_size(3, 3), ...
point(x, y), ...
set_point_size(1, 1), ...
draw_line(x, 144-2, x, 144+2) ...
-]));
-pause(0.15);
+ ]));
+ pause(dt);
end
-
-% matlabclient(1, get_smallpackage(save_display_to_clipboard()));
end