comparison +noname/Animation.m @ 707:0de70ec8bf60 feature/quantumTriangles

merge with feature/optim
author Ylva Rydin <ylva.rydin@telia.com>
date Fri, 10 Nov 2017 14:22:56 +0100
parents c360bbecf260
children
comparison
equal deleted inserted replaced
696:7c16b5af8d98 707:0de70ec8bf60
1 classdef Animation < handle
2 properties
3 timeStepper
4 representationMaker
5 updaters
6 end
7
8 % add input validation
9
10 methods
11 function obj = Animation(timeStepper, representationMaker, updaters);
12 obj.timeStepper = timeStepper;
13 obj.updaters = updaters;
14 obj.representationMaker = representationMaker;
15 end
16
17 function update(obj, r)
18 for i = 1:length(obj.updaters)
19 obj.updaters{i}(r);
20 end
21 drawnow
22 end
23
24 function run(obj, tEnd, timeModifier, do_pause)
25 default_arg('do_pause', false)
26
27 function next_t = G(next_t)
28 obj.timeStepper.evolve(next_t);
29 r = obj.representationMaker(obj.timeStepper);
30 obj.update(r);
31
32 if do_pause
33 pause
34 end
35 end
36
37 anim.animate(@G, obj.timeStepper.t, tEnd, timeModifier);
38 end
39
40 function step(obj, tEnd, do_pause)
41 default_arg('do_pause', false)
42
43 while obj.timeStepper.t < tEnd
44 obj.timeStepper.step();
45
46 r = obj.representationMaker(obj.timeStepper);
47 obj.update(r);
48
49 % TODO: Make it never go faster than a certain fram rate
50
51 if do_pause
52 pause
53 end
54 end
55 end
56
57 function saveMovie(obj, tEnd, timeModifier, figureHandle, dirname)
58 save_frame = anim.setup_fig_mov(figureHandle, dirname);
59
60 function next_t = G(next_t)
61 obj.timeStepper.evolve(next_t);
62 r = obj.representationMaker(obj.timeStepper);
63 obj.update(r);
64
65 save_frame();
66 end
67
68 fprintf('Generating and saving frames to: ..\n')
69 anim.animate(@G, obj.timeStepper.t, tEnd, timeModifier);
70 fprintf('Generating movies...\n')
71 cmd = sprintf('bash %s/+anim/make_movie.sh %s', sbplibLocation(),dirname);
72 system(cmd);
73 end
74 end
75 end