(use-modules (srfi srfi-1))
+;;; Constants
+
+(define *pi* (* (asin 1) 2))
+
+
+;;; Geometry
+
+(define (degrees-to-radians angle)
+ (/ (* angle *pi*) 180))
+
+(define (radians-to-degrees angle)
+ (/ (* angle 180) *pi*))
+
+(define (distance-between-points p1 p2)
+ (define (add-power-of-two p1 p2)
+ (cond ((null? p1)
+ 0)
+ (else
+ (+ (expt (- (car p1) (car p2)) 2)
+ (add-power-of-two (cdr p1) (cdr p2))))))
+
+ (cond ((not (= (length p1) (length p2)))
+ #f)
+ (else
+ (sqrt (add-power-of-two p1 p2)))))
+
+
;;; Functions
(define (nearest-power-of-two n)
(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))