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
This commit is contained in:
apense 2015-06-24 03:22:04 -04:00
commit edbd191f74

View file

@ -12,6 +12,14 @@
## Basic math routines for Nim. ## Basic math routines for Nim.
## This module is available for the `JavaScript target ## This module is available for the `JavaScript target
## <backends.html#the-javascript-target>`_. ## <backends.html#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" include "system/inclrtl"
{.push debugger:off .} # the user does not want to trace a part {.push debugger:off .} # the user does not want to trace a part
@ -38,6 +46,7 @@ const
## meaningful digits ## meaningful digits
## after the decimal point ## after the decimal point
## for Nim's ``float`` type. ## for Nim's ``float`` type.
RadPerDeg = PI / 180.0 ## number of radians per degree
type type
FloatClass* = enum ## describes the class a floating point value belongs to. FloatClass* = enum ## describes the class a floating point value belongs to.
@ -317,6 +326,14 @@ else:
{.pop.} {.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 = proc `mod`*(x, y: float): float =
result = if y == 0.0: x else: x - y * (x/y).floor result = if y == 0.0: x else: x - y * (x/y).floor