X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela_misc.scm;h=a9393ca89607d52e3d75ea42700753ec9f6c44d6;hb=e562aad852e11b0ac7f9d94f65bff8b984240d02;hp=d486b2650b734a2bea3ef7b977f42898ad7ef480;hpb=75d1bbb394aa23715811cac3da7ad6b202df26cf;p=gacela.git diff --git a/src/gacela_misc.scm b/src/gacela_misc.scm index d486b26..a9393ca 100644 --- a/src/gacela_misc.scm +++ b/src/gacela_misc.scm @@ -15,12 +15,40 @@ ;;; along with this program. If not, see . + +;;; Additional modules + +(use-modules (srfi srfi-1)) + + +;;; Constants + +(define *pi* (* (asin 1) 2)) + + +;;; Functions + (define (nearest-power-of-two n) (define (power p n) (cond ((> (* p 2) n) p) (else (power (* p 2) n)))) (power 1 n)) +(define (degrees-to-radians angle) + (/ (* angle *pi*) 180)) + +(define (radians-to-degrees angle) + (/ (* angle 180) *pi*)) + (define-macro (pushnew elem list) `(cond ((not (find (lambda (e) (eq? e ,elem)) ,list)) (set! ,list (cons ,elem ,list))))) + +(define (assoc-multiple-set! alist . pairs) + (define (amset! alist pairs) + (cond ((< (length pairs) 2) + alist) + (else + (assoc-set! alist (car pairs) (cadr pairs)) + (amset! alist (cddr pairs))))) + (amset! alist pairs))