Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Polish off 'vec'

  • Loading branch information...
commit d52f3786d39bf569f1cb94c06b6241718ba18ed1 1 parent ea5e6a5
@dharmatech authored
Showing with 39 additions and 112 deletions.
  1. +39 −112 vec.sls
View
151 vec.sls
@@ -1,51 +1,23 @@
(library (box2d-lite vec)
- (export make-vec
-
- vec-x
- vec-y
-
- vec-x-set!
- vec-y-set!
-
- is-vec
- import-vec
-
- vec::set
- vec::length
- vec::abs
- vec::neg
-
- v+ v- v* v/
-
- v+n v*n
-
- n+v
- n-v
- n*v
-
- vec-dot
-
- vxv
+ (export make-vec is-vec import-vec
+
+ vec-x vec-x-set!
+ vec-y vec-y-set!
+
+ vec::set vec::length vec::abs vec::neg
- vxn
+ v+ v- v* v/ v+n v-n v*n v/n n+v n-v n*v n/v
- nxv
+ vec-dot vxv vxn nxv v-v)
- v-v
-
- )
-
- (import (rnrs)
- (box2d-lite util define-record-type))
+ (import (rnrs) (box2d-lite util define-record-type))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (define-record-type++ vec
- is-vec
- import-vec
-
+ (define-record-type++ vec is-vec import-vec
+
(fields (mutable x)
(mutable y))
@@ -74,110 +46,65 @@
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (define (v+ a b)
+ (define (v-op-v op)
+ (lambda (a b)
+ (is-vec a)
+ (is-vec b)
+ (make-vec (op a.x b.x)
+ (op a.y b.y))))
- (is-vec a)
- (is-vec b)
-
- (make-vec (+ a.x b.x)
- (+ a.y b.y)))
-
- (define (v- a b)
-
- (is-vec a)
- (is-vec b)
-
- (make-vec (- a.x b.x)
- (- a.y b.y)))
-
- (define (v* a b)
-
- (is-vec a)
- (is-vec b)
-
- (make-vec (* a.x b.x)
- (* a.y b.y)))
-
- (define (v/ a b)
-
- (is-vec a)
- (is-vec b)
-
- (make-vec (/ a.x b.x)
- (/ a.y b.y)))
+ (define v+ (v-op-v +))
+ (define v- (v-op-v -))
+ (define v* (v-op-v *))
+ (define v/ (v-op-v /))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (define (v+n v n)
-
- (is-vec v)
-
- (make-vec (+ v.x n)
- (+ v.y n)))
+ (define (v-op-n op)
+ (lambda (v n)
+ (is-vec v)
+ (make-vec (op v.x n)
+ (op v.y n))))
- (define (n*v n v)
-
- (is-vec v)
-
- (make-vec (* n v.x)
- (* n v.y)))
-
- (define (v*n v n)
-
- (is-vec v)
-
- (make-vec (* n v.x)
- (* n v.y)))
+ (define v+n (v-op-n +))
+ (define v-n (v-op-n -))
+ (define v*n (v-op-n *))
+ (define v/n (v-op-n /))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (define (n+v n v)
-
- (is-vec v)
+ (define (n-op-v op)
+ (lambda (n v)
+ (is-vec v)
+ (make-vec (op n v.x)
+ (op n v.y))))
- (make-vec (+ n v.x)
- (+ n v.y)))
-
- (define (n-v n v)
-
- (is-vec v)
-
- (make-vec (- n v.x)
- (- n v.y)))
+ (define n+v (n-op-v +))
+ (define n-v (n-op-v -))
+ (define n*v (n-op-v *))
+ (define n/v (n-op-v /))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
-
(define (vec-dot a b)
-
(is-vec a)
(is-vec b)
-
(+ (* a.x b.x)
(* a.y b.y)))
(define (vxv a b)
-
(is-vec a)
(is-vec b)
-
(- (* a.x b.y)
(* a.y b.x)))
(define (vxn v n)
-
(is-vec v)
-
(make-vec (* n v.y)
(* (- n) v.x)))
(define (nxv n v)
-
(is-vec v)
-
(make-vec (* (- n) v.y)
(* n v.x)))
Please sign in to comment.
Something went wrong with that request. Please try again.