Mercurial > repos > public > sbplib
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 |