44#include " GL/freeglut.h"
55#include < string>
66#include < vector>
7- #include < algorithm>
87#include < thread>
98#include < atomic>
109#include < mutex>
@@ -95,13 +94,14 @@ namespace easy_plot {
9594
9695 data.resize (1 );
9796 data[0 ].resize (y.size ());
97+ max_y = y[0 ];
98+ min_y = y[0 ];
9899 for (size_t i = 0 ; i < y.size (); ++i) {
99100 data[0 ][i] = y[i];
101+ max_y = std::max (data[0 ][i], max_y);
102+ min_y = std::min (data[0 ][i], min_y);
100103 }
101104
102- max_y = *std::max_element (data[0 ].begin (), data[0 ].end ());
103- min_y = *std::min_element (data[0 ].begin (), data[0 ].end ());
104-
105105 mode = EASY_PLOT_1D;
106106 window_name = name;
107107 is_init = true ;
@@ -132,23 +132,28 @@ namespace easy_plot {
132132 line_style.resize (1 );
133133 line_style[0 ] = style;
134134
135+ max_y = y[0 ];
136+ min_y = y[0 ];
137+ max_x = x[0 ];
138+ min_x = x[0 ];
139+
135140 data.resize (2 );
136141 data[0 ].resize (x.size ());
137142 data[1 ].resize (y.size ());
143+
138144 for (size_t i = 0 ; i < x.size (); ++i) {
139145 data[0 ][i] = x[i];
140146 data[1 ][i] = y[i];
147+ max_y = std::max (data[1 ][i], max_y);
148+ min_y = std::min (data[1 ][i], min_y);
149+ max_x = std::max (data[0 ][i], max_x);
150+ min_x = std::min (data[0 ][i], min_x);
141151 }
142152
143- max_x = *std::max_element (data[0 ].begin (), data[0 ].end ());
144- min_x = *std::min_element (data[0 ].begin (), data[0 ].end ());
145- max_y = *std::max_element (data[1 ].begin (), data[1 ].end ());
146- min_y = *std::min_element (data[1 ].begin (), data[1 ].end ());
147-
148153 mode = EASY_PLOT_2D;
149154 window_name = name;
150155 is_init = true ;
151- }
156+ } //
152157
153158 /* * \brief Нарисовать двумерный график
154159 * \param in вектор одномерного графика
@@ -174,22 +179,16 @@ namespace easy_plot {
174179 line_style = style;
175180
176181 data.resize (vec.size ());
182+ max_y = vec[0 ][0 ];
183+ min_y = vec[0 ][0 ];
177184 for (size_t n = 0 ; n < vec.size (); ++n) {
178185 data[n].resize (vec[n].size ());
179186 for (size_t i = 0 ; i < vec[n].size (); ++i) {
180187 data[n][i] = vec[n][i];
181- }
182- if (n == 0 ) {
183- double pre_max_y = *std::max_element (data[n].begin (), data[n].end ());
184- double pre_min_y = *std::min_element (data[n].begin (), data[n].end ());
185- max_y = std::max (pre_max_y, max_y);
186- min_y = std::min (pre_min_y, min_y);
187- } else {
188- max_y = *std::max_element (data[n].begin (), data[n].end ());
189- min_y = *std::min_element (data[n].begin (), data[n].end ());
188+ max_y = std::max (data[n][i], max_y);
189+ min_y = std::min (data[n][i], min_y);
190190 }
191191 }
192-
193192 mode = EASY_PLOT_1D_SEVERAL;
194193 window_name = name;
195194 is_init = true ;
@@ -215,7 +214,7 @@ namespace easy_plot {
215214
216215 glColor3f (1 , 1 , 1 );
217216 glVertex2f (0 , 0 );
218- glVertex2f (data[0 ].size (), 0 );
217+ glVertex2f (data[0 ].size () - 1 , 0 );
219218
220219 glColor3f (line_style[0 ].r , line_style[0 ].g , line_style[0 ].b );
221220 for (size_t i = 0 ; i < data[0 ].size () - 1 ; ++i) {
@@ -232,7 +231,7 @@ namespace easy_plot {
232231
233232 glColor3f (1 , 1 , 1 );
234233 glVertex2f (0 , 0 );
235- glVertex2f (data[0 ].size (), 0 );
234+ glVertex2f (data[0 ].size () - 1 , 0 );
236235
237236 for (size_t n = 0 ; n < data.size (); ++n) {
238237 glColor3f (line_style[n].r , line_style[n].g , line_style[n].b );
0 commit comments