diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-06-28 18:46:16 -0400 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-06-28 18:46:16 -0400 |
commit | f47eb69a354188154731846dde8b384c2c2f39f6 (patch) | |
tree | 6aa1ccb9212836b7c941e771475eb995fa6df9f9 /sly/math.scm | |
parent | df0f2a5f3f09394f1953abbc7e33e9a98204680e (diff) |
Rename guile-2d to Sly!
Massive find/replace job.
Diffstat (limited to 'sly/math.scm')
-rw-r--r-- | sly/math.scm | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/sly/math.scm b/sly/math.scm new file mode 100644 index 0000000..8f7ce71 --- /dev/null +++ b/sly/math.scm @@ -0,0 +1,90 @@ +;;; Sly +;;; Copyright (C) 2013, 2014 David Thompson <dthompson2@worcester.edu> +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Miscellaneous math procedures. Currently just trigonometry. +;; +;;; Code: + +(define-module (sly math) + #:export (pi + degrees->radians + radians->degrees + sin-degrees + cos-degrees + tan-degrees + atan-degrees + clamp)) + +;; Dave was editing this module on Pi Approximation Day. +;; +;; 3.141592653589793238462643383279 +;; 5028841971693993751058209749445923 +;; 07816406286208998628034825342117067 +;; 9821 48086 5132 +;; 823 06647 09384 +;; 46 09550 58223 +;; 17 25359 4081 +;; 2848 1117 +;; 4502 8410 +;; 2701 9385 +;; 21105 55964 +;; 46229 48954 +;; 9303 81964 +;; 4288 10975 +;; 66593 34461 +;; 284756 48233 +;; 78678 31652 71 +;; 2019091 456485 66 +;; 9234603 48610454326648 +;; 2133936 0726024914127 +;; 3724587 00660631558 +;; 817488 152092096 +;; +(define pi 3.141592654) + +(define (degrees->radians angle) + "Convert ANGLE in degrees to radians." + (* angle (/ pi 180))) + +(define (radians->degrees angle) + "Convert ANGLE in radians to degrees." + (* angle (/ 180 pi))) + +(define (sin-degrees angle) + "Compute the sin of ANGLE expressed in degrees." + (sin (degrees->radians angle))) + +(define (cos-degrees angle) + "Compute the cosine of ANGLE expressed in degrees." + (cos (degrees->radians angle))) + +(define (tan-degrees angle) + "Compute the tangent of ANGLE expressed in degrees." + (tan (degrees->radians angle))) + +(define (atan-degrees y x) + "Compute the arctangent in degrees of the coordinates Y and X." + (radians->degrees (atan y x))) + +(define (clamp min max x) + "Restrict X to the range defined by MIN and MAX. Assumes that MIN is +actually less than MAX." + (cond ((< x min) min) + ((> x max) max) + (else x))) |