Skip to content

Commit 2e9ccf4

Browse files
committed
исправлен баг с нахождением минимума и максимума
1 parent 0cd8538 commit 2e9ccf4

File tree

2 files changed

+33
-22
lines changed

2 files changed

+33
-22
lines changed

code_blocks/example_opengl/main.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <iostream>
2+
#include <cmath>
23
#include "easy_plot.hpp"
34

45
using namespace std;
@@ -18,6 +19,17 @@ int main(int argc, char* argv[]) {
1819

1920
easy_plot::plot<double>("test4", 3, test1_x, easy_plot::LineSpec(1,0,0), test2_x, easy_plot::LineSpec(1,0,1), test3_x, easy_plot::LineSpec(0,1,0));
2021

22+
std::vector<double> line;
23+
for(int i = 0; i < 1000; ++i) {
24+
line.push_back(sin(3.1415*(double)i/50));
25+
}
26+
std::vector<double> line05(line.size(), 0.5);
27+
std::vector<double> line06(line.size(), 0.6);
28+
29+
easy_plot::plot<double>("test5", 3,
30+
line, easy_plot::LineSpec(1,0,0),
31+
line05, easy_plot::LineSpec(1,0,1),
32+
line06, easy_plot::LineSpec(0,1,0));
2133
while(true) {
2234
std::this_thread::yield();
2335
}

include/easy_plot.hpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
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

Comments
 (0)