-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrealplotter2d.cpp
More file actions
82 lines (62 loc) · 2.07 KB
/
realplotter2d.cpp
File metadata and controls
82 lines (62 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
This file is part of the ParsePlot library
ParsePlot is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ParsePlot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser Public License for more details.
You should have received a copy of the GNU Lesser Public License
along with ParsePlot. If not, see <http://www.gnu.org/licenses/>.
*/
#include "realplotter2d.h"
#include "parser.h"
#include <map>
using std::map;
using std::pair;
namespace ParsePlot {
const char RealPlotter2D::X_LABEL('x');
const char RealPlotter2D::Y_LABEL('y');
RealPlotter2D::RealPlotter2D(Parser<REAL>* aParser)
: Plotter<REAL>(aParser, CreatePlotMap(), Y_LABEL) {}
RealPlotter2D::PlotMap RealPlotter2D::CreatePlotMap()
{
// Create PlotSet X
PlotSet<REAL> plot_x(X_MIN, X_MAX, X_STEP);
// Create a map, add the PlotSet and return it
map< char,PlotSet<REAL> > pMap;
pMap.insert( pair< char,PlotSet<REAL> >(X_LABEL, plot_x) );
return pMap;
}
// TODO: Add cleanup
bool RealPlotter2D::Plot(ResultMap& result, string expr)
{
PlotResultVector values, def;
REAL max, min, step, current, res;
bool defined;
string err;
PlotSet<REAL> p;
this->GetPlotSet(X_LABEL, p);
max = p.GetMax();
min = p.GetMin();
step = p.GetStep();
while (current < max)
{
defined = parser->Parse(expr, res, err);
values.push_back( PlotResult<REAL>(defined, res, err) );
def.push_back( PlotResult<REAL>(defined, current) );
current += step;
};
// Insert values into map
result.insert( pair<char, PlotResultVector >(X_LABEL, def) );
result.insert( pair<char, PlotResultVector >(Y_LABEL, values) );
return true;
}
string RealPlotter2D::Format(const string& input, REAL indVar)
{
// TODO: Implement
return input;
}
}