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:
parent
5f371e1504
commit
edbd191f74
1 changed files with 17 additions and 0 deletions
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue