summaryrefslogtreecommitdiff
path: root/func.cc
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-30 18:05:10 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-30 18:05:10 (GMT)
commit78244d328918b149b86d9b925010e934244d0137 (patch)
tree54228d6e3480fc309143a4ed3d9deb0d51994f56 /func.cc
parenta70715ab8c31160f1be2a74d208681c2ad422bbb (diff)
Clifford Wolf:
Improved value handling Fixed math functions Improved control statements git-svn-id: http://svn.clifford.at/openscad/trunk@39 b57f626f-c46c-0410-a088-ec61d464b74c
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