summaryrefslogtreecommitdiff
path: root/func.cc
diff options
context:
space:
mode:
Diffstat (limited to 'func.cc')
-rw-r--r--func.cc34
1 files changed, 27 insertions, 7 deletions
diff --git a/func.cc b/func.cc
index fff9080..07171b6 100644
--- a/func.cc
+++ b/func.cc
@@ -80,52 +80,72 @@ QString BuiltinFunction::dump(QString indent, QString name) const
return QString("%1builtin function %2();\n").arg(indent, name);
}
+static double deg2rad(double x)
+{
+ while (x < 0.0)
+ x += 360.0;
+ while (x >= 360.0)
+ x -= 360.0;
+ x = x * M_PI * 2.0 / 360.0;
+ return x;
+}
+
+static double rad2deg(double x)
+{
+ x = x * 360.0 / (M_PI * 2.0);
+ while (x < 0.0)
+ x += 360.0;
+ while (x >= 360.0)
+ x -= 360.0;
+ return x;
+}
+
Value builtin_sin(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(sin(args[0].num));
+ return Value(sin(deg2rad(args[0].num)));
return Value();
}
Value builtin_cos(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(cos(args[0].num));
+ return Value(cos(deg2rad(args[0].num)));
return Value();
}
Value builtin_asin(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(asin(args[0].num));
+ return Value(rad2deg(asin(args[0].num)));
return Value();
}
Value builtin_acos(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(acos(args[0].num));
+ return Value(rad2deg(acos(args[0].num)));
return Value();
}
Value builtin_tan(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(tan(args[0].num));
+ return Value(tan(deg2rad(args[0].num)));
return Value();
}
Value builtin_atan(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER)
- Value(atan(args[0].num));
+ return Value(rad2deg(atan(args[0].num)));
return Value();
}
Value builtin_atan2(const QVector<Value> &args)
{
if (args[0].type == Value::NUMBER && args[1].type == Value::NUMBER)
- Value(atan2(args[0].num, args[1].num));
+ return Value(rad2deg(atan2(args[0].num, args[1].num)));
return Value();
}
contact: Jan Huwald // Impressum