From 5841889f53465b4096830f3778b209063e1fe8bc Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 27 Aug 2013 18:22:06 -0400 Subject: Replace old vector module with new vector2 module. --- 2d/vector.scm | 90 ----------------------------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 2d/vector.scm (limited to '2d/vector.scm') diff --git a/2d/vector.scm b/2d/vector.scm deleted file mode 100644 index c6817ec..0000000 --- a/2d/vector.scm +++ /dev/null @@ -1,90 +0,0 @@ -;;; guile-2d -;;; Copyright (C) 2013 David Thompson -;;; -;;; Guile-2d is free software: you can redistribute it and/or modify it -;;; under the terms of the GNU Lesser General Public License as -;;; published by the Free Software Foundation, either version 3 of the -;;; License, or (at your option) any later version. -;;; -;;; Guile-2d 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 -;;; Lesser General Public License for more details. -;;; -;;; You should have received a copy of the GNU Lesser General Public -;;; License along with this program. If not, see -;;; . - -;;; Commentary: -;; -;; Vector math operations. -;; -;;; Code: - -(define-module (2d vector) - #:use-module (rnrs base) - #:export (vx - vy - vz - v+ - v* - scale - mag - normalize - vector-reduce - vector-from-polar)) - -(define (vx vector) - "Returns the first element of a vector." - (vector-ref vector 0)) - -(define (vy vector) - "Returns the second element of a vector." - (vector-ref vector 1)) - -(define (vz vector) - "Returns the third element of a vector." - (vector-ref vector 2)) - -(define (v+ . vectors) - "Adds vectors." - (apply vector-map + vectors)) - -(define (v* . vectors) - "Multiplies vectors." - (apply vector-map * vectors)) - -(define (scale vector scalar) - "Multiplies a vector by a scalar." - (vector-map (lambda (e) (* scalar e)) vector)) - -(define (mag vector) - "Returns the magnitude of a vector." - (sqrt (vector-reduce + 0 (vector-map (lambda (e) (* e e)) vector)))) - -(define (normalize vector) - "Normalizes a vector." - (let ((m (mag vector))) - (vector-map (lambda (e) (/ e m)) vector))) - -(define (vector-reduce proc default vector) - "Performs a reduce operation on a vector." - (cond ((= (vector-length vector) 0) - default) - ((= (vector-length vector) 1) - (vector-ref vector 0)) - (else - (let loop ((i 2) - (prev (proc (vector-ref vector 0) - (vector-ref vector 1)))) - (if (= (vector-length vector) i) - prev - (loop (1+ i) (proc prev (vector-ref vector i)))))))) - -(define (vector-from-polar r theta) - "Converts polar coordinates into a cartesian vector." - (vector (* r (cos theta)) - (* r (sin theta)))) - -(re-export (vector-map . vector-map) - (vector-for-each . vector-for-each)) -- cgit v1.2.3