diff --git a/uppsrc/ScatterDraw/Equation.cpp b/uppsrc/ScatterDraw/Equation.cpp index a40fa0cda..e97e9b689 100644 --- a/uppsrc/ScatterDraw/Equation.cpp +++ b/uppsrc/ScatterDraw/Equation.cpp @@ -122,13 +122,15 @@ String FourierEquation::GetEquation(int numDigits) { return ret; } +static double degToRad(double deg) {return M_PI/180.;} EvalExpr::EvalExpr() { noCase = false; constants.Add("PI", M_PI); constants.Add("M_PI", M_PI); - constants.Add("e", exp(1.0)); + constants.Add("e", M_E); + functions.Add("abs", fabs); functions.Add("ceil", ceil); functions.Add("floor", floor); @@ -142,6 +144,7 @@ EvalExpr::EvalExpr() { functions.Add("sinh", sinh); functions.Add("cosh", cosh); functions.Add("tanh", tanh); + functions.Add("degToRad", degToRad); } double EvalExpr::Term(CParser& p) { diff --git a/uppsrc/ScatterDraw/Equation.h b/uppsrc/ScatterDraw/Equation.h index 60e03daea..82f4426eb 100644 --- a/uppsrc/ScatterDraw/Equation.h +++ b/uppsrc/ScatterDraw/Equation.h @@ -234,6 +234,9 @@ public: void GetVariable(int id, String &name, double &value) {name = variables.GetKey(id); value = variables[id];} int GetVariablesCount() {return variables.GetCount();} + VectorMap constants; + VectorMap functions; + private: void *Functions_Get(CParser& p); double Term(CParser& p); @@ -245,10 +248,8 @@ private: String MulStr(CParser& p, int numDigits); String ExpStr(CParser& p, int numDigits); bool noCase; - - VectorMap constants; + VectorMap variables; - VectorMap functions; }; class UserEquation : public ExplicitEquation {