diff --git a/doc/site/modules/core/num.markdown b/doc/site/modules/core/num.markdown index 09fb78ae0..710fa073e 100644 --- a/doc/site/modules/core/num.markdown +++ b/doc/site/modules/core/num.markdown @@ -27,6 +27,26 @@ The value of π. The value of τ. This is equivalent to ```2 * Num.pi```. +### Num.**toDeg** + +Multiplier to convert a number of radians to degrees. + +
+var radians = Num.pi
+var degrees = radians * Num.toDeg 
+System.print(degrees) //> 180
+
+ +### Num.**toRad** + +Multiplier to convert a number of degrees to radians. + +
+var degrees = 180
+var radians = degrees * Num.toRad
+System.print(radians) //> 3.1415926535898
+
+ ### Num.**largest** The largest representable numeric value. diff --git a/src/vm/wren_core.c b/src/vm/wren_core.c index d0a121f8c..ec0230e38 100644 --- a/src/vm/wren_core.c +++ b/src/vm/wren_core.c @@ -641,6 +641,8 @@ DEF_NUM_CONSTANT(infinity, INFINITY) DEF_NUM_CONSTANT(nan, WREN_DOUBLE_NAN) DEF_NUM_CONSTANT(pi, 3.14159265358979323846264338327950288) DEF_NUM_CONSTANT(tau, 6.28318530717958647692528676655900577) +DEF_NUM_CONSTANT(toDeg, 57.2957795130823208758832444148792062) +DEF_NUM_CONSTANT(toRad, 0.0174532925199432957695156053300343678) DEF_NUM_CONSTANT(largest, DBL_MAX) DEF_NUM_CONSTANT(smallest, DBL_MIN) @@ -1354,6 +1356,8 @@ void wrenInitializeCore(WrenVM* vm) PRIMITIVE(vm->numClass->obj.classObj, "nan", num_nan); PRIMITIVE(vm->numClass->obj.classObj, "pi", num_pi); PRIMITIVE(vm->numClass->obj.classObj, "tau", num_tau); + PRIMITIVE(vm->numClass->obj.classObj, "toDeg", num_toDeg); + PRIMITIVE(vm->numClass->obj.classObj, "toRad", num_toRad); PRIMITIVE(vm->numClass->obj.classObj, "largest", num_largest); PRIMITIVE(vm->numClass->obj.classObj, "smallest", num_smallest); PRIMITIVE(vm->numClass->obj.classObj, "maxSafeInteger", num_maxSafeInteger); diff --git a/test/core/number/toDeg.wren b/test/core/number/toDeg.wren new file mode 100644 index 000000000..afbedf63a --- /dev/null +++ b/test/core/number/toDeg.wren @@ -0,0 +1,3 @@ +var radians = Num.pi +var degrees = radians * Num.toDeg +System.print(degrees) // expect: 180 diff --git a/test/core/number/toRad.wren b/test/core/number/toRad.wren new file mode 100644 index 000000000..9df3a305f --- /dev/null +++ b/test/core/number/toRad.wren @@ -0,0 +1,3 @@ +var degrees = 180 +var radians = degrees * Num.toRad +System.print(radians) // expect: 3.1415926535898