From edbd191f74996e6469cf5d45171046c38851e208 Mon Sep 17 00:00:00 2001 From: apense Date: Wed, 24 Jun 2015 03:22:04 -0400 Subject: [PATCH] Conversion between radians and degrees.Fixes #2881 provides a new constant for conversion (not public, but that can be changed if it's wanted). the functions are pretty simple, honestly. top-level comment so documentation for each function could remain. Fixes #2881 --- lib/pure/math.nim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/pure/math.nim b/lib/pure/math.nim index 494dfc4c81..2dc66bc252 100644 --- a/lib/pure/math.nim +++ b/lib/pure/math.nim @@ -12,6 +12,14 @@ ## Basic math routines for Nim. ## This module is available for the `JavaScript target ## `_. +## +## Note that the trigonometric functions naturally operate on radians. +## The helper functions `degToRad` and `radToDeg` provide conversion +## between radians and degrees. +## +## Note that the trigonometric functions naturally operate on radians. +## The helper functions `degToRad` and `radToDeg` provide conversion +## between radians and degrees. include "system/inclrtl" {.push debugger:off .} # the user does not want to trace a part @@ -38,6 +46,7 @@ const ## meaningful digits ## after the decimal point ## for Nim's ``float`` type. + RadPerDeg = PI / 180.0 ## number of radians per degree type FloatClass* = enum ## describes the class a floating point value belongs to. @@ -317,6 +326,14 @@ else: {.pop.} +proc degToRad*[T](d: T): float {.inline.} = + ## Convert from degrees to radians + result = float(d) * RadPerDeg + +proc radToDeg*[T](d: T): float {.inline.} = + ## Convert from radians to degrees + result = float(d) / RadPerDeg + proc `mod`*(x, y: float): float = result = if y == 0.0: x else: x - y * (x/y).floor