@@ -20,93 +20,41 @@ void update_window(const double x, const double y, const double t,
20
20
21
21
int main ()
22
22
{
23
-
24
- bool use_dynamic_plot = false ;
25
- bool timeit = true ;
26
-
27
23
size_t n = 1000 ;
28
24
std::vector<double > x, y;
29
25
30
26
const double w = 0.05 ;
31
27
const double a = n/2 ;
32
28
33
- for (size_t i=0 ; i<n; i++) {
29
+ for (size_t i=0 ; i<n; i++) {
34
30
x.push_back (i);
35
31
y.push_back (a*sin (w*i));
36
32
}
37
33
38
34
std::vector<double > xt (2 ), yt (2 );
39
35
40
- plt::title (" Sample figure" );
41
-
42
- std::chrono::time_point<std::chrono::system_clock> start, end;
43
- start = std::chrono::system_clock::now ();
44
-
45
- if (use_dynamic_plot)
46
- {
47
- plt::xlim (x.front (), x.back ());
48
- plt::ylim (-a,a);
49
- plt::axis (" equal" );
50
-
51
- // plot sin once and for all
52
- plt::named_plot (" sin" , x, y);
53
-
54
- // prepare plotting the tangent
55
- plt::Plot plot (" tangent" );
56
-
57
- plt::legend ();
58
-
59
- for (size_t i=0 ; i<n; i++) {
36
+ plt::title (" Tangent of a since curve" );
37
+ plt::xlim (x.front (), x.back ());
38
+ plt::ylim (-a, a);
39
+ plt::axis (" equal" );
60
40
61
- if (i % 10 == 0 ) {
62
- {
63
- update_window (x[i], y[i], a*w*cos (w*x[i]), xt, yt);
64
- // just update data for this plot
65
- plot.update (xt, yt);
66
- }
41
+ // Plot sin once and for all.
42
+ plt::named_plot (" sin" , x, y);
67
43
68
- // Display plot continuously
69
- if (!timeit)
70
- plt::pause (0.1 );
71
- }
72
- }
73
- }
74
-
75
- else
76
- {
77
- for (size_t i=0 ; i<n; i++) {
78
-
79
- if (i % 10 == 0 ) {
80
- {
81
- plt::clf ();
44
+ // Prepare plotting the tangent.
45
+ plt::Plot plot (" tangent" );
82
46
83
- plt::named_plot ( " sin " , x, y );
47
+ plt::legend ( );
84
48
85
- update_window (x[i], y[i], a*w*cos (w*i), xt, yt);
86
- plt::named_plot (" tangent" , xt, yt);
49
+ for (size_t i=0 ; i<n; i++) {
50
+ if (i % 10 == 0 ) {
51
+ update_window (x[i], y[i], a*w*cos (w*x[i]), xt, yt);
87
52
88
- // we have to control axis size
89
- plt::xlim (x.front (), x.back ());
90
- plt::ylim (-a,a);
91
- plt::axis (" equal" );
92
- plt::legend ();
53
+ // Just update data for this plot.
54
+ plot.update (xt, yt);
93
55
94
- }
95
-
96
- // Display plot continuously
97
- if (!timeit)
98
- plt::pause (0.1 );
99
- }
56
+ // Small pause so the viewer has a chance to enjoy the animation.
57
+ plt::pause (0.1 );
100
58
}
101
- }
102
-
103
- end = std::chrono::system_clock::now ();
104
- double elapsed_seconds = std::chrono::duration_cast<std::chrono::microseconds>
105
- (end-start).count ();
106
- if (use_dynamic_plot)
107
- std::cout << " dynamic" ;
108
- else
109
- std::cout << " static" ;
110
-
111
- std::cout << " : " << elapsed_seconds/1000 << " ms\n " ;
59
+ }
112
60
}
0 commit comments